diff --git a/.aiignore b/.aiignore new file mode 100644 index 0000000..a53c1b1 --- /dev/null +++ b/.aiignore @@ -0,0 +1,176 @@ +# An .aiignore file follows the same syntax as a .gitignore file. +# .gitignore documentation: https://git-scm.com/docs/gitignore + +# Secrets and environment +.env +.env.* +.envrc +*.key +*.pem +*.p12 +*.pfx +*.crt +*.cert +*.der +*.pub +*.gpg +*.asc +*_credentials.* +*credentials*.json +secrets.* +secret.* +id_rsa* +id_dsa* +ssh_config +.gnupg/ + +# Brand- and env-specific configs +envs/ +config/ +config/*.local.* +*.local.* +*.dev.* +*.prod.* +*.staging.* + + +# Node.js +node_modules/ +npm-debug.log* +package-lock.json +.pnpm-store/ +.pnp.* +.yarn/* +.yarn-cache/ +.yarnrc* +.yarn/* +.cache/ +.npm/ +.nvmrc + +# Logs and runtime artifacts +logs/ +*.log +*.pid +*.seed +*.pid.lock +tmp/ +temp/ +.cache/ +coverage/ +.nyc_output/ +dist/ +build/ +out/ +.tsbuildinfo + +# Bundled/static artifacts +public/ +dashboard/ +static/ +assets/build/ +*.min.js +*.map + +# Test outputs +junit.xml +test-results/ +reports/ +coverage-final.json +lcov.info + +# IDE/editor configs +.idea/ +.vscode/ +*.iml +*.ipr +*.iws +*.swp +*.swo +.DS_Store +Thumbs.db + +# OS / tooling +*.bak +*.tmp +*.orig +*.patch +*.tar +*.tar.* +*.zip +*.7z +*.gz +*.bz2 + +# PHP / Composer +vendor/ +composer.lock +phpunit.xml +phpunit.xml.dist +.cache/phpunit/* +.phpunit.result.cache + +# WordPress-specific +wp-config.php +wp-content/uploads/ +wp-content/cache/ +wp-content/upgrade/ +wp-content/backups-*/ +wp-content/advanced-cache.php +wp-content/object-cache.php +wp-content/debug.log + +# Docker / containers +docker-compose*.yml +Dockerfile* +.dockerignore +.docker/ +docker/ +compose/ +*.env.docker +.env.docker* + +# CI/CD tokens and artifacts +.github/ +.gitlab/ +.gitlab-ci.yml +.github/workflows/ +*.pem.enc +*.secret +*.token +*.vault +*.vault.json + +# Sentry / telemetry +.sentryclirc +.sentry-* +.sentry/* + +# Swagger/OpenAPI generated artifacts +swagger-definitions/*.yml +swagger-definitions/**/*.yml + +# Database dumps +*.sql +*.sqlite +*.sqlite3 +dump/ +backups/ + +# Screenshots and media +screenshot-service/**/*.png +screenshot-service/**/*.jpg +screenshot-service/**/*.jpeg +*.png +*.jpg +*.jpeg +*.gif +*.mp4 +*.mov + +# Project-specific services +plugin-provisioner-service/.env* +screenshot-service/.env* +wp-cloud-migrator/.env* +wp-migrator/.env* +wp-update-manager/.env* diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 87efc33..e78598f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - php-version: ['7.4', '8.0', '8.1', '8.2', '8.3'] + php-version: ['8.0', '8.1', '8.2', '8.3', '8.4', '8.5'] steps: - name: Checkout code @@ -46,7 +46,7 @@ jobs: - name: Install PHPCS and WordPress Coding Standards run: | composer require --dev squizlabs/php_codesniffer wp-coding-standards/wpcs --no-interaction - vendor/bin/phpcs --config-set installed_paths vendor/wp-coding-standards/wpcs + vendor/bin/phpcs --config-set installed_paths vendor/wp-coding-standards/wpcs,vendor/phpcsstandards/phpcsutils,vendor/phpcsstandards/phpcsextra - name: Run PHPCS run: vendor/bin/phpcs @@ -72,14 +72,17 @@ jobs: - name: Configure npm authentication working-directory: frontend run: | - echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc - env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + echo "//registry.npmjs.org/:_authToken=${{ secrets.DOGADO_TOKEN }}" > .npmrc + echo "always-auth=true" >> .npmrc - name: Install dependencies working-directory: frontend run: npm ci + - name: Verify @dogado/gravity installation + working-directory: frontend + run: npm list @dogado/gravity + - name: Run ESLint working-directory: frontend run: npm run lint @@ -123,9 +126,8 @@ jobs: - name: Configure npm authentication working-directory: frontend run: | - echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc - env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + echo "//registry.npmjs.org/:_authToken=${{ secrets.DOGADO_TOKEN }}" > .npmrc + echo "always-auth=true" >> .npmrc - name: Install dependencies working-directory: frontend @@ -169,12 +171,12 @@ jobs: php-version: '8.2' tools: composer:v2 + - name: Configure npm authentication working-directory: frontend run: | - echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc - env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + echo "//registry.npmjs.org/:_authToken=${{ secrets.DOGADO_TOKEN }}" > .npmrc + echo "always-auth=true" >> .npmrc - name: Install dependencies run: | @@ -229,12 +231,12 @@ jobs: php-version: '8.2' tools: composer:v2 + - name: Configure npm authentication working-directory: frontend run: | - echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc - env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + echo "//registry.npmjs.org/:_authToken=${{ secrets.DOGADO_TOKEN }}" > .npmrc + echo "always-auth=true" >> .npmrc - name: Install dependencies and build run: | diff --git a/.gitignore b/.gitignore index 399c51c..022d6ae 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ Thumbs.db # Build artifacts frontend/build/ frontend/standalone/ +assets/min-css/ # CI/CD .phpcs-cache diff --git a/assets/min-css/marketplace.min.css b/assets/min-css/marketplace.min.css deleted file mode 100644 index 057870b..0000000 --- a/assets/min-css/marketplace.min.css +++ /dev/null @@ -1 +0,0 @@ -body.one-com_page_onecom-marketplace{background:#f7f7f7}.one-com_page_one-com_page_onecom-marketplace-products #wpcontent,.one-com_page_onecom-marketplace #wpcontent{padding:0}.gv-activated img.gv-icon-tile{width:48px;background:#fff;border-radius:8px;box-shadow:0 2px 8px rgba(20,20,20,.15);padding:8px}.gv-activated .marketplace-container .gv-product-header.gv-product-banner{display:flex;align-items:stretch;justify-content:space-between;background:var(--color-surface-toned);position:relative;overflow:hidden;border-radius:6px;border-color:#e2e2e2;max-height:320px}.gv-activated .marketplace-container .gv-product-header.gv-area-header{max-height:456px;border-color:#e2e2e2}.gv-product-banner .gv-left-banner img,.gv-product-banner .gv-right-banner img{width:100%;height:100%;max-height:320px;display:block;object-fit:cover}.gv-product-banner .gv-banner-content{flex:1;padding:0 1rem}#marketplace-root .gv-activated{max-width:1440px;margin:auto}.buttons-min-width{min-width:312px}#marketplace-root .gv-activated .gv-features-table.gv-product-table.gv-recommended-2 .gv-product:nth-child(2):before,#marketplace-root.gv-activated .gv-features-table.gv-product-table.gv-recommended-2 .gv-cell:nth-child(2):before{width:auto}#marketplace-root .gv-activated .gv-features-table.gv-product-table .gv-section .gv-table-row:last-child .gv-cell{border-bottom-width:1px!important}#marketplace-addons-root .gv-activated .gv-data-table .gv-icon-tile{max-width:unset}.gv-activated .gv-skeleton-loader .gv-icon-tile{height:48px;width:48px}.gv-activated .gv-addons-table{overflow:visible}.gv-activated .ocmp-plugin-cards{max-width:378px}@media (max-width:1024px){.gv-product-banner .gv-left-banner{display:none}.gv-activated .marketplace-container.gv-layout-product{gap:24px}.gv-activated .gv-addons-table{overflow-y:visible;overflow-x:auto}}@media (max-width:600px){.gv-activated .marketplace-container .gv-product-header.gv-product-banner{max-height:320px}#marketplace-root .gv-activated .marketplace-container .gv-product-header.gv-product-banner .gv-content.gv-banner-content{flex:0 0 50%;padding:16px}#marketplace-root .gv-activated .marketplace-container .gv-carousel-slide .gv-product-header.gv-area-header .gv-content{padding:16px}#marketplace-root .gv-activated .marketplace-container .gv-carousel-slide .gv-product-header.gv-area-header .gv-content h5{margin-bottom:8px}.gv-activated .gv-recommended-heading{font-size:24px;font-weight:700}.gv-activated .gv-addons-table{overflow-x:auto}}@media (max-width:768px){.gv-activated .marketplace-container .gv-product-header.gv-product-banner{max-height:320px}#marketplace-root .gv-activated .marketplace-container .gv-product-header .gv-content.gv-banner-content{flex:0 0 59%}#marketplace-root .gv-activated .gv-carousel-header{margin-top:10px}#marketplace-root .gv-activated .marketplace-container .gv-carousel-slide .gv-product-header.gv-area-header .gv-content{flex:0 0 50%}#marketplace-root .gv-activated .gv-product-single header.gv-product-header.gv-area-header{flex-direction:column;align-items:unset}#marketplace-root .gv-activated .gv-layout-product:not(.gv-product-single) .gv-product-header .gv-image{overflow:hidden;min-height:auto}#marketplace-root .gv-activated .gv-layout-product.gv-product-single .gv-product-header .gv-image picture{align-items:initial;display:block;height:auto;flex-wrap:initial}#marketplace-root .gv-activated .gv-layout-product.gv-product-single .gv-product-header .gv-image img{height:auto;max-width:480px;width:100%}.gv-activated .gv-addons-table{overflow-x:auto}}@media (min-width:1025px){.gv-activated .marketplace-container .gv-product-header.gv-product-banner{display:flex;align-items:center;justify-content:space-between;gap:0;max-width:100%}.gv-product-banner .gv-left-banner{flex:0 0 auto;max-width:25%;min-width:200px;transform:translate(-84px,6px)}.gv-product-banner .gv-right-banner{flex:0 0 auto;max-width:45%;min-width:250px;margin-top:50px;transform:translate(13px,22px)}.gv-product-banner .gv-banner-content{flex:1 1 auto;min-width:250px;padding:2rem 3rem}.gv-product-banner .gv-left-banner img,.gv-product-banner .gv-right-banner img{width:100%;height:100%;max-height:320px;display:block;object-fit:cover}#marketplace-root .gv-activated .marketplace-container .gv-carousel-slide .gv-product-header.gv-area-header .gv-content{flex:0 0 59%}#marketplace-root .gv-activated .marketplace-container .gv-carousel-slide .gv-product-header.gv-area-header{align-items:flex-start}}@media (min-width:769px) and (max-width:1024px){#marketplace-root .gv-activated .marketplace-container .gv-carousel-slide .gv-product-header.gv-area-header .gv-content{flex:0 0 44%}}@media (min-width:1025px) and (max-width:1280px){#marketplace-root .gv-activated .marketplace-container .gv-product-header.gv-product-banner .gv-content{margin-left:48px}}@media (min-width:1350px){.gv-activated .ocmp-plugin-cards .gv-desk-span-8{width:226px}} \ No newline at end of file diff --git a/backend/src/Controllers/MarketplaceController.php b/backend/src/Controllers/MarketplaceController.php index fc902ca..d23c3d2 100644 --- a/backend/src/Controllers/MarketplaceController.php +++ b/backend/src/Controllers/MarketplaceController.php @@ -1,19 +1,52 @@ config = wp_parse_args( $config, [ - 'parent_menu_slug' => 'options-general.php', - 'page_title' => __( 'Plugin Marketplace', 'text-domain' ), - 'menu_title' => __( 'Marketplace', 'text-domain' ), - 'menu_slug' => 'plugin-marketplace', - 'api_url' => '', // default to empty, React can decide - 'brand' => '', // optional brand identifier for marketplace API - 'css_url' => '', // optional additional CSS - 'css_handle' => 'marketplace-frontend-style', - 'assets_path' => '', // Optional: explicit path to package root containing frontend/ directory - 'payload' => [], // Optional: key-value array passed as headers for API authentication - ] ); + $this->config = wp_parse_args( + $config, + [ + 'parent_menu_slug' => 'options-general.php', + 'page_title' => __( 'Plugin Marketplace', 'text-domain' ), + 'menu_title' => __( 'Marketplace', 'text-domain' ), + 'menu_slug' => 'plugin-marketplace', + 'api_url' => '', // default to empty, React can decide + 'brand' => '', // optional brand identifier for marketplace API + 'css_url' => '', // optional additional CSS + 'css_handle' => 'marketplace-frontend-style', + 'assets_path' => '', // Optional: explicit path to package root containing frontend/ directory + 'payload' => [], // Optional: key-value array passed as headers for API authentication + ] + ); // Defer model and asset initialization until needed (optimization for multi-plugin installs) $this->model = null; @@ -130,9 +171,9 @@ protected function find_package_root_via_composer() { } /** - * Convert filesystem path to URL + * Convert filesystem path to URL. * - * @param string $path Absolute filesystem path + * @param string $path Absolute filesystem path. * @return string URL */ protected function convert_path_to_url( $path ) { @@ -170,14 +211,17 @@ public function init() { add_action( 'wp_ajax_marketplace_deactivate_plugin', [ $this, 'ajax_deactivate_plugin' ] ); add_action( 'wp_ajax_marketplace_delete_plugin', [ $this, 'ajax_delete_plugin' ] ); - //reset transient for marketplace catalog - add_action('upgrader_process_complete', [$this, 'reset_transient_on_core_update'], 10, 2); - add_action('update_option_WPLANG', [$this, 'reset_transient_on_locale_change'], 999, 0); + // reset transient for marketplace catalog + add_action( 'upgrader_process_complete', [ $this, 'reset_transient_on_core_update' ], 10, 2 ); + add_action( 'update_option_WPLANG', [ $this, 'reset_transient_on_locale_change' ], 999, 0 ); } add_action( 'rest_api_init', [ $this, 'register_rest_routes' ] ); } + /** + * Register marketplace admin menu page. + */ public function register_menu() { add_submenu_page( $this->config['parent_menu_slug'], @@ -191,12 +235,11 @@ public function register_menu() { /** * Register addons admin menu page with configurable slug. - * */ public function register_addons_menu() { - $menu_slug = $this->config['addons_menu_slug']?: 'onecom-marketplace-products'; - $page_title = $this->config['addons_page_title'] ?: __( 'Marketplace Products', '' ); - $menu_title = $this->config['addons_menu_title'] ?: __( 'Your add-ons', '' ); + $menu_slug = $this->config['addons_menu_slug'] ?: 'onecom-marketplace-products'; + $page_title = $this->config['addons_page_title'] ?: __( 'Marketplace Products', 'onecom-wp' ); + $menu_title = $this->config['addons_menu_title'] ?: __( 'Your add-ons', 'onecom-wp' ); $parent_menu_slug = $this->config['parent_menu_slug']; add_submenu_page( @@ -209,8 +252,12 @@ public function register_addons_menu() { ); } + /** + * Render the addons admin page. + */ public function render_addons_page() { - // Lazy-load assets only when this page is actually rendered (optimization) + $wp_version = get_bloginfo( 'version' ); + // Lazy-load assets only when this page is actually rendered (optimization). $this->ensure_assets_resolved(); $base_path = $this->assets_base_path; @@ -282,7 +329,7 @@ public function render_addons_page() { 'wp_user' => $wp_user, // Hashed 'wp_admin_email' => $wp_admin_email, // Hashed 'wp_role' => $wp_role, - 'user_agent' => isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : '', + 'user_agent' => isset( $_SERVER['HTTP_USER_AGENT'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) : '', 'user_id' => $user_id, ]; @@ -324,21 +371,21 @@ public function render_addons_page() { 'activePlugins' => $active_plugins, 'activeThemeAuthor' => $active_theme_author, 'data_consent_status' => $data_consent_status, - 'labels'=>array( - 'install' => __('Install', 'onecom-wp'), - 'installing' => __('Installing', 'onecom-wp'), - 'activate' => __('Activate', 'onecom-wp'), - 'deactivate' => __('Deactivate', 'onecom-wp'), - 'activating' => __('Activating', 'onecom-wp'), - 'deactivating' => __('Deactivating', 'onecom-wp'), - 'download' => __('Download', 'onecom-wp'), - 'downloading' => __('Downloading...', 'onecom-wp'), - 'learnMore' => __('Learn more', 'onecom-wp'), - 'all' => __('All', 'onecom-wp'), - 'recommendedPlugins' => __('Recommended plugins', 'onecom-wp'), - 'discouraged' => __('Discouraged plugins', 'onecom-wp'), - 'moreDetails' => __('More details', 'onecom-wp'), - ), + 'labels' => [ + 'install' => __( 'Install', 'onecom-wp' ), + 'installing' => __( 'Installing', 'onecom-wp' ), + 'activate' => __( 'Activate', 'onecom-wp' ), + 'deactivate' => __( 'Deactivate', 'onecom-wp' ), + 'activating' => __( 'Activating', 'onecom-wp' ), + 'deactivating' => __( 'Deactivating', 'onecom-wp' ), + 'download' => __( 'Download', 'onecom-wp' ), + 'downloading' => __( 'Downloading...', 'onecom-wp' ), + 'learnMore' => __( 'Learn more', 'onecom-wp' ), + 'all' => __( 'All', 'onecom-wp' ), + 'recommendedPlugins' => __( 'Recommended plugins', 'onecom-wp' ), + 'discouraged' => __( 'Discouraged plugins', 'onecom-wp' ), + 'moreDetails' => __( 'More details', 'onecom-wp' ), + ], // Always send mixpanel config so it can be used when consent is granted dynamically 'mixpanel' => [ 'token' => $mixpanel_token, @@ -426,7 +473,7 @@ public function render_admin_page() { 'wp_user' => $wp_user, // Hashed 'wp_admin_email' => $wp_admin_email, // Hashed 'wp_role' => $wp_role, - 'user_agent' => isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : '', + 'user_agent' => isset( $_SERVER['HTTP_USER_AGENT'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) : '', 'user_id' => $user_id, ]; @@ -440,59 +487,59 @@ public function render_admin_page() { unset( $global_properties['is_sandbox'] ); } - // Get distinct_id from config if provided - $distinct_id = ! empty( $this->config['mixp_distinct_id'] ) ? $this->config['mixp_distinct_id'] : ''; - - // Get data consent status from config - $data_consent_status = ! empty( $this->config['data_consent_status'] ) ? $this->config['data_consent_status'] : false; - - // Get Mixpanel token - $mixpanel_token = $this->get_mixpanel_token(); - - // Build base localized config - $localized_config = [ - 'apiBaseUrl' => trailingslashit( rest_url( 'marketplace/v1/plugins' ) ), - 'apiUrl' => $this->config['api_url'], - 'locale' => $locale, - 'brand' => $this->config['brand'], - 'useWPHandlers' => true, - 'wpConfig' => [ - 'ajaxUrl' => admin_url( 'admin-ajax.php' ), - 'adminUrl' => admin_url(), - 'nonce' => wp_create_nonce( 'marketplace_nonce' ), - 'rankMathRegistrationSkip' => (bool) ( ! empty( get_option( 'rank_math_registration_skip' ) ) && ( get_option( 'rank_math_registration_skip' ) === '1' || get_option( 'rank_math_registration_skip' ) === true ) ), - ], - 'enableDefaultStyles' => empty( $this->config['custom_css'] ), - 'assetsBaseUrl' => $base_url, - 'wpVersion' => $wp_version, - 'activePlugins' => $active_plugins, - 'activeThemeAuthor' => $active_theme_author, - 'data_consent_status' => $data_consent_status, - 'labels'=>array( - 'install' => __('Install', 'onecom-wp'), - 'installing' => __('Installing', 'onecom-wp'), - 'activate' => __('Activate', 'onecom-wp'), - 'deactivate' => __('Deactivate', 'onecom-wp'), - 'activating' => __('Activating', 'onecom-wp'), - 'deactivating' => __('Deactivating', 'onecom-wp'), - 'download' => __('Download', 'onecom-wp'), - 'downloading' => __('Downloading...', 'onecom-wp'), - 'learnMore' => __('Learn more', 'onecom-wp'), - 'all' => __('All', 'onecom-wp'), - 'recommendedPlugins' => __('Recommended plugins', 'onecom-wp'), - 'discouraged' => __('Discouraged plugins', 'onecom-wp'), - 'moreDetails' => __('More details', 'onecom-wp'), - ), - // Always send mixpanel config so it can be used when consent is granted dynamically - 'mixpanel' => [ - 'token' => $mixpanel_token, - 'globalProperties' => $global_properties, - 'distinctId' => $distinct_id, - ], - ]; - - // Localize JS with config - wp_localize_script( 'marketplace-frontend', 'marketplaceConfig', $localized_config ); + // Get distinct_id from config if provided + $distinct_id = ! empty( $this->config['mixp_distinct_id'] ) ? $this->config['mixp_distinct_id'] : ''; + + // Get data consent status from config + $data_consent_status = ! empty( $this->config['data_consent_status'] ) ? $this->config['data_consent_status'] : false; + + // Get Mixpanel token + $mixpanel_token = $this->get_mixpanel_token(); + + // Build base localized config + $localized_config = [ + 'apiBaseUrl' => trailingslashit( rest_url( 'marketplace/v1/plugins' ) ), + 'apiUrl' => $this->config['api_url'], + 'locale' => $locale, + 'brand' => $this->config['brand'], + 'useWPHandlers' => true, + 'wpConfig' => [ + 'ajaxUrl' => admin_url( 'admin-ajax.php' ), + 'adminUrl' => admin_url(), + 'nonce' => wp_create_nonce( 'marketplace_nonce' ), + 'rankMathRegistrationSkip' => (bool) ( ! empty( get_option( 'rank_math_registration_skip' ) ) && ( get_option( 'rank_math_registration_skip' ) === '1' || get_option( 'rank_math_registration_skip' ) === true ) ), + ], + 'enableDefaultStyles' => empty( $this->config['custom_css'] ), + 'assetsBaseUrl' => $base_url, + 'wpVersion' => $wp_version, + 'activePlugins' => $active_plugins, + 'activeThemeAuthor' => $active_theme_author, + 'data_consent_status' => $data_consent_status, + 'labels' => [ + 'install' => __( 'Install', 'onecom-wp' ), + 'installing' => __( 'Installing', 'onecom-wp' ), + 'activate' => __( 'Activate', 'onecom-wp' ), + 'deactivate' => __( 'Deactivate', 'onecom-wp' ), + 'activating' => __( 'Activating', 'onecom-wp' ), + 'deactivating' => __( 'Deactivating', 'onecom-wp' ), + 'download' => __( 'Download', 'onecom-wp' ), + 'downloading' => __( 'Downloading...', 'onecom-wp' ), + 'learnMore' => __( 'Learn more', 'onecom-wp' ), + 'all' => __( 'All', 'onecom-wp' ), + 'recommendedPlugins' => __( 'Recommended plugins', 'onecom-wp' ), + 'discouraged' => __( 'Discouraged plugins', 'onecom-wp' ), + 'moreDetails' => __( 'More details', 'onecom-wp' ), + ], + // Always send mixpanel config so it can be used when consent is granted dynamically + 'mixpanel' => [ + 'token' => $mixpanel_token, + 'globalProperties' => $global_properties, + 'distinctId' => $distinct_id, + ], + ]; + + // Localize JS with config + wp_localize_script( 'marketplace-frontend', 'marketplaceConfig', $localized_config ); echo '
'; } @@ -510,24 +557,47 @@ protected function get_mixpanel_token(): string { return $token; } + /** + * Register REST API routes. + */ public function register_rest_routes() { - register_rest_route( 'marketplace/v1', '/plugins', [ - 'methods' => 'GET', - 'callback' => [ $this, 'get_plugins' ], - 'permission_callback' => '__return_true', - ] ); - - register_rest_route( 'marketplace/v1', '/plugins/active/(?P[a-zA-Z0-9-_]+)', [ - 'methods' => 'GET', - 'callback' => [ $this, 'check_plugin_activation' ], - 'permission_callback' => '__return_true', - ] ); + register_rest_route( + 'marketplace/v1', + '/plugins', + [ + 'methods' => 'GET', + 'callback' => [ $this, 'get_plugins' ], + 'permission_callback' => '__return_true', + ] + ); + + register_rest_route( + 'marketplace/v1', + '/plugins/active/(?P[a-zA-Z0-9-_]+)', + [ + 'methods' => 'GET', + 'callback' => [ $this, 'check_plugin_activation' ], + 'permission_callback' => '__return_true', + ] + ); } + /** + * Check if a plugin is activated. + * + * @param \WP_REST_Request $request The REST request object. + * @return WP_REST_Response The REST response object. + */ public function check_plugin_activation( $request ) { $slug = $request->get_param( 'slug' ); if ( empty( $slug ) ) { - return new WP_REST_Response( [ 'activated' => false, 'error' => 'Missing slug' ], 400 ); + return new WP_REST_Response( + [ + 'activated' => false, + 'error' => 'Missing slug', + ], + 400 + ); } require_once ABSPATH . 'wp-admin/includes/plugin.php'; @@ -535,13 +605,21 @@ public function check_plugin_activation( $request ) { $activated = ( ! empty( $plugin_file ) && function_exists( 'is_plugin_active' ) ) ? is_plugin_active( $plugin_file ) : false; - return new WP_REST_Response( [ - 'slug' => $slug, - 'activated' => $activated, - ], 200 ); + return new WP_REST_Response( + [ + 'slug' => $slug, + 'activated' => $activated, + ], + 200 + ); } - + /** + * Get plugins from the catalog. + * + * @param \WP_REST_Request $request The REST request object. + * @return WP_REST_Response The REST response object. + */ public function get_plugins( $request ) { $brand_name = $this->config['brand']; @@ -553,7 +631,7 @@ public function get_plugins( $request ) { ! empty( $marketplace_catalog['success'] ) && isset( $marketplace_catalog['data']['catalog'] ) && is_array( $marketplace_catalog['data']['catalog'] ) - ){ + ) { error_log( 'Using cached marketplace catalog' ); $plugins = $marketplace_catalog; $is_cached = true; @@ -570,7 +648,7 @@ public function get_plugins( $request ) { ! empty( $plugins['success'] ) && isset( $plugins['data']['catalog'] ) && is_array( $plugins['data']['catalog'] ) - ){ + ) { error_log( 'Caching marketplace catalog' ); set_site_transient( $transient_name, $plugins, 15 * MINUTE_IN_SECONDS ); } else { @@ -581,7 +659,7 @@ public function get_plugins( $request ) { } // Attach WP state (installed/activated) for both legacy and new shapes - $add_state = function( $plugin ) { + $add_state = function ( $plugin ) { if ( empty( $plugin['slug'] ) ) { return $plugin; } @@ -608,23 +686,23 @@ public function get_plugins( $request ) { if ( empty( $section['items'] ) || ! is_array( $section['items'] ) ) { continue; } - $plugins['data']['sections'][$si]['items'] = array_map( $add_state, $section['items'] ); + $plugins['data']['sections'][ $si ]['items'] = array_map( $add_state, $section['items'] ); } } elseif ( ! empty( $plugins['sections'] ) && is_array( $plugins['sections'] ) ) { foreach ( $plugins['sections'] as $si => $section ) { if ( empty( $section['items'] ) || ! is_array( $section['items'] ) ) { continue; } - $plugins['sections'][$si]['items'] = array_map( $add_state, $section['items'] ); + $plugins['sections'][ $si ]['items'] = array_map( $add_state, $section['items'] ); } - } elseif ( ! empty( $plugins['data']['ui_json'] ) && is_array( $plugins['data']['ui_json'] ) ) { - $plugins['data']['ui_json'] = array_map( $add_state, $plugins['data']['ui_json'] ); - } + } elseif ( ! empty( $plugins['data']['ui_json'] ) && is_array( $plugins['data']['ui_json'] ) ) { + $plugins['data']['ui_json'] = array_map( $add_state, $plugins['data']['ui_json'] ); + } - // Add is_cached flag to response - $plugins['is_cached'] = $is_cached; + // Add is_cached flag to response + $plugins['is_cached'] = $is_cached; - return new WP_REST_Response( $plugins, 200 ); + return new WP_REST_Response( $plugins, 200 ); } /** @@ -634,12 +712,11 @@ public function ajax_install_plugin() { check_ajax_referer( 'marketplace_nonce', 'nonce' ); if ( ! current_user_can( 'install_plugins' ) ) { - wp_send_json_error([ 'message' => __( 'Permission denied', 'onecom-wp' ) ]); + wp_send_json_error( [ 'message' => __( 'Permission denied', 'onecom-wp' ) ] ); } - - $slug = sanitize_text_field( $_REQUEST['slug'] ?? '' ); - $download_url = esc_url_raw( $_REQUEST['download_url'] ?? '' ); + $slug = sanitize_text_field( wp_unslash( $_REQUEST['slug'] ?? '' ) ); + $download_url = esc_url_raw( wp_unslash( $_REQUEST['download_url'] ?? '' ) ); if ( empty( $slug ) || empty( $download_url ) ) { wp_send_json_error( [ 'message' => __( 'Invalid plugin data.', 'text-domain' ) ] ); @@ -648,7 +725,7 @@ public function ajax_install_plugin() { require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; $upgrader = new \Plugin_Upgrader( new \Automatic_Upgrader_Skin() ); - $result = $upgrader->install( $download_url ); // use URL from React + $result = $upgrader->install( $download_url ); // use URL from React if ( is_wp_error( $result ) ) { wp_send_json_error( [ 'message' => $result->get_error_message() ] ); @@ -664,11 +741,13 @@ public function ajax_install_plugin() { wp_send_json_error( [ 'message' => __( 'Plugin installation failed. The plugin was not found after installation.', 'onecom-wp' ) ] ); } - wp_send_json_success([ - 'message' => __( 'Plugin installed successfully', 'onecom-wp' ), - 'installed' => true, - 'activated' => false, - ]); + wp_send_json_success( + [ + 'message' => __( 'Plugin installed successfully', 'onecom-wp' ), + 'installed' => true, + 'activated' => false, + ] + ); } /** @@ -809,7 +888,7 @@ private function is_installed( $slug = '' ): bool { * but installed as "seo-by-rank-math-pro/rank-math-pro.php"), the function will scan installed * plugins to find matches based on the main plugin file name. * - * @param string $slug + * @param string $slug The plugin slug. * @return string Plugin file path relative to plugins dir, or empty string if not found. */ private function resolve_plugin_file_by_slug( $slug ): string { @@ -825,7 +904,7 @@ private function resolve_plugin_file_by_slug( $slug ): string { if ( isset( $plugins[ $slug ] ) ) { return $slug; } - // Also try trimming any leading slashes just in case + // Also try trimming any leading slashes just in case. $trimmed = ltrim( $slug, '/' ); if ( isset( $plugins[ $trimmed ] ) ) { return $trimmed; @@ -839,27 +918,27 @@ private function resolve_plugin_file_by_slug( $slug ): string { } } - // Fallback: scan installed plugins for partial matches + // Fallback: scan installed plugins for partial matches. // This handles cases like: - // 1. slug "rank-math-pro" matching "seo-by-rank-math-pro/rank-math-pro.php" (file name) + // 1. slug "rank-math-pro" matching "seo-by-rank-math-pro/rank-math-pro.php" (file name). foreach ( $plugins as $file => $data ) { $parts = explode( '/', $file ); if ( count( $parts ) === 2 ) { $directory = $parts[0]; $main_file = $parts[1]; - // Check if directory exactly matches the slug + // Check if directory exactly matches the slug. if ( $directory === $slug ) { return $file; } - // Check if the main plugin file name matches the slug + // Check if the main plugin file name matches the slug. $file_slug = str_replace( '.php', '', $main_file ); if ( $file_slug === $slug ) { return $file; } } elseif ( count( $parts ) === 1 ) { - // Single file plugin + // Single file plugin. $file_slug = str_replace( '.php', '', $parts[0] ); if ( $file_slug === $slug ) { return $file; @@ -870,6 +949,9 @@ private function resolve_plugin_file_by_slug( $slug ): string { return ''; } + /** + * Activate plugin via AJAX. + */ public function ajax_activate_plugin() { if ( ! current_user_can( 'activate_plugins' ) ) { wp_send_json_error( [ 'message' => __( 'You do not have permission to activate plugins.', 'text-domain' ) ] ); @@ -883,12 +965,12 @@ public function ajax_activate_plugin() { wp_send_json_error( [ 'message' => __( 'Missing plugin slug.', 'text-domain' ) ] ); } - // Check if plugin is installed first + // Check if plugin is installed first. if ( ! $this->is_installed( $slug ) ) { wp_send_json_error( [ 'message' => __( 'Plugin not installed.', 'text-domain' ) ] ); } - // Resolve the plugin file using the enhanced helper function + // Resolve the plugin file using the enhanced helper function. require_once ABSPATH . 'wp-admin/includes/plugin.php'; $plugin_file = $this->resolve_plugin_file_by_slug( $slug ); @@ -897,7 +979,7 @@ public function ajax_activate_plugin() { } if ( $plugin_file === 'seo-by-rank-math-pro/rank-math-pro.php' ) { - // Also activate the Free version if it's installed and not active + // Also activate the Free version if it's installed and not active. $free_plugin_file = 'seo-by-rank-math/rank-math.php'; if ( $this->is_installed( 'seo-by-rank-math' ) && ! is_plugin_active( $free_plugin_file ) ) { activate_plugin( $free_plugin_file ); @@ -910,28 +992,33 @@ public function ajax_activate_plugin() { wp_send_json_error( [ 'message' => $result->get_error_message() ] ); } - wp_send_json_success( [ - 'installed' => true, - 'activated' => true, - 'message' => __( 'Plugin activated successfully.', 'text-domain' ), - ] ); + wp_send_json_success( + [ + 'installed' => true, + 'activated' => true, + 'message' => __( 'Plugin activated successfully.', 'text-domain' ), + ] + ); } + /** + * Deactivate plugin via AJAX. + */ public function ajax_deactivate_plugin() { check_ajax_referer( 'marketplace_nonce', 'nonce' ); if ( ! current_user_can( 'activate_plugins' ) ) { - wp_send_json_error([ 'message' => __( 'Permission denied', 'onecom-wp' ) ]); + wp_send_json_error( [ 'message' => __( 'Permission denied', 'onecom-wp' ) ] ); } - $slug = sanitize_text_field( $_REQUEST['slug'] ?? '' ); + $slug = sanitize_text_field( wp_unslash( $_REQUEST['slug'] ?? '' ) ); if ( empty( $slug ) ) { - wp_send_json_error([ 'message' => __( 'Invalid plugin slug', 'onecom-wp' ) ]); + wp_send_json_error( [ 'message' => __( 'Invalid plugin slug', 'onecom-wp' ) ] ); } // Check if plugin is installed first if ( ! $this->is_installed( $slug ) ) { - wp_send_json_error([ 'message' => __( 'Plugin not installed', 'onecom-wp' ) ]); + wp_send_json_error( [ 'message' => __( 'Plugin not installed', 'onecom-wp' ) ] ); } // Resolve the plugin file using the enhanced helper function @@ -946,7 +1033,7 @@ public function ajax_deactivate_plugin() { } if ( empty( $plugin_file ) ) { - wp_send_json_error([ 'message' => __( 'Plugin file not found', 'onecom-wp' ) ]); + wp_send_json_error( [ 'message' => __( 'Plugin file not found', 'onecom-wp' ) ] ); } // Ensure the plugin is loaded so its deactivation hooks are registered. @@ -958,14 +1045,16 @@ public function ajax_deactivate_plugin() { deactivate_plugins( $plugin_file, false, null ); if ( is_plugin_active( $plugin_file ) ) { - wp_send_json_error([ 'message' => __( 'Failed to deactivate plugin', 'onecom-wp' ) ]); + wp_send_json_error( [ 'message' => __( 'Failed to deactivate plugin', 'onecom-wp' ) ] ); } - wp_send_json_success([ - 'message' => __( 'Plugin deactivated successfully', 'onecom-wp' ), - 'installed' => true, - 'activated' => false, - ]); + wp_send_json_success( + [ + 'message' => __( 'Plugin deactivated successfully', 'onecom-wp' ), + 'installed' => true, + 'activated' => false, + ] + ); } public function ajax_delete_plugin() { @@ -975,7 +1064,7 @@ public function ajax_delete_plugin() { wp_send_json_error( [ 'message' => __( 'Permission denied', 'onecom-wp' ) ] ); } - $slug = sanitize_text_field( $_REQUEST['slug'] ?? '' ); + $slug = sanitize_text_field( wp_unslash( $_REQUEST['slug'] ?? '' ) ); if ( empty( $slug ) ) { wp_send_json_error( [ 'message' => __( 'Invalid plugin slug', 'onecom-wp' ) ] ); } @@ -1011,24 +1100,26 @@ public function ajax_delete_plugin() { wp_send_json_error( [ 'message' => __( 'Failed to delete plugin', 'onecom-wp' ) ] ); } - wp_send_json_success( [ - 'message' => __( 'Plugin deleted successfully', 'onecom-wp' ), - 'installed' => false, - 'activated' => false, - ] ); + wp_send_json_success( + [ + 'message' => __( 'Plugin deleted successfully', 'onecom-wp' ), + 'installed' => false, + 'activated' => false, + ] + ); } /** * Resets the transient on core update. + * * @param $upgrader * @param $hook_extra * @return void */ - public function reset_transient_on_core_update($upgrader, $hook_extra): void - { + public function reset_transient_on_core_update( $upgrader, $hook_extra ): void { if ( empty( $hook_extra['action'] ) || 'update' !== $hook_extra['action'] || - empty( $hook_extra['type'] ) || 'core' !== $hook_extra['type'] + empty( $hook_extra['type'] ) || 'core' !== $hook_extra['type'] ) { return; } @@ -1047,7 +1138,7 @@ public function reset_transient_on_core_update($upgrader, $hook_extra): void * * @return void */ - public function reset_transient_on_locale_change(){ + public function reset_transient_on_locale_change() { $brand_name = $this->config['brand']; $transient_name = "{$brand_name}_marketplace_catalog"; $deleted = delete_site_transient( $transient_name ); diff --git a/backend/src/Models/MarketplaceModel.php b/backend/src/Models/MarketplaceModel.php index 0bf63ce..30add2b 100644 --- a/backend/src/Models/MarketplaceModel.php +++ b/backend/src/Models/MarketplaceModel.php @@ -1,17 +1,38 @@ api_url = $api_url; } + /** + * Fetch plugins from the API. + * + * @param array $payload Optional payload for the request. + * @return array The fetched plugins data. + */ public function fetch_plugins( array $payload = [] ): array { $args = [ 'timeout' => 30, @@ -29,7 +50,7 @@ public function fetch_plugins( array $payload = [] ): array { $body = wp_remote_retrieve_body( $response ); - // Handle null or empty body to avoid PHP 8.1+ deprecation warning + // Handle null or empty body to avoid PHP 8.1+ deprecation warning. if ( empty( $body ) ) { return []; } diff --git a/backend/src/marketplace.php b/backend/src/marketplace.php index 962e143..cb8bb52 100644 --- a/backend/src/marketplace.php +++ b/backend/src/marketplace.php @@ -1,40 +1,50 @@ getMessage()); + MarketplaceController::boot( $config ); + } catch ( \Exception $e ) { + error_log( $e->getMessage() ); } } -} \ No newline at end of file +} diff --git a/composer.json b/composer.json index b6b34db..f3b1b2d 100644 --- a/composer.json +++ b/composer.json @@ -9,5 +9,16 @@ }, "require": { "php": ">=7.4" + }, + "require-dev": { + "squizlabs/php_codesniffer": "^3.10", + "wp-coding-standards/wpcs": "^3.0", + "phpcsstandards/phpcsutils": "^1.0", + "phpcsstandards/phpcsextra": "^1.0" + }, + "config": { + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true + } } } \ No newline at end of file diff --git a/css/marketplace.css b/css/marketplace.css index 7512ef6..9d68797 100644 --- a/css/marketplace.css +++ b/css/marketplace.css @@ -216,6 +216,9 @@ body.one-com_page_onecom-marketplace{ #marketplace-root .gv-activated .marketplace-container .gv-carousel-slide .gv-product-header.gv-area-header { align-items: flex-start; } + .gv-activated .ocmp-plugin-cards .gv-desk-span-8{ + width:226px; + } } @media (min-width: 769px ) and (max-width: 1024px) { diff --git a/frontend/.eslintrc.json b/frontend/.eslintrc.json deleted file mode 100644 index 72b5241..0000000 --- a/frontend/.eslintrc.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "extends": [ - "eslint:recommended", - "plugin:react/recommended", - "plugin:react-hooks/recommended", - "plugin:jsx-a11y/recommended", - "prettier" - ], - "plugins": ["react", "react-hooks", "jsx-a11y"], - "env": { - "browser": true, - "es2021": true, - "node": true - }, - "parserOptions": { - "ecmaVersion": "latest", - "sourceType": "module", - "ecmaFeatures": { - "jsx": true - } - }, - "settings": { - "react": { - "version": "detect" - } - }, - "rules": { - "react/react-in-jsx-scope": "off", - "react/prop-types": "warn", - "no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }], - "no-console": ["warn", { "allow": ["warn", "error"] }] - }, - "ignorePatterns": ["build/", "standalone/", "node_modules/", "webpack.wp.js", "vite.config.js"] -} diff --git a/frontend/.prettierignore b/frontend/.prettierignore index c4b9847..77db192 100644 --- a/frontend/.prettierignore +++ b/frontend/.prettierignore @@ -1,6 +1,7 @@ build/ standalone/ node_modules/ +coverage/ *.min.js *.min.css package-lock.json diff --git a/frontend/.prettierrc b/frontend/.prettierrc index 49fb29b..1e26b16 100644 --- a/frontend/.prettierrc +++ b/frontend/.prettierrc @@ -1,10 +1,10 @@ { "semi": true, - "trailingComma": "es5", "singleQuote": true, + "trailingComma": "es5", "printWidth": 100, "tabWidth": 2, "useTabs": false, - "arrowParens": "avoid", + "arrowParens": "always", "endOfLine": "lf" -} +} \ No newline at end of file diff --git a/frontend/build/addons.asset.php b/frontend/build/addons.asset.php deleted file mode 100644 index 3113d0a..0000000 --- a/frontend/build/addons.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('react', 'react-dom'), 'version' => '00e49f76283dc64bb072'); diff --git a/frontend/build/addons.js b/frontend/build/addons.js deleted file mode 100644 index 7a5673a..0000000 --- a/frontend/build/addons.js +++ /dev/null @@ -1,2 +0,0 @@ -(()=>{var e={108:(e,t,r)=>{"use strict";r.d(t,{u:()=>n});const n=(e,t)=>{if(!e)return!0;const r=String(e).split("."),n=String(t).split(".");for(let e=0;ei)return!0;if(t{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Oppdater side","ui.notifications.couldNotLoad":"Kunne ikke laste inn siden","ui.notifications.refreshPage":"Oppdater siden og kontakt vår support hvis problemet vedvarer."}')},488:(e,t,r)=>{"use strict";r.d(t,{Dn:()=>c,M:()=>l,Tc:()=>a});const n={EUR:"€",USD:"$",GBP:"£",DKK:"kr",NOK:"kr",SEK:"kr"},i=["DKK","SEK","NOK"],o=e=>n[e]||e,s=(e,t,r)=>i.includes(r)?`${e} ${t}`:`${t} ${e}`,a=e=>{if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"full"===e.priceType);if(t&&t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return s(r,e,t.currency)}}return null},c=e=>{if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"rebate"===e.priceType);if(t&&void 0!==t.amount&&null!==t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return s(r,e,t.currency)}}return null},l=(e,t="Free",r=null)=>{if("free"===e.licenseType)return t;if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"rebate"===e.priceType);if(t&&"premium"===e.licenseType){if(0===t.amount)return r?.labels?.freeUntilRenewal||"Free until renewal";if(t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return`${s(r,e,t.currency)} `}}let n=e.prices.find(e=>"full"===e.priceType&&(!0===e.isActive||void 0===e.isActive));if(n||(n=e.prices.find(e=>!0===e.isActive)),n||(n=e.prices[0]),n&&n.amount&&n.currency){const e=o(n.currency),t=Number(n.amount).toFixed(2);return s(t,e,n.currency)}}if(e.priceCurrency&&e.priceAmount){const t=o(e.priceCurrency),r=Number(e.priceAmount).toFixed(2);return s(r,t,e.priceCurrency)}return""}},1174:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o(){const{uiI18n:e}=(0,i.D)(),t=e?.notifications?.updateWPText?.replace("{0}","6.2");return(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg gv-items-center gv-justify-center gv-p-fluid"},(0,n.createElement)("div",{className:"gv-text-center"},(0,n.createElement)("h5",{className:"gv-header-md gv-mb-sm"},e?.notifications?.updateWPTitle),(0,n.createElement)("p",{className:"gv-text-md gv-mb-lg"},t),(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary buttons-min-width",onClick:()=>{window.location.href="undefined"!=typeof window&&window.marketplaceConfig?.wpConfig?.adminUrl?`${window.marketplaceConfig.wpConfig.adminUrl}update-core.php`:"/wp-admin/update-core.php"}},(0,n.createElement)("span",null,e?.updateWPButton))))}},1199:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Pagina verversen","ui.notifications.couldNotLoad":"Kon de pagina niet laden","ui.notifications.refreshPage":"Ververs de pagina en neem contact op met onze (Engelstalige) support als het probleem zich blijft voordoen."}')},1338:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(1609),i=r(7979),o=r(7008),s=r(3220);function a({plugin:e}){const{assetsBaseUrl:t,pluginInAction:r,subscriptionStatus:a,isCheckingSubscription:c,isOnecomBrand:l,handlePluginAction:u,uiI18n:p,isSpecialPlugin:h}=(0,i.D)(),d=a[e.slug],f=c[e.slug],g=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",m=g?`${g}assets/`:"",v=t=>{const r=!e.installed;if(l&&h(e.slug)&&r&&"install"===t){(0,o.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:e,context:{action:t,result:"initiated"}});const r=new CustomEvent("onecom-plugin-provision",{detail:{slug:e.slug},bubbles:!0,cancelable:!0,composed:!0});return void document.dispatchEvent(r)}u(t,e,"product_detail")},y=(e,t)=>e?e.replace("{0}",t||""):"",b=e?.name||"",_=l&&h(e.slug)&&!e.installed&&!1===d,w=l&&h(e.slug)&&!e.installed&&(f||void 0===d);return(0,n.createElement)("div",{className:"plugin-actions gv-mt-md"},w?(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md"}):_?(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary",onClick:()=>{(0,o.Mh)({buttonName:"Select",buttonAction:"subscribe_addon",plugin:e});const t=new CustomEvent("onecom-subscribe-addon",{detail:{slug:e.slug},bubbles:!0,cancelable:!0,composed:!0});document.dispatchEvent(t)},disabled:f},"Select"):e.installed?e.activated?(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary",onClick:()=>{(0,o.Mh)({buttonName:"Manage",buttonAction:"manage_product",context:{product_slug:e.slug,product_name:e.name,has_redirect_url:!(!e.redirectUrl||""===e.redirectUrl.trim()),has_onboarding_url:!(!e.onboardingUrl||""===e.onboardingUrl.trim())}});const t=(0,s.v)(e,!1);(0,s.J)(t)}},(0,n.createElement)("span",null,p?.labels?.manage||"Manage"),(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${m}icons/arrow_right.svg`})):(0,n.createElement)("button",{className:"gv-button gv-button-primary",disabled:r[e.slug],onClick:()=>v("activate")},r[e.slug]?y(p?.notifications?.activating||"Activating {0}",b):p?.activateButton||e.i18n?.activateButton||"Activate"):(0,n.createElement)("button",{className:"gv-button "+("seo-by-rank-math"===e.slug?"gv-button-secondary":"gv-button-primary"),disabled:r[e.slug],onClick:()=>v("install")},r[e.slug]?y(p?.notifications?.installing||"Installing {0}",b):p?.installButton||e.i18n?.installButton||"Install"))}},1352:(e,t,r)=>{"use strict";r.d(t,{TO:()=>o.T,gJ:()=>s,hz:()=>a,rV:()=>i.r});var n=r(1609),i=r(7565),o=r(8484);r(1831);const s=(0,n.createContext)();class a{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}},1609:e=>{"use strict";e.exports=window.React},1755:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(1609),i=r(7979),o=r(8291);function s(){const{assetsBaseUrl:e}=(0,i.D)(),{t}=(0,o.Bd)();return e||void 0!==window.marketplaceConfig&&window.marketplaceConfig,(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg gv-items-center gv-justify-center gv-p-fluid"},(0,n.createElement)("div",{className:"gv-text-center"},(0,n.createElement)("h5",{className:"gv-header-md gv-mb-sm"},t("ui.notifications.couldNotLoad")),(0,n.createElement)("p",{className:"gv-text-md gv-mb-lg"},t("ui.notifications.refreshPage")),(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary buttons-min-width",onClick:()=>{window.location.reload()}},(0,n.createElement)("span",null,t("ui.button.refreshPage")))))}},1831:(e,t,r)=>{"use strict";r.d(t,{r:()=>o});var n=r(7565),i=r(8484);const o={type:"3rdParty",init(e){(0,n.P)(e.options.react),(0,i.V)(e)}}},2176:(e,t,r)=>{"use strict";r(8437)},2635:(e,t,r)=>{"use strict";r.r(t),r.d(t,{changeLanguage:()=>Q,createInstance:()=>G,default:()=>H,dir:()=>K,exists:()=>re,getFixedT:()=>ee,hasLoadedNamespace:()=>ie,init:()=>J,keyFromSelector:()=>I,loadLanguages:()=>se,loadNamespaces:()=>oe,loadResources:()=>Y,reloadResources:()=>Z,setDefaultNamespace:()=>ne,t:()=>te,use:()=>X});const n=e=>"string"==typeof e,i=()=>{let e,t;const r=new Promise((r,n)=>{e=r,t=n});return r.resolve=e,r.reject=t,r},o=e=>null==e?"":""+e,s=/###/g,a=e=>e&&e.indexOf("###")>-1?e.replace(s,"."):e,c=e=>!e||n(e),l=(e,t,r)=>{const i=n(t)?t.split("."):t;let o=0;for(;o{const{obj:n,k:i}=l(e,t,Object);if(void 0!==n||1===t.length)return void(n[i]=r);let o=t[t.length-1],s=t.slice(0,t.length-1),a=l(e,s,Object);for(;void 0===a.obj&&s.length;)o=`${s[s.length-1]}.${o}`,s=s.slice(0,s.length-1),a=l(e,s,Object),a?.obj&&void 0!==a.obj[`${a.k}.${o}`]&&(a.obj=void 0);a.obj[`${a.k}.${o}`]=r},p=(e,t)=>{const{obj:r,k:n}=l(e,t);if(r&&Object.prototype.hasOwnProperty.call(r,n))return r[n]},h=(e,t,r)=>{for(const i in t)"__proto__"!==i&&"constructor"!==i&&(i in e?n(e[i])||e[i]instanceof String||n(t[i])||t[i]instanceof String?r&&(e[i]=t[i]):h(e[i],t[i],r):e[i]=t[i]);return e},d=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var f={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const g=e=>n(e)?e.replace(/[&<>"'\/]/g,e=>f[e]):e,m=[" ",",","?","!",";"],v=new class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){const t=this.regExpMap.get(e);if(void 0!==t)return t;const r=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,r),this.regExpQueue.push(e),r}}(20),y=(e,t,r=".")=>{if(!e)return;if(e[t]){if(!Object.prototype.hasOwnProperty.call(e,t))return;return e[t]}const n=t.split(r);let i=e;for(let e=0;e-1&&se?.replace("_","-"),_={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){console?.[e]?.apply?.(console,t)}};class w{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||"i18next:",this.logger=e||_,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,"log","",!0)}warn(...e){return this.forward(e,"warn","",!0)}error(...e){return this.forward(e,"error","")}deprecate(...e){return this.forward(e,"warn","WARNING DEPRECATED: ",!0)}forward(e,t,r,i){return i&&!this.debug?null:(n(e[0])&&(e[0]=`${r}${this.prefix} ${e[0]}`),this.logger[t](e))}create(e){return new w(this.logger,{prefix:`${this.prefix}:${e}:`,...this.options})}clone(e){return(e=e||this.options).prefix=e.prefix||this.prefix,new w(this.logger,e)}}var k=new w;class S{constructor(){this.observers={}}on(e,t){return e.split(" ").forEach(e=>{this.observers[e]||(this.observers[e]=new Map);const r=this.observers[e].get(t)||0;this.observers[e].set(t,r+1)}),this}off(e,t){this.observers[e]&&(t?this.observers[e].delete(t):delete this.observers[e])}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,r])=>{for(let n=0;n{for(let i=0;i-1&&this.options.ns.splice(t,1)}getResource(e,t,r,i={}){const o=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,s=void 0!==i.ignoreJSONStructure?i.ignoreJSONStructure:this.options.ignoreJSONStructure;let a;e.indexOf(".")>-1?a=e.split("."):(a=[e,t],r&&(Array.isArray(r)?a.push(...r):n(r)&&o?a.push(...r.split(o)):a.push(r)));const c=p(this.data,a);return!c&&!t&&!r&&e.indexOf(".")>-1&&(e=a[0],t=a[1],r=a.slice(2).join(".")),!c&&s&&n(r)?y(this.data?.[e]?.[t],r,o):c}addResource(e,t,r,n,i={silent:!1}){const o=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator;let s=[e,t];r&&(s=s.concat(o?r.split(o):r)),e.indexOf(".")>-1&&(s=e.split("."),n=t,t=s[1]),this.addNamespaces(t),u(this.data,s,n),i.silent||this.emit("added",e,t,r,n)}addResources(e,t,r,i={silent:!1}){for(const i in r)(n(r[i])||Array.isArray(r[i]))&&this.addResource(e,t,i,r[i],{silent:!0});i.silent||this.emit("added",e,t,r)}addResourceBundle(e,t,r,n,i,o={silent:!1,skipCopy:!1}){let s=[e,t];e.indexOf(".")>-1&&(s=e.split("."),n=r,r=t,t=s[1]),this.addNamespaces(t);let a=p(this.data,s)||{};o.skipCopy||(r=JSON.parse(JSON.stringify(r))),n?h(a,r,i):a={...a,...r},u(this.data,s,a),o.silent||this.emit("added",e,t,r)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}hasResourceBundle(e,t){return void 0!==this.getResource(e,t)}getResourceBundle(e,t){return t||(t=this.options.defaultNS),this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){const t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}}var C={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,r,n,i){return e.forEach(e=>{t=this.processors[e]?.process(t,r,n,i)??t}),t}};const E=Symbol("i18next/PATH_KEY");function I(e,t){const{[E]:r}=e(function(){const e=[],t=Object.create(null);let r;return t.get=(n,i)=>(r?.revoke?.(),i===E?e:(e.push(i),r=Proxy.revocable(n,t),r.proxy)),Proxy.revocable(Object.create(null),t).proxy}());return r.join(t?.keySeparator??".")}const O={},N=e=>!n(e)&&"boolean"!=typeof e&&"number"!=typeof e;class A extends S{constructor(e,t={}){super(),((e,t,r)=>{["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"].forEach(e=>{t[e]&&(r[e]=t[e])})})(0,e,this),this.options=t,void 0===this.options.keySeparator&&(this.options.keySeparator="."),this.logger=k.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){const r={...t};if(null==e)return!1;const n=this.resolve(e,r);return void 0!==n?.res}extractFromKey(e,t){let r=void 0!==t.nsSeparator?t.nsSeparator:this.options.nsSeparator;void 0===r&&(r=":");const i=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator;let o=t.ns||this.options.defaultNS||[];const s=r&&e.indexOf(r)>-1,a=!(this.options.userDefinedKeySeparator||t.keySeparator||this.options.userDefinedNsSeparator||t.nsSeparator||((e,t,r)=>{t=t||"",r=r||"";const n=m.filter(e=>t.indexOf(e)<0&&r.indexOf(e)<0);if(0===n.length)return!0;const i=v.getRegExp(`(${n.map(e=>"?"===e?"\\?":e).join("|")})`);let o=!i.test(e);if(!o){const t=e.indexOf(r);t>0&&!i.test(e.substring(0,t))&&(o=!0)}return o})(e,r,i));if(s&&!a){const t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:n(o)?[o]:o};const s=e.split(r);(r!==i||r===i&&this.options.ns.indexOf(s[0])>-1)&&(o=s.shift()),e=s.join(i)}return{key:e,namespaces:n(o)?[o]:o}}translate(e,t,r){let i="object"==typeof t?{...t}:t;if("object"!=typeof i&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),"object"==typeof i&&(i={...i}),i||(i={}),null==e)return"";"function"==typeof e&&(e=I(e,{...this.options,...i})),Array.isArray(e)||(e=[String(e)]);const o=void 0!==i.returnDetails?i.returnDetails:this.options.returnDetails,s=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,{key:a,namespaces:c}=this.extractFromKey(e[e.length-1],i),l=c[c.length-1];let u=void 0!==i.nsSeparator?i.nsSeparator:this.options.nsSeparator;void 0===u&&(u=":");const p=i.lng||this.language,h=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if("cimode"===p?.toLowerCase())return h?o?{res:`${l}${u}${a}`,usedKey:a,exactUsedKey:a,usedLng:p,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:`${l}${u}${a}`:o?{res:a,usedKey:a,exactUsedKey:a,usedLng:p,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:a;const d=this.resolve(e,i);let f=d?.res;const g=d?.usedKey||a,m=d?.exactUsedKey||a,v=void 0!==i.joinArrays?i.joinArrays:this.options.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,b=void 0!==i.count&&!n(i.count),_=A.hasDefaultValue(i),w=b?this.pluralResolver.getSuffix(p,i.count,i):"",k=i.ordinal&&b?this.pluralResolver.getSuffix(p,i.count,{ordinal:!1}):"",S=b&&!i.ordinal&&0===i.count,x=S&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${w}`]||i[`defaultValue${k}`]||i.defaultValue;let C=f;y&&!f&&_&&(C=x);const E=N(C),O=Object.prototype.toString.apply(C);if(!(y&&C&&E&&["[object Number]","[object Function]","[object RegExp]"].indexOf(O)<0)||n(v)&&Array.isArray(C))if(y&&n(v)&&Array.isArray(f))f=f.join(v),f&&(f=this.extendTranslation(f,e,i,r));else{let t=!1,n=!1;!this.isValidLookup(f)&&_&&(t=!0,f=x),this.isValidLookup(f)||(n=!0,f=a);const o=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:f,c=_&&x!==f&&this.options.updateMissing;if(n||t||c){if(this.logger.log(c?"updateKey":"missingKey",p,l,a,c?x:f),s){const e=this.resolve(a,{...i,keySeparator:!1});e&&e.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let e=[];const t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if("fallback"===this.options.saveMissingTo&&t&&t[0])for(let r=0;r{const n=_&&r!==f?r:o;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,n,c,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,l,t,n,c,i),this.emit("missingKey",e,l,t,f)};this.options.saveMissing&&(this.options.saveMissingPlurals&&b?e.forEach(e=>{const t=this.pluralResolver.getSuffixes(e,i);S&&i[`defaultValue${this.options.pluralSeparator}zero`]&&t.indexOf(`${this.options.pluralSeparator}zero`)<0&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{r([e],a+t,i[`defaultValue${t}`]||x)})}):r(e,a,x))}f=this.extendTranslation(f,e,i,d,r),n&&f===a&&this.options.appendNamespaceToMissingKey&&(f=`${l}${u}${a}`),(n||t)&&this.options.parseMissingKeyHandler&&(f=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${u}${a}`:a,t?f:void 0,i))}else{if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(g,C,{...i,ns:c}):`key '${a} (${this.language})' returned an object instead of string.`;return o?(d.res=e,d.usedParams=this.getUsedParamsDetails(i),d):e}if(s){const e=Array.isArray(C),t=e?[]:{},r=e?m:g;for(const e in C)if(Object.prototype.hasOwnProperty.call(C,e)){const n=`${r}${s}${e}`;t[e]=_&&!f?this.translate(n,{...i,defaultValue:N(x)?x[e]:void 0,joinArrays:!1,ns:c}):this.translate(n,{...i,joinArrays:!1,ns:c}),t[e]===n&&(t[e]=C[e])}f=t}}return o?(d.res=f,d.usedParams=this.getUsedParamsDetails(i),d):f}extendTranslation(e,t,r,i,o){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...r},r.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});const s=n(e)&&(void 0!==r?.interpolation?.skipOnVariables?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let a;if(s){const t=e.match(this.interpolator.nestingRegexp);a=t&&t.length}let c=r.replace&&!n(r.replace)?r.replace:r;if(this.options.interpolation.defaultVariables&&(c={...this.options.interpolation.defaultVariables,...c}),e=this.interpolator.interpolate(e,c,r.lng||this.language||i.usedLng,r),s){const t=e.match(this.interpolator.nestingRegexp);a<(t&&t.length)&&(r.nest=!1)}!r.lng&&i&&i.res&&(r.lng=this.language||i.usedLng),!1!==r.nest&&(e=this.interpolator.nest(e,(...e)=>o?.[0]!==e[0]||r.context?this.translate(...e,t):(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null),r)),r.interpolation&&this.interpolator.reset()}const s=r.postProcess||this.options.postProcess,a=n(s)?[s]:s;return null!=e&&a?.length&&!1!==r.applyPostProcessor&&(e=C.handle(a,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...i,usedParams:this.getUsedParamsDetails(r)},...r}:r,this)),e}resolve(e,t={}){let r,i,o,s,a;return n(e)&&(e=[e]),e.forEach(e=>{if(this.isValidLookup(r))return;const c=this.extractFromKey(e,t),l=c.key;i=l;let u=c.namespaces;this.options.fallbackNS&&(u=u.concat(this.options.fallbackNS));const p=void 0!==t.count&&!n(t.count),h=p&&!t.ordinal&&0===t.count,d=void 0!==t.context&&(n(t.context)||"number"==typeof t.context)&&""!==t.context,f=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);u.forEach(e=>{this.isValidLookup(r)||(a=e,O[`${f[0]}-${e}`]||!this.utils?.hasLoadedNamespace||this.utils?.hasLoadedNamespace(a)||(O[`${f[0]}-${e}`]=!0,this.logger.warn(`key "${i}" for languages "${f.join(", ")}" won't get resolved as namespace "${a}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),f.forEach(n=>{if(this.isValidLookup(r))return;s=n;const i=[l];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(i,l,n,e,t);else{let e;p&&(e=this.pluralResolver.getSuffix(n,t.count,t));const r=`${this.options.pluralSeparator}zero`,o=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(p&&(t.ordinal&&0===e.indexOf(o)&&i.push(l+e.replace(o,this.options.pluralSeparator)),i.push(l+e),h&&i.push(l+r)),d){const n=`${l}${this.options.contextSeparator||"_"}${t.context}`;i.push(n),p&&(t.ordinal&&0===e.indexOf(o)&&i.push(n+e.replace(o,this.options.pluralSeparator)),i.push(n+e),h&&i.push(n+r))}}let a;for(;a=i.pop();)this.isValidLookup(r)||(o=a,r=this.getResource(n,e,a,t))}))})}),{res:r,usedKey:i,exactUsedKey:o,usedLng:s,usedNS:a}}isValidLookup(e){return!(void 0===e||!this.options.returnNull&&null===e||!this.options.returnEmptyString&&""===e)}getResource(e,t,r,n={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,r,n):this.resourceStore.getResource(e,t,r,n)}getUsedParamsDetails(e={}){const t=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],r=e.replace&&!n(e.replace);let i=r?e.replace:e;if(r&&void 0!==e.count&&(i.count=e.count),this.options.interpolation.defaultVariables&&(i={...this.options.interpolation.defaultVariables,...i}),!r){i={...i};for(const e of t)delete i[e]}return i}static hasDefaultValue(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&"defaultValue"===t.substring(0,12)&&void 0!==e[t])return!0;return!1}}class R{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=k.create("languageUtils")}getScriptPartFromCode(e){if(!(e=b(e))||e.indexOf("-")<0)return null;const t=e.split("-");return 2===t.length?null:(t.pop(),"x"===t[t.length-1].toLowerCase()?null:this.formatLanguageCode(t.join("-")))}getLanguagePartFromCode(e){if(!(e=b(e))||e.indexOf("-")<0)return e;const t=e.split("-");return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(n(e)&&e.indexOf("-")>-1){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch(e){}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;const r=this.formatLanguageCode(e);this.options.supportedLngs&&!this.isSupportedCode(r)||(t=r)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;const r=this.getScriptPartFromCode(e);if(this.isSupportedCode(r))return t=r;const n=this.getLanguagePartFromCode(e);if(this.isSupportedCode(n))return t=n;t=this.options.supportedLngs.find(e=>e===n?e:e.indexOf("-")<0&&n.indexOf("-")<0?void 0:e.indexOf("-")>0&&n.indexOf("-")<0&&e.substring(0,e.indexOf("-"))===n||0===e.indexOf(n)&&n.length>1?e:void 0)}),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t}getFallbackCodes(e,t){if(!e)return[];if("function"==typeof e&&(e=e(t)),n(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let r=e[t];return r||(r=e[this.getScriptPartFromCode(t)]),r||(r=e[this.formatLanguageCode(t)]),r||(r=e[this.getLanguagePartFromCode(t)]),r||(r=e.default),r||[]}toResolveHierarchy(e,t){const r=this.getFallbackCodes((!1===t?[]:t)||this.options.fallbackLng||[],e),i=[],o=e=>{e&&(this.isSupportedCode(e)?i.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return n(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?("languageOnly"!==this.options.load&&o(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&o(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&o(this.getLanguagePartFromCode(e))):n(e)&&o(this.formatLanguageCode(e)),r.forEach(e=>{i.indexOf(e)<0&&o(this.formatLanguageCode(e))}),i}}const M={zero:0,one:1,two:2,few:3,many:4,other:5},T={select:e=>1===e?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class L{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=k.create("pluralResolver"),this.pluralRulesCache={}}addRule(e,t){this.rules[e]=t}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){const r=b("dev"===e?"en":e),n=t.ordinal?"ordinal":"cardinal",i=JSON.stringify({cleanedCode:r,type:n});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let o;try{o=new Intl.PluralRules(r,{type:n})}catch(r){if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),T;if(!e.match(/-|_/))return T;const n=this.languageUtils.getLanguagePartFromCode(e);o=this.getRule(n,t)}return this.pluralRulesCache[i]=o,o}needsPlural(e,t={}){let r=this.getRule(e,t);return r||(r=this.getRule("dev",t)),r?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,r={}){return this.getSuffixes(e,r).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let r=this.getRule(e,t);return r||(r=this.getRule("dev",t)),r?r.resolvedOptions().pluralCategories.sort((e,t)=>M[e]-M[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:""}${e}`):[]}getSuffix(e,t,r={}){const n=this.getRule(e,r);return n?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${n.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix("dev",t,r))}}const P=(e,t,r,i=".",o=!0)=>{let s=((e,t,r)=>{const n=p(e,r);return void 0!==n?n:p(t,r)})(e,t,r);return!s&&o&&n(r)&&(s=y(e,r,i),void 0===s&&(s=y(t,r,i))),s},D=e=>e.replace(/\$/g,"$$$$");class F{constructor(e={}){this.logger=k.create("interpolator"),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||(e.interpolation={escapeValue:!0});const{escape:t,escapeValue:r,useRawValueToEscape:n,prefix:i,prefixEscaped:o,suffix:s,suffixEscaped:a,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:p,nestingPrefixEscaped:h,nestingSuffix:f,nestingSuffixEscaped:m,nestingOptionsSeparator:v,maxReplaces:y,alwaysFormat:b}=e.interpolation;this.escape=void 0!==t?t:g,this.escapeValue=void 0===r||r,this.useRawValueToEscape=void 0!==n&&n,this.prefix=i?d(i):o||"{{",this.suffix=s?d(s):a||"}}",this.formatSeparator=c||",",this.unescapePrefix=l?"":u||"-",this.unescapeSuffix=this.unescapePrefix?"":l||"",this.nestingPrefix=p?d(p):h||d("$t("),this.nestingSuffix=f?d(f):m||d(")"),this.nestingOptionsSeparator=v||",",this.maxReplaces=y||1e3,this.alwaysFormat=void 0!==b&&b,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,r,i){let s,a,c;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},u=e=>{if(e.indexOf(this.formatSeparator)<0){const n=P(t,l,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(n,void 0,r,{...i,...t,interpolationkey:e}):n}const n=e.split(this.formatSeparator),o=n.shift().trim(),s=n.join(this.formatSeparator).trim();return this.format(P(t,l,o,this.options.keySeparator,this.options.ignoreJSONStructure),s,r,{...i,...t,interpolationkey:o})};this.resetRegExp();const p=i?.missingInterpolationHandler||this.options.missingInterpolationHandler,h=void 0!==i?.interpolation?.skipOnVariables?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>D(e)},{regex:this.regexp,safeValue:e=>this.escapeValue?D(this.escape(e)):D(e)}].forEach(t=>{for(c=0;s=t.regex.exec(e);){const r=s[1].trim();if(a=u(r),void 0===a)if("function"==typeof p){const t=p(e,s,i);a=n(t)?t:""}else if(i&&Object.prototype.hasOwnProperty.call(i,r))a="";else{if(h){a=s[0];continue}this.logger.warn(`missed to pass in variable ${r} for interpolating ${e}`),a=""}else n(a)||this.useRawValueToEscape||(a=o(a));const l=t.safeValue(a);if(e=e.replace(s[0],l),h?(t.regex.lastIndex+=a.length,t.regex.lastIndex-=s[0].length):t.regex.lastIndex=0,c++,c>=this.maxReplaces)break}}),e}nest(e,t,r={}){let i,s,a;const c=(e,t)=>{const r=this.nestingOptionsSeparator;if(e.indexOf(r)<0)return e;const n=e.split(new RegExp(`${r}[ ]*{`));let i=`{${n[1]}`;e=n[0],i=this.interpolate(i,a);const o=i.match(/'/g),s=i.match(/"/g);((o?.length??0)%2==0&&!s||s.length%2!=0)&&(i=i.replace(/'/g,'"'));try{a=JSON.parse(i),t&&(a={...t,...a})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${r}${i}`}return a.defaultValue&&a.defaultValue.indexOf(this.prefix)>-1&&delete a.defaultValue,e};for(;i=this.nestingRegexp.exec(e);){let l=[];a={...r},a=a.replace&&!n(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;const u=/{.*}/.test(i[1])?i[1].lastIndexOf("}")+1:i[1].indexOf(this.formatSeparator);if(-1!==u&&(l=i[1].slice(u).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),i[1]=i[1].slice(0,u)),s=t(c.call(this,i[1].trim(),a),a),s&&i[0]===e&&!n(s))return s;n(s)||(s=o(s)),s||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${e}`),s=""),l.length&&(s=l.reduce((e,t)=>this.format(e,t,r.lng,{...r,interpolationkey:i[1].trim()}),s.trim())),e=e.replace(i[0],s),this.regexp.lastIndex=0}return e}}const U=e=>{const t={};return(r,n,i)=>{let o=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(o={...o,[i.interpolationkey]:void 0});const s=n+JSON.stringify(o);let a=t[s];return a||(a=e(b(n),i),t[s]=a),a(r)}},j=e=>(t,r,n)=>e(b(r),n)(t);class B{constructor(e={}){this.logger=k.create("formatter"),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||",";const r=t.cacheInBuiltFormats?U:j;this.formats={number:r((e,t)=>{const r=new Intl.NumberFormat(e,{...t});return e=>r.format(e)}),currency:r((e,t)=>{const r=new Intl.NumberFormat(e,{...t,style:"currency"});return e=>r.format(e)}),datetime:r((e,t)=>{const r=new Intl.DateTimeFormat(e,{...t});return e=>r.format(e)}),relativetime:r((e,t)=>{const r=new Intl.RelativeTimeFormat(e,{...t});return e=>r.format(e,t.range||"day")}),list:r((e,t)=>{const r=new Intl.ListFormat(e,{...t});return e=>r.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=U(t)}format(e,t,r,n={}){const i=t.split(this.formatSeparator);if(i.length>1&&i[0].indexOf("(")>1&&i[0].indexOf(")")<0&&i.find(e=>e.indexOf(")")>-1)){const e=i.findIndex(e=>e.indexOf(")")>-1);i[0]=[i[0],...i.splice(1,e)].join(this.formatSeparator)}return i.reduce((e,t)=>{const{formatName:i,formatOptions:o}=(e=>{let t=e.toLowerCase().trim();const r={};if(e.indexOf("(")>-1){const n=e.split("(");t=n[0].toLowerCase().trim();const i=n[1].substring(0,n[1].length-1);"currency"===t&&i.indexOf(":")<0?r.currency||(r.currency=i.trim()):"relativetime"===t&&i.indexOf(":")<0?r.range||(r.range=i.trim()):i.split(";").forEach(e=>{if(e){const[t,...n]=e.split(":"),i=n.join(":").trim().replace(/^'+|'+$/g,""),o=t.trim();r[o]||(r[o]=i),"false"===i&&(r[o]=!1),"true"===i&&(r[o]=!0),isNaN(i)||(r[o]=parseInt(i,10))}})}return{formatName:t,formatOptions:r}})(t);if(this.formats[i]){let t=e;try{const s=n?.formatParams?.[n.interpolationkey]||{},a=s.locale||s.lng||n.locale||n.lng||r;t=this.formats[i](e,a,{...o,...n,...s})}catch(e){this.logger.warn(e)}return t}return this.logger.warn(`there was no format function for ${i}`),e},e)}}class $ extends S{constructor(e,t,r,n={}){super(),this.backend=e,this.store=t,this.services=r,this.languageUtils=r.languageUtils,this.options=n,this.logger=k.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=n.maxParallelReads||10,this.readingCalls=0,this.maxRetries=n.maxRetries>=0?n.maxRetries:5,this.retryTimeout=n.retryTimeout>=1?n.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(r,n.backend,n)}queueLoad(e,t,r,n){const i={},o={},s={},a={};return e.forEach(e=>{let n=!0;t.forEach(t=>{const s=`${e}|${t}`;!r.reload&&this.store.hasResourceBundle(e,t)?this.state[s]=2:this.state[s]<0||(1===this.state[s]?void 0===o[s]&&(o[s]=!0):(this.state[s]=1,n=!1,void 0===o[s]&&(o[s]=!0),void 0===i[s]&&(i[s]=!0),void 0===a[t]&&(a[t]=!0)))}),n||(s[e]=!0)}),(Object.keys(i).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:n}),{toLoad:Object.keys(i),pending:Object.keys(o),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(a)}}loaded(e,t,r){const n=e.split("|"),i=n[0],o=n[1];t&&this.emit("failedLoading",i,o,t),!t&&r&&this.store.addResourceBundle(i,o,r,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&r&&(this.state[e]=0);const s={};this.queue.forEach(r=>{((e,t,r)=>{const{obj:n,k:i}=l(e,t,Object);n[i]=n[i]||[],n[i].push(r)})(r.loaded,[i],o),((e,t)=>{void 0!==e.pending[t]&&(delete e.pending[t],e.pendingCount--)})(r,e),t&&r.errors.push(t),0!==r.pendingCount||r.done||(Object.keys(r.loaded).forEach(e=>{s[e]||(s[e]={});const t=r.loaded[e];t.length&&t.forEach(t=>{void 0===s[e][t]&&(s[e][t]=!0)})}),r.done=!0,r.errors.length?r.callback(r.errors):r.callback())}),this.emit("loaded",s),this.queue=this.queue.filter(e=>!e.done)}read(e,t,r,n=0,i=this.retryTimeout,o){if(!e.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads)return void this.waitingReads.push({lng:e,ns:t,fcName:r,tried:n,wait:i,callback:o});this.readingCalls++;const s=(s,a)=>{if(this.readingCalls--,this.waitingReads.length>0){const e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}s&&a&&n{this.read.call(this,e,t,r,n+1,2*i,o)},i):o(s,a)},a=this.backend[r].bind(this.backend);if(2!==a.length)return a(e,t,s);try{const r=a(e,t);r&&"function"==typeof r.then?r.then(e=>s(null,e)).catch(s):s(null,r)}catch(e){s(e)}}prepareLoading(e,t,r={},i){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();n(e)&&(e=this.languageUtils.toResolveHierarchy(e)),n(t)&&(t=[t]);const o=this.queueLoad(e,t,r,i);if(!o.toLoad.length)return o.pending.length||i(),null;o.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,r){this.prepareLoading(e,t,{},r)}reload(e,t,r){this.prepareLoading(e,t,{reload:!0},r)}loadOne(e,t=""){const r=e.split("|"),n=r[0],i=r[1];this.read(n,i,"read",void 0,void 0,(r,o)=>{r&&this.logger.warn(`${t}loading namespace ${i} for language ${n} failed`,r),!r&&o&&this.logger.log(`${t}loaded namespace ${i} for language ${n}`,o),this.loaded(e,r,o)})}saveMissing(e,t,r,n,i,o={},s=()=>{}){if(!this.services?.utils?.hasLoadedNamespace||this.services?.utils?.hasLoadedNamespace(t)){if(null!=r&&""!==r){if(this.backend?.create){const a={...o,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=5===c.length?c(e,t,r,n,a):c(e,t,r,n),i&&"function"==typeof i.then?i.then(e=>s(null,e)).catch(s):s(null,i)}catch(e){s(e)}else c(e,t,r,n,s,a)}e&&e[0]&&this.store.addResource(e[0],t,r,n)}}else this.logger.warn(`did not save key "${r}" as the namespace "${t}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")}}const z=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if("object"==typeof e[1]&&(t=e[1]),n(e[1])&&(t.defaultValue=e[1]),n(e[2])&&(t.tDescription=e[2]),"object"==typeof e[2]||"object"==typeof e[3]){const r=e[3]||e[2];Object.keys(r).forEach(e=>{t[e]=r[e]})}return t},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),q=e=>(n(e.ns)&&(e.ns=[e.ns]),n(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),n(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs?.indexOf?.("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),"boolean"==typeof e.initImmediate&&(e.initAsync=e.initImmediate),e),V=()=>{};class W extends S{constructor(e={},t){var r;if(super(),this.options=q(e),this.services={},this.logger=k,this.modules={external:[]},r=this,Object.getOwnPropertyNames(Object.getPrototypeOf(r)).forEach(e=>{"function"==typeof r[e]&&(r[e]=r[e].bind(r))}),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,"function"==typeof e&&(t=e,e={}),null==e.defaultNS&&e.ns&&(n(e.ns)?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));const r=z();this.options={...r,...this.options,...q(e)},this.options.interpolation={...r.interpolation,...this.options.interpolation},void 0!==e.keySeparator&&(this.options.userDefinedKeySeparator=e.keySeparator),void 0!==e.nsSeparator&&(this.options.userDefinedNsSeparator=e.nsSeparator);const o=e=>e?"function"==typeof e?new e:e:null;if(!this.options.isClone){let e;this.modules.logger?k.init(o(this.modules.logger),this.options):k.init(null,this.options),e=this.modules.formatter?this.modules.formatter:B;const t=new R(this.options);this.store=new x(this.options.resources,this.options);const n=this.services;n.logger=k,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new L(t,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==r.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),!e||this.options.interpolation.format&&this.options.interpolation.format!==r.interpolation.format||(n.formatter=o(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new F(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new $(o(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on("*",(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=o(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=o(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new A(this.services,this.options),this.translator.on("*",(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||(t=V),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&"dev"!==e[0]&&(this.options.lng=e[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(e=>{this[e]=(...t)=>this.store[e](...t)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});const s=i(),a=()=>{const e=(e,r)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),s.resolve(r),t(e,r)};if(this.languages&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?a():setTimeout(a,0),s}loadResources(e,t=V){let r=t;const i=n(e)?e:this.language;if("function"==typeof e&&(r=e),!this.options.resources||this.options.partialBundledLanguages){if("cimode"===i?.toLowerCase()&&(!this.options.preload||0===this.options.preload.length))return r();const e=[],t=t=>{t&&"cimode"!==t&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{"cimode"!==t&&e.indexOf(t)<0&&e.push(t)})};i?t(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{e||this.resolvedLanguage||!this.language||this.setResolvedLanguage(this.language),r(e)})}else r(null)}reloadResources(e,t,r){const n=i();return"function"==typeof e&&(r=e,e=void 0),"function"==typeof t&&(r=t,t=void 0),e||(e=this.languages),t||(t=this.options.ns),r||(r=V),this.services.backendConnector.reload(e,t,e=>{n.resolve(),r(e)}),n}use(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&C.addPostProcessor(e),"formatter"===e.type&&(this.modules.formatter=e),"3rdParty"===e.type&&this.modules.external.push(e),this}setResolvedLanguage(e){if(e&&this.languages&&!(["cimode","dev"].indexOf(e)>-1)){for(let e=0;e-1)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&this.languages.indexOf(e)<0&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;const r=i();this.emit("languageChanging",e);const o=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},s=(n,i)=>{i?this.isLanguageChangingTo===e&&(o(i),this.translator.changeLanguage(i),this.isLanguageChangingTo=void 0,this.emit("languageChanged",i),this.logger.log("languageChanged",i)):this.isLanguageChangingTo=void 0,r.resolve((...e)=>this.t(...e)),t&&t(n,(...e)=>this.t(...e))},a=t=>{e||t||!this.services.languageDetector||(t=[]);const r=n(t)?t:t&&t[0],i=this.store.hasLanguageSomeTranslations(r)?r:this.services.languageUtils.getBestMatchFromCodes(n(t)?[t]:t);i&&(this.language||o(i),this.translator.language||this.translator.changeLanguage(i),this.services.languageDetector?.cacheUserLanguage?.(i)),this.loadResources(i,e=>{s(e,i)})};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?0===this.services.languageDetector.detect.length?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e):a(this.services.languageDetector.detect()),r}getFixedT(e,t,r){const i=(e,t,...n)=>{let o;o="object"!=typeof t?this.options.overloadTranslationOptionHandler([e,t].concat(n)):{...t},o.lng=o.lng||i.lng,o.lngs=o.lngs||i.lngs,o.ns=o.ns||i.ns,""!==o.keyPrefix&&(o.keyPrefix=o.keyPrefix||r||i.keyPrefix);const s=this.options.keySeparator||".";let a;return o.keyPrefix&&Array.isArray(e)?a=e.map(e=>("function"==typeof e&&(e=I(e,{...this.options,...t})),`${o.keyPrefix}${s}${e}`)):("function"==typeof e&&(e=I(e,{...this.options,...t})),a=o.keyPrefix?`${o.keyPrefix}${s}${e}`:e),this.t(a,o)};return n(e)?i.lng=e:i.lngs=e,i.ns=t,i.keyPrefix=r,i}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=t.lng||this.resolvedLanguage||this.languages[0],n=!!this.options&&this.options.fallbackLng,i=this.languages[this.languages.length-1];if("cimode"===r.toLowerCase())return!0;const o=(e,t)=>{const r=this.services.backendConnector.state[`${e}|${t}`];return-1===r||0===r||2===r};if(t.precheck){const e=t.precheck(this,o);if(void 0!==e)return e}return!(!this.hasResourceBundle(r,e)&&this.services.backendConnector.backend&&(!this.options.resources||this.options.partialBundledLanguages)&&(!o(r,e)||n&&!o(i,e)))}loadNamespaces(e,t){const r=i();return this.options.ns?(n(e)&&(e=[e]),e.forEach(e=>{this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}),this.loadResources(e=>{r.resolve(),t&&t(e)}),r):(t&&t(),Promise.resolve())}loadLanguages(e,t){const r=i();n(e)&&(e=[e]);const o=this.options.preload||[],s=e.filter(e=>o.indexOf(e)<0&&this.services.languageUtils.isSupportedCode(e));return s.length?(this.options.preload=o.concat(s),this.loadResources(e=>{r.resolve(),t&&t(e)}),r):(t&&t(),Promise.resolve())}dir(e){if(e||(e=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!e)return"rtl";try{const t=new Intl.Locale(e);if(t&&t.getTextInfo){const e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch(e){}const t=this.services?.languageUtils||new R(z());return e.toLowerCase().indexOf("-latn")>1?"ltr":["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"].indexOf(t.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(e={},t){return new W(e,t)}cloneInstance(e={},t=V){const r=e.forkResourceStore;r&&delete e.forkResourceStore;const n={...this.options,...e,isClone:!0},i=new W(n);if(void 0===e.debug&&void 0===e.prefix||(i.logger=i.logger.clone(e)),["store","services","language"].forEach(e=>{i[e]=this[e]}),i.services={...this.services},i.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},r){const e=Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((r,n)=>(r[n]={...e[t][n]},r),e[t]),e),{});i.store=new x(e,n),i.services.resourceStore=i.store}return i.translator=new A(i.services,n),i.translator.on("*",(e,...t)=>{i.emit(e,...t)}),i.init(n,t),i.translator.options=n,i.translator.backendConnector.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},i}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const H=W.createInstance();H.createInstance=W.createInstance;const G=H.createInstance,K=H.dir,J=H.init,Y=H.loadResources,Z=H.reloadResources,X=H.use,Q=H.changeLanguage,ee=H.getFixedT,te=H.t,re=H.exists,ne=H.setDefaultNamespace,ie=H.hasLoadedNamespace,oe=H.loadNamespaces,se=H.loadLanguages},2648:(e,t,r)=>{"use strict";r(1609),r(8437),r(9454)},2875:(e,t,r)=>{"use strict";r.d(t,{x:()=>s});const n=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,i={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},o=e=>i[e],s=e=>e.replace(n,o)},3220:(e,t,r)=>{"use strict";r.d(t,{J:()=>i,v:()=>n});const n=(e,t=!1)=>{let r=e.redirectUrl;const n="seo-by-rank-math"===e.slug||"seo-by-rank-math-pro"===e.slug,i=e.onboardingUrl&&"string"==typeof e.onboardingUrl&&""!==e.onboardingUrl.trim();if(n){const t=window.marketplaceConfig?.wpConfig;(!t||!0!==t.rankMathRegistrationSkip)&&i&&(r=e.onboardingUrl)}else t&&i&&(r=e.onboardingUrl);return r},i=e=>{if(e&&""!==e.trim()){const t=void 0!==window.marketplaceConfig&&window.marketplaceConfig?.wpConfig?.adminUrl;if(t){let r=e;r.startsWith("wp-admin/")&&(r=r.substring(9));const n=`${t}${r}`;window.location.href=n}else{const t=`${window.location.origin}/${e}`;window.location.href=t}return}window.location.href="/wp-admin/plugins.php"}},3227:(e,t,r)=>{"use strict";r(1609),r(7674),r(1352),r(9454)},3273:(e,t,r)=>{"use strict";r(1609),r(1352)},3461:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Päivitä sivu","ui.notifications.couldNotLoad":"Sivua ei voitu ladata","ui.notifications.refreshPage":"Päivitä sivu ja ota yhteyttä asiakaspalveluumme, jos ongelma jatkuu."}')},3526:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o(){const{loadingAction:e,loadingPlugin:t,assetsBaseUrl:r}=(0,i.D)();if(!e)return null;const o=`${r||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||""}assets/images/spinner.svg`;return(0,n.createElement)("div",{className:"loading-overlay show"},(0,n.createElement)("div",{className:"gv-loader-container gv-pos-center gv-pos-absolute"},(0,n.createElement)("gv-loader",{src:o}),(0,n.createElement)("p",null,e)))}},3591:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Actualizar página","ui.notifications.couldNotLoad":"No se puede cargar la página","ui.notifications.refreshPage":"Actualice la página y póngase en contacto con nuestro servicio de asistencia si el problema persiste."}')},3699:(e,t,r)=>{"use strict";r.d(t,{A:()=>f});var n=r(1609),i=r(7979),o=r(488),s=r(4598),a=r(9962),c=r(4677),l=r(4800),u=(r(6530),r(1755)),p=r(1174),h=r(7008),d=r(3220);function f(){const{apiBaseUrl:e,assetsBaseUrl:t,pluginInAction:r,setPluginInAction:f,subscriptionStatus:g,fetchSubscriptionStatus:m,isOnecomBrand:v,plugins:y,setPlugins:b,uiI18n:_,setUiI18n:w,handlePluginAction:k,catalogError:S,setCatalogError:x,catalogLoading:C,setCatalogLoading:E,shouldShowProvision:I,isSpecialPlugin:O,shouldShowPlugin:N,isWpVersionSupported:A}=(0,i.D)(),[R,M]=(0,n.useState)(null),[T,L]=(0,n.useState)([]),[P,D]=(0,n.useState)(null),F=(0,n.useRef)(null),U=(0,n.useRef)(!1),j=(0,n.useRef)(!1),B=((0,n.useRef)(null),(0,n.useRef)(null)),$=(0,n.useRef)(null),z=(0,n.useRef)(!1),q=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",V=q?`${q}assets/icons/`:"",W="undefined"!=typeof window?new URLSearchParams(window.location.search).get("plugin"):null;if((0,n.useEffect)(()=>{U.current||(U.current=!0,E(!0),x(null),fetch(e).then(e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return B.current=Date.now(),e.json()}).then(e=>{if((e.is_cached||e.cached)&&(z.current=!0),!(e.success&&e.data&&e.data.catalog))throw(0,h.oe)({category:"addons_page",itemName:"Addons Page",isContentRendered:!1}),new Error("Invalid API response structure");{const t=e.data.catalog;b(t);const r=!0===t.find(e=>"seo-by-rank-math"===e.slug)?.activated,n=!0===t.find(e=>"seo-by-rank-math-pro"===e.slug)?.activated,i=t.filter(e=>!!N(e)&&!0!==e.activated&&(!0===e.featured||"true"===e.featured)&&("seo-by-rank-math"===e.slug?!r&&!n:"seo-by-rank-math-pro"!==e.slug||r)).sort((e,t)=>(void 0!==e.displayOrder?parseInt(e.displayOrder):1/0)-(void 0!==t.displayOrder?parseInt(t.displayOrder):1/0)).slice(0,3);L(i);const o=e.data.uiI18n||e.data.ui_i18n;o&&w(o),v&&t.filter(e=>O(e.slug)).forEach(e=>{m(e.slug)})}}).catch(e=>{console.error("Failed to fetch plugins:",e),(0,h.oe)({category:"addons_page",itemName:"Addons Page",isContentRendered:!1}),x(e.message||"Failed to load plugins")}).finally(()=>{E(!1)}))},[e,b,w,x,E,N]),(0,n.useEffect)(()=>{if(W&&y.length){const e=y.find(e=>e.slug===W);e&&M(e)}else W||M(null)},[W,y]),(0,n.useEffect)(()=>{const e=()=>{const e=new URLSearchParams(window.location.search).get("plugin");if(e){if(y.length){const t=y.find(t=>t.slug===e);t&&M(t)}}else M(null)};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[y]),(0,n.useEffect)(()=>{const e=e=>{F.current&&!F.current.contains(e.target)&&D(null)};return null!==P?document.addEventListener("mousedown",e):document.removeEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[P]),(0,n.useEffect)(()=>{C||S||!(y.length>0)||W||j.current||($.current=Date.now(),"true"===sessionStorage.getItem("mp_skip_page_view")?sessionStorage.removeItem("mp_skip_page_view"):(0,h.oe)({category:"addons_page",itemName:"Addons Page",contentReceivedAt:B.current,contentRenderedAt:$.current,isCached:z.current}),j.current=!0)},[C,S,y.length,W]),C)return(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-lg gv-mb-sm",style:{width:"13%"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-fluid",style:{width:"33%"}}),(0,n.createElement)("div",{className:"gv-flex gv-justify-between gv-items-start"},(0,n.createElement)("div",{className:"gv-w-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-sm gv-mb-sm",style:{width:"13%"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-md",style:{width:"33%"}})),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-md",style:{width:"13%"}})),(0,n.createElement)("div",{className:"product-grid gv-grid gv-gap-lg gv-mob-grid-cols-1 gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3 gv-skeleton-loader"},[0,1,2].map(e=>(0,n.createElement)("div",{key:e,className:"gv-card gv-gap-md gv-content-container gv-p-lg gv-grid gv-grid-cols-12 gv-radius"},(0,n.createElement)("div",{className:"gv-desk-span-2 gv-span-3 gv-tab-span-3"},(0,n.createElement)("div",{className:"gv-skeleton gv-icon-tile"})),(0,n.createElement)("div",{className:"gv-desk-span-8 gv-tab-span-7 gv-span-7"},(0,n.createElement)("div",{className:"gv-skeleton gv-mb-xs",style:{height:"20px",width:"70%"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-mb-sm",style:{height:"16px",width:"100%"}}),(0,n.createElement)("div",{className:"gv-skeleton",style:{height:"16px",width:"40%"}})),(0,n.createElement)("div",{className:"gv-span-2 gv-content-center gv-text-right"},(0,n.createElement)("div",{className:"gv-skeleton",style:{height:"24px",width:"24px"}}))))),(0,n.createElement)("div",{className:"gv-data-table gv-mt-lg gv-overflow-x-auto gv-skeleton-loader"},(0,n.createElement)("table",{className:"gv-col-5-shrink gv-col-6-shrink"},(0,n.createElement)("thead",null,(0,n.createElement)("tr",null,(0,n.createElement)("th",{scope:"col"}),(0,n.createElement)("th",{scope:"col"},(0,n.createElement)("div",{className:"gv-skeleton",style:{height:"16px",width:"50px"}})),(0,n.createElement)("th",{scope:"col"},(0,n.createElement)("div",{className:"gv-skeleton",style:{height:"16px",width:"50px"}})),(0,n.createElement)("th",{scope:"col"},(0,n.createElement)("div",{className:"gv-skeleton",style:{height:"16px",width:"50px"}})),(0,n.createElement)("th",{scope:"col"}))),(0,n.createElement)("tbody",null,[0,1].map(e=>(0,n.createElement)("tr",{key:e},(0,n.createElement)("td",{style:{width:"80px"}},(0,n.createElement)("div",{className:"gv-skeleton gv-icon-tile"})),(0,n.createElement)("td",null,(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})),(0,n.createElement)("td",null,(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})),(0,n.createElement)("td",null,(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})),(0,n.createElement)("td",null,(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm",style:{width:"24px"}}))))))));if(S)return(0,n.createElement)(u.A,null);if(!A("6.2"))return(0,n.createElement)(p.A,null);const H=y.filter(e=>e.installed||I(e));return(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col"},(0,n.createElement)("div",{className:"addons-header-wrap"},(0,n.createElement)("h3",null,_?.headings?.myProducts),(0,n.createElement)("p",{className:"gv-text-sm"},_?.text?.myProducts)),T.length>0&&(0,n.createElement)("section",{className:"addons-section gv-mt-fluid"},(0,n.createElement)("div",{className:"addons-header-container gv-flex gv-max-mob-flex-col gv-justify-between gv-items-start gv-tab-gap-lg"},(0,n.createElement)("div",{className:"heading-container gv-flex-1"},(0,n.createElement)("p",{className:"gv-text-bold gv-text-lg gv-mb-xs"},_?.headings?.recommendedProducts),(0,n.createElement)("p",{className:"gv-text-sm gv-mb-md"},_?.text?.recommendedText)),(0,n.createElement)("button",{className:"gv-button gv-button-primary gv-mode-condensed gv-flex-shrink-0",onClick:()=>{const e="undefined"!=typeof window&&window.marketplaceConfig?.wpConfig?.adminUrl?window.marketplaceConfig.wpConfig.adminUrl:"/wp-admin/";window.location.href=`${e}admin.php?page=onecom-marketplace`}},_.seeAllProducts,(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}arrow_right.svg`,alt:"See all products"}))),(0,n.createElement)("div",{className:"product-grid gv-grid gv-gap-lg gv-mob-grid-cols-1 gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3 gv-mt-md"},T.map(e=>{I(e);const t=e.i18n.freeTrialPeriod&&""!==e.i18n.freeTrialPeriod.trim()?e.i18n.freeTrialPeriod:_?.labels?.free||"Free",r=(0,o.M)(e,t,_),i=(0,o.Tc)(e),s=(0,o.Dn)(e);return(0,n.createElement)("div",{key:e.slug,className:"gv-card gv-gap-md gv-content-container gv-p-lg gv-grid gv-grid-cols-12 gv-radius"},(0,n.createElement)("div",{className:"gv-desk-span-2 gv-span-3 gv-tab-span-3"},(0,n.createElement)("img",{className:"gv-icon-tile",src:e.iconUrl||`${V}add_box.svg`,alt:e.name,style:{maxwidth:"auto"}})),(0,n.createElement)("div",{className:"gv-desk-span-8 gv-tab-span-7 gv-span-7"},(0,n.createElement)("p",{className:"gv-text-sm gv-text-bold gv-mb-xs"},e.name),(0,n.createElement)("p",{className:"oc-card-content gv-text-on-alternative gv-mb-sm gv-text-sm"},e.i18n.listingDescription||e.i18n.subtitle),(0,n.createElement)("span",{className:"gv-caption-lg gv-text-bold"},(0,n.createElement)(n.Fragment,null,"premium"===e.licenseType&&s>0?null!==s?s:i:r,"free"!==e.licenseType&&r&&r!==t&&r!==(_?.labels?.freeUntilRenewal||"Free until renewal")&&(0,n.createElement)("span",{className:"gv-period"},"/",_?.labels?.timeMonth)))),(0,n.createElement)("div",{className:"gv-span-2 gv-content-center gv-text-right"},(0,n.createElement)("a",{href:(a=e.slug,`${"undefined"!=typeof window&&window.marketplaceConfig?.wpConfig?.adminUrl?window.marketplaceConfig.wpConfig.adminUrl:"/wp-admin/"}admin.php?page=onecom-marketplace&plugin=${a}`),className:"gv-reset-button",style:{display:"inline-block"},"aria-label":`View details for ${e.name}`},(0,n.createElement)("img",{className:"gv-tile",src:`${V}arrow_forward.svg`,alt:`View ${e.name} details`,style:{minWidth:"24px"}}))));var a}))),H.length>0&&(0,n.createElement)("section",{className:"addons-section gv-mt-fluid"},(0,n.createElement)("div",{className:"gv-data-table gv-mt-lg gv-addons-table"},(0,n.createElement)("table",{className:"gv-col-5-shrink gv-col-6-shrink"},(0,n.createElement)("thead",null,(0,n.createElement)("tr",null,(0,n.createElement)("th",{scope:"col"}),(0,n.createElement)("th",{scope:"col"},_?.labels?.name),(0,n.createElement)("th",{scope:"col"},_?.labels?.type),(0,n.createElement)("th",{scope:"col"},_?.labels?.status),(0,n.createElement)("th",{scope:"col"}),(0,n.createElement)("th",{scope:"col"}))),(0,n.createElement)("tbody",null,H.map((e,t)=>{const r=I(e);return(0,n.createElement)("tr",{id:e.slug,key:e.slug},(0,n.createElement)("td",{style:{width:"80px"}},(0,n.createElement)("img",{src:e.iconUrl||`${V}add_box.svg`,alt:e.name,className:"gv-icon-tile",style:{maxWidth:"auto"}})),(0,n.createElement)("td",null,e.name),(0,n.createElement)("td",null,"free"===e.licenseType?_?.labels?.freePlugin:_?.labels?.premiumPlugin),(0,n.createElement)("td",null,(0,n.createElement)("div",{className:"gv-text-indicator"},(0,n.createElement)("span",{className:e.activated?"gv-indicator gv-state-positive":"gv-indicator gv-state-informative"}),(0,n.createElement)("span",null," ",e.activated?_?.labels?.active||"Active":r?_?.labels?.notInstalled||"Not Installed":_?.labels?.notActive||"Not Active"))),(0,n.createElement)("td",null,r?(0,n.createElement)("a",{href:"#",className:"gv-action",onClick:t=>{t.preventDefault();const r=new CustomEvent("onecom-plugin-provision",{detail:{slug:e.slug},bubbles:!0,cancelable:!0,composed:!0});document.dispatchEvent(r)}},_?.installAndActivate||"Install and activate"):!e.activated&&(0,n.createElement)("a",{href:"#",className:"gv-action",onClick:t=>{t.preventDefault(),k("activate",e,"addons")}},_?.activateButton||"Activate")),(0,n.createElement)("td",null,(e.activated||e.installed&&!r)&&(0,n.createElement)("div",{className:"gv-pos-relative",ref:P===t?F:null},(0,n.createElement)("button",{type:"button","aria-label":"Toggle menu",className:"gv-reset-button",onClick:()=>D(P===t?null:t)},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}more_horiz.svg`})),(0,n.createElement)("div",{className:"gv-contextual-menu gv-pos-right "+(P===t?"":"gv-invisible")},(0,n.createElement)("div",{className:"gv-menu"},(0,n.createElement)("button",{type:"button",className:"gv-btn-close","aria-label":"Close",onClick:()=>D(null)},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}close.svg`})),(0,n.createElement)("ul",null,e.activated&&(0,n.createElement)("li",{className:"gv-mb-0"},(0,n.createElement)("a",{href:"#",className:"gv-menu-item",onClick:t=>{t.preventDefault(),D(null),(e=>{"undefined"!=typeof window&&window.marketplaceConfig?.data_consent_status&&(0,h.Mh)({buttonName:"Manage",buttonAction:"manage_product",context:{product_slug:e.slug,product_name:e.name,has_redirect_url:!(!e.redirectUrl||""===e.redirectUrl.trim()),has_onboarding_url:!(!e.onboardingUrl||""===e.onboardingUrl.trim())}});const t=(0,d.v)(e,!1);(0,d.J)(t)})(e)}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}settings.svg`}),(0,n.createElement)("span",null,_?.labels?.manage||"Manage"))),e.activated&&(0,n.createElement)("li",{className:"gv-mb-0"},(0,n.createElement)("a",{href:"#",className:"gv-menu-item",onClick:t=>{t.preventDefault(),D(null),k("deactivate",e,"addons")}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}cancel.svg`}),(0,n.createElement)("span",null,_?.deactivate||"Deactivate"))),(0,n.createElement)("li",{className:"gv-mb-0"},!e.activated&&e.installed&&(0,n.createElement)("a",{href:"#",className:"gv-menu-item",onClick:t=>{t.preventDefault(),D(null),k("delete",e,"addons")}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${V}cancel.svg`}),(0,n.createElement)("span",null,_?.deleteButton||"Delete")))))))))}))))),(0,n.createElement)(c.A,null),(0,n.createElement)(l.A,null),R&&!W&&(()=>{const e=(t=R)&&"seo-by-rank-math"===t.slug?a.A:s.A;var t;return(0,n.createElement)(e,{plugin:R,onClose:()=>M(null),loading:C})})())}},3804:(e,t,r)=>{"use strict";r(4915),Object.create(null)},4469:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(1609),i=r(7979),o=r(7008),s=r(3220);function a({plugin:e}){const{assetsBaseUrl:t,noticeState:r,setNoticeState:a,handlePluginAction:c,cancelReload:l,uiI18n:u}=(0,i.D)();if(!r||!r.visible||r.pluginSlug!==e?.slug)return null;const p=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",h=p?`${p}assets/`:"",d="installed"===r.type,f="activated"===r.type,g=(e,t)=>e?e.replace("{0}",t||""):"",m=e?.name||"";return(0,n.createElement)("div",{className:"gv-notice gv-notice-success gv-p-lg gv-max-mob-pt-lg gv-mb-0 gv-mt-lg",style:{gridColumn:"1 / -1",width:"100%"}},(0,n.createElement)("img",{className:"gv-notice-icon",src:`${h}icons/success.svg`,alt:"Success"}),(0,n.createElement)("div",{className:"gv-notice-content"},(0,n.createElement)("div",{className:"gv-notice-title"},d&&g(u?.notifications?.pluginInstalled||"Plugin was installed.",m),f&&g(u?.notifications?.pluginActivated||"Plugin was activated.",m)),(0,n.createElement)("p",{className:"gv-text-sm"},d&&(u?.notifications?.activateNow||"Activate it now to start using it."),f&&g(u?.notifications?.manageInMyProducts||"{0} plugin was activated for this site. You can manage it on the My products page.",m))),d&&(0,n.createElement)("button",{type:"button",className:"gv-action gv-button gv-button-neutral",onClick:()=>{c("activate",e,"product_detail")}},u?.activatePluginButton),f&&(0,n.createElement)("button",{type:"button",className:"gv-action gv-button gv-button-neutral",onClick:()=>{(0,o.Mh)({buttonName:"Get started",buttonAction:"manage_product",plugin:e,context:{product_slug:e.slug,product_name:e.name,has_redirect_url:!(!e.redirectUrl||""===e.redirectUrl.trim()),has_onboarding_url:!(!e.onboardingUrl||""===e.onboardingUrl.trim())}}),l();const t=(0,s.v)(e,!0);(0,s.J)(t)}},(0,n.createElement)("span",null,u?.featuredCta||"Get Started"),(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${h}icons/arrow_forward.svg`})),(0,n.createElement)("button",{type:"button",className:"gv-notice-close","aria-label":"Close",onClick:()=>{a({visible:!1,type:null,pluginSlug:null}),sessionStorage.removeItem("mp_success_notice")}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${h}icons/close.svg`})))}},4598:(e,t,r)=>{"use strict";r.d(t,{A:()=>u});var n=r(1609),i=r(5795),o=r(1338),s=r(4469),a=r(4677),c=r(7979),l=r(488);function u({plugin:e,onClose:t,usePortal:r=!0,loading:u=!1}){const{assetsBaseUrl:p,useWPHandlers:h,pluginInAction:d,uiI18n:f,subscriptionStatus:g,isCheckingSubscription:m,setNoticeState:v,setErrorState:y}=(0,c.D)(),b=p||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",_=b?`${b}assets/icons/`:"";if(u){const e=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-p-0 gv-product-single gv-w-max-container gv-mx-auto gv-p-fluid"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-flex-col gv-items-start"},(0,n.createElement)("div",{className:"gv-flex gv-items-center gv-gap-xs"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"60px"}}))),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-sm gv-text-sm"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-lg gv-mb-sm",style:{marginBottom:"24px"}}),(0,n.createElement)("div",{className:"gv-skeleton"}),(0,n.createElement)("div",{className:"gv-skeleton"}),(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"80%"}})),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full",style:{marginTop:"75px"}},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-1 gv-area-table"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-table",role:"table"},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0 oc-border-none",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"70%"}})),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"120px",height:"32px"}})),(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mt-md"}))))),(0,n.createElement)("div",{className:"gv-section oc-left-border-0",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md",style:{width:"150px"}}))),[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-w-full"})))))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"180px"}}),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},[...Array(3)].map((e,t)=>(0,n.createElement)("li",{key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})))))),(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"250px"}}),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-xs"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"}))))))));return r?(0,i.createPortal)(e,document.body):e}if(!e)return null;(0,n.useEffect)(()=>{window.scrollTo(0,0)},[e]),(0,n.useEffect)(()=>{v(t=>t.visible&&t.pluginSlug===e.slug?t:{visible:!1,type:null,pluginSlug:null}),y(t=>t.visible&&t.pluginSlug===e.slug?t:{visible:!1,type:null,pluginSlug:null})},[e.slug,v,y]),(0,n.useEffect)(()=>{const e=()=>{v({visible:!1,type:null,pluginSlug:null}),y({visible:!1,type:null,pluginSlug:null})};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[v,y]),void 0!==window.onecomWpVars&&window.onecomWpVars,e.thumbnail;const w=e.bannerUrl||e.image||e.thumbnail||"https://gravity.group.one/guide-images/product-image@2x.png",k=e.name||"Product",S=e.i18n?.description||e.i18n?.subtitle||e.description||e.shortDescription||"No description available.",x=e.i18n?.subtitle,C="free"===e.licenseType,E=e.i18n?.freeTrialText||"",I=E&&""!==E.trim(),O=e.i18n?.freeTrialPeriod||"",N=O&&""!==O.trim(),A=N||I?f?.headings?.freeTrial||"Free trial*":(0,l.M)(e,f?.labels?.free||"Free",f),R=A===(f?.labels?.freeUntilRenewal||"Free until renewal"),M=(0,l.Tc)(e),T=(0,l.Dn)(e),L=(e,t)=>{if(!e||"object"!=typeof e)return[];const r=[];let n=1;for(;e[`${t}${n}`];){const i=e[`${t}${n}`];i&&""!==i.trim()&&r.push(i),n++}return r},P=L(e.i18n,"keyBenefitContent"),D=L(e.i18n,"keyFeatureContent"),F=[];if(e.i18n&&"object"==typeof e.i18n){let t=1;for(;e.i18n[`coreFeatureTitle${t}`]||e.i18n[`coreFeatureContent${t}`];){const r=e.i18n[`coreFeatureTitle${t}`],n=e.i18n[`coreFeatureContent${t}`];r&&""!==r.trim()&&n&&""!==n.trim()&&F.push({name:r,desc:n}),t++}}const U=D,j=P,B=F,$=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-p-0 gv-product-single gv-w-max-container gv-mx-auto gv-p-fluid"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-flex-col gv-items-start"},(0,n.createElement)("a",{href:"#",onClick:r=>{if(r.preventDefault(),!d[e.slug])if("undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()},className:"gv-flex gv-items-center gv-gap-xs",role:"button","aria-label":"Go back",style:{opacity:d[e.slug]?.5:1,pointerEvents:d[e.slug]?"none":"auto",cursor:d[e.slug]?"not-allowed":"pointer"},"aria-disabled":d[e.slug]?"true":"false"},(0,n.createElement)("img",{style:{minWidth:"24px"},className:"gv-tile",src:`${_}arrow_back.svg`,alt:"Back to plugins"}),(0,n.createElement)("span",null,f.backButton)),(0,n.createElement)(s.A,{plugin:e}),(0,n.createElement)(a.A,{plugin:e})),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-md gv-text-sm"},(0,n.createElement)("h3",{className:"gv-title gv-header-lg"},k),(0,n.createElement)("p",{className:"gv-text-sm"},S)),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:`${w} 1x, ${w} 2x`}),(0,n.createElement)("img",{src:w,srcSet:`${w} 1x, ${w} 2x`,alt:`${k} image`})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-1 gv-area-table"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-table",role:"table"},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0 oc-border-none",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},k),(0,n.createElement)("p",null,x)),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},N||I?(0,n.createElement)("span",{className:"gv-price-text"},A):(0,n.createElement)(n.Fragment,null,(0,n.createElement)("span",{className:"gv-price-text"},"premium"===e.licenseType&&null!==T?null!==T?T:M:A),!C&&!R&&A&&(0,n.createElement)("span",{className:"gv-period"},"/",f?.labels?.timeMonth))),N||I?(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},E)):!C&&A&&M&&null!==T&&(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},f.labels.untilRenewal," [",T,"]/",f?.labels?.timeMonth),(0,n.createElement)("div",{className:"gv-info"},f.labels.afterThat," [",M,"]/",f?.labels?.timeMonth))),h?(0,n.createElement)(o.A,{plugin:e}):e.download&&(0,n.createElement)("a",{href:e.download,download:!0,className:"gv-button gv-button-secondary"},"Download"))))),U.length>0&&(0,n.createElement)("div",{className:"gv-section oc-left-border-0",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},f?.keyFeatureHeading||e.i18n?.keyFeatureHeading))),U.map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},e)))))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},j.length>0&&(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},f?.benefitHeading||e.i18n?.benefitHeading||"Key benefits"),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},j.map((e,t)=>(0,n.createElement)("li",{key:t},e))))),B.length>0&&(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},f?.featureOverviewHeading||e.i18n?.featureOverviewHeading||"Core features overview"),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},B.map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("h3",{className:"gv-title gv-text-bold gv-text-lg"},e.name),(0,n.createElement)("p",{className:"gv-text-sm"},e.desc))))))));return r?(0,i.createPortal)($,document.body):$}},4677:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o({plugin:e}){const{assetsBaseUrl:t,errorState:r,setErrorState:o,uiI18n:s,plugins:a}=(0,i.D)(),c=e||a.find(e=>e.slug===r.pluginSlug),l=r&&r.visible&&r.pluginSlug===c?.slug;if((0,n.useEffect)(()=>{if(l){const e=setTimeout(()=>{h()},5e3);return()=>clearTimeout(e)}},[l]),!l)return null;const u=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",p=u?`${u}assets/`:"",h=()=>{o({visible:!1,type:null,pluginSlug:null})},d="activate"===r.type,f="deactivate"===r.type,g="install"===r.type,m="delete"===r.type,v=(e,t)=>e?e.replace("{0}",t||""):"",y=c?.name||"";return(0,n.createElement)("div",{className:"gv-toast-container"},(0,n.createElement)("div",{className:"gv-toast gv-toast-alert gv-visible"},(0,n.createElement)("gv-icon",{className:"gv-notice-icon","aria-hidden":"true",src:`${p}icons/error.svg`}),(0,n.createElement)("div",{className:"gv-toast-content"},d&&v(s?.notifications?.pluginActivationFailed||"Couldn't activate plugin.",y),f&&v(s?.notifications?.pluginDeactivationFailed||"Couldn't deactivate plugin.",y),g&&v(s?.notifications?.pluginInstallationFailed||"Couldn't install plugin.",y),m&&v(s?.notifications?.pluginDeletionFailed||"Couldn't delete plugin.",y)),(0,n.createElement)("button",{type:"button",className:"gv-toast-close","aria-label":"Close",onClick:h},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${p}icons/close.svg`}))))}},4800:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o({plugin:e}){const{assetsBaseUrl:t,successState:r,setSuccessState:o,uiI18n:s,plugins:a}=(0,i.D)(),c=e||a.find(e=>e.slug===r.pluginSlug),l=r&&r.visible&&r.pluginSlug===c?.slug;if((0,n.useEffect)(()=>{if(l){const e=setTimeout(()=>{h()},5e3);return()=>clearTimeout(e)}},[l]),!l)return null;const u=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",p=u?`${u}assets/`:"",h=()=>{o({visible:!1,type:null,pluginSlug:null})},d="activate"===r.type,f="deactivate"===r.type,g="delete"===r.type,m=(e,t)=>e?e.replace("{0}",t||""):"",v=c?.name||"";return(0,n.createElement)("div",{className:"gv-toast-container"},(0,n.createElement)("div",{className:"gv-toast gv-toast-success gv-visible"},(0,n.createElement)("gv-icon",{className:"gv-notice-icon","aria-hidden":"true",src:`${p}icons/check_circle.svg`}),(0,n.createElement)("div",{className:"gv-toast-content"},d&&m(s?.notifications?.pluginActivatedShort||"Plugin activated.",v),f&&m(s?.notifications?.pluginDeactivated||"Plugin deactivated.",v),g&&m(s?.notifications?.pluginDeleted||"Plugin deleted successfully.",v)),(0,n.createElement)("button",{type:"button",className:"gv-toast-close","aria-label":"Close",onClick:h},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${p}icons/close.svg`}))))}},4811:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Actualiser la page","ui.notifications.couldNotLoad":"Impossible de charger la page","ui.notifications.refreshPage":"Veuillez rafraîchir la page et contact notre support si le problème persiste."}')},4814:(e,t,r)=>{"use strict";r(1609),r(3804),r(9454),r(7565)},4915:e=>{e.exports={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}},5036:(e,t,r)=>{"use strict";var n=r(2635),i=r(8291),o=r(7823),s=r(8491),a=r(5205),c=r(3591),l=r(3461),u=r(4811),p=r(7529),h=r(1199),d=r(333);const f={en_GB:{translation:o},da_DK:{translation:s},de_DE:{translation:a},es_ES:{translation:c},fi_FI:{translation:l},fr_FR:{translation:u},it_IT:{translation:p},nl_NL:{translation:h},no_NO:{translation:d},nb_NO:{translation:d},pt_PT:{translation:r(5383)},sv_SE:{translation:r(8300)},fi:{translation:l}};n.default.use(i.r9).init({resources:f,lng:"en_GB",fallbackLng:"en_GB",interpolation:{escapeValue:!1}})},5205:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Seite aktualisieren","ui.notifications.couldNotLoad":"Die Seite konnte nicht geladen werden","ui.notifications.refreshPage":"Bitte aktualisieren Sie die Seite und Kontakt Sie unser Support, falls das Problem weiterhin besteht."}')},5383:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Atualizar página","ui.notifications.couldNotLoad":"Não foi possível carregar a página","ui.notifications.refreshPage":"Atualize a página e contacte a nossa equipa de suporte se o problema persistir."}')},5795:e=>{"use strict";e.exports=window.ReactDOM},6255:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(1609),i=r(3699),o=r(3526),s=r(7979);const a=({apiBaseUrl:e,useWPHandlers:t,wpConfig:r,enableDefaultStyles:a,assetsBaseUrl:c})=>(0,n.createElement)(s.t,{apiBaseUrl:e,useWPHandlers:t,wpConfig:r,enableDefaultStyles:a,assetsBaseUrl:c},(0,n.createElement)(o.A,null),(0,n.createElement)("div",{className:"gv-activated"},(0,n.createElement)("div",{className:"marketplace-container gv-layout-product gv-w-max-container gv-mx-auto gv-p-fluid"},(0,n.createElement)(i.A,null))))},6530:()=>{var e=Object.defineProperty,t=(t,r,n)=>(((t,r,n)=>{r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n})(t,"symbol"!=typeof r?r+"":r,n),n);const r={};async function n(e){if(r.hasOwnProperty(e))return r[e];let t;return t=e.startsWith("data:")||!("caches"in self)?fetch(e).then(e=>e.text()):caches.open("gravity").then(async t=>{let r=await t.match(e);return r||(r=await fetch(e),r.ok&&await t.put(e,r.clone())),r.text()}),r[e]=t,t}class i extends HTMLElement{static get observedAttributes(){return["src"]}fetchFlag(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchFlag(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchFlag(r)}}t(i,"TAG_NAME","gv-flag");class o extends HTMLElement{static get observedAttributes(){return["src"]}fetchIcon(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIcon(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIcon(r)}}t(o,"TAG_NAME","gv-icon");class s extends HTMLElement{static get observedAttributes(){return["src"]}fetchIllustration(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIllustration(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIllustration(r)}}t(s,"TAG_NAME","gv-illustration");class a extends HTMLElement{static get observedAttributes(){return["src"]}fetchIndicator(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIndicator(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIndicator(r)}}t(a,"TAG_NAME","gv-indicator");class c extends HTMLElement{static get observedAttributes(){return["src"]}fetchLoader(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchLoader(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchLoader(r)}}t(c,"TAG_NAME","gv-loader");class l extends HTMLElement{static get observedAttributes(){return["src"]}fetchLogo(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchLogo(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchLogo(r)}}t(l,"TAG_NAME","gv-logo");class u extends HTMLElement{static get observedAttributes(){return["src"]}fetchPayIcon(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchPayIcon(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchPayIcon(r)}}t(u,"TAG_NAME","gv-pay-icon");class p extends HTMLElement{static get observedAttributes(){return["src"]}fetchTile(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchTile(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchTile(r)}}function h(e,t){customElements.get(e)||customElements.define(e,t)}t(p,"TAG_NAME","gv-tile"),h(i.TAG_NAME,i),h(o.TAG_NAME,o),h(s.TAG_NAME,s),h(a.TAG_NAME,a),h(c.TAG_NAME,c),h(l.TAG_NAME,l),h(u.TAG_NAME,u),h(p.TAG_NAME,p)},6751:(e,t,r)=>{"use strict";var n;if(r.d(t,{A:()=>Hd}),"undefined"==typeof window){var i={hostname:""};n={crypto:{randomUUID:function(){throw Error("unsupported")}},navigator:{userAgent:"",onLine:!0},document:{createElement:function(){return{}},location:i,referrer:""},screen:{width:0,height:0},location:i,addEventListener:function(){},removeEventListener:function(){}}}else n=window;function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(i[r]=e[r]);return i}function g(e,t){return g=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},g(e,t)}function m(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function v(e){var t="function"==typeof Map?new Map:void 0;return v=function(e){if(null===e||(r=e,-1===Function.toString.call(r).indexOf("[native code]")))return e;var r;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,n)}function n(){return c(e,arguments,p(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),g(n,e)},v(e)}function y(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(y=function(){return!!e})()}function b(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(r):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,t):void 0}}(e))||t){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _(e,t){var r,n,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;s;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,n=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}var k,S=Object.defineProperty,x=function(e,t,r){return function(e,t,r){return t in e?S(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},C=Object.defineProperty,E=function(e,t,r){return function(e,t,r){return t in e?C(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},I=function(e){return e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e}(I||{}),O={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},N={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},A={};function R(e){if(A[e])return A[e];var t=globalThis[e],r=t.prototype,n=e in O?O[e]:void 0,i=Boolean(n&&n.every(function(e){var t,n;return Boolean(null==(n=null==(t=Object.getOwnPropertyDescriptor(r,e))?void 0:t.get)?void 0:n.toString().includes("[native code]"))})),o=e in N?N[e]:void 0,s=Boolean(o&&o.every(function(e){var t;return"function"==typeof r[e]&&(null==(t=r[e])?void 0:t.toString().includes("[native code]"))}));if(i&&s&&!globalThis.Zone)return A[e]=t.prototype,t.prototype;try{var a=document.createElement("iframe");document.body.appendChild(a);var c=a.contentWindow;if(!c)return t.prototype;var l=c[e].prototype;return document.body.removeChild(a),l?A[e]=l:r}catch(e){return r}}var M={};function T(e,t,r){var n,i=e+"."+String(r);if(M[i])return M[i].call(t);var o=R(e),s=null==(n=Object.getOwnPropertyDescriptor(o,r))?void 0:n.get;return s?(M[i]=s,s.call(t)):t[r]}var L=function(e){return T("Node",e,"childNodes")},P=function(e){return T("Node",e,"parentNode")},D=function(e){return T("Node",e,"parentElement")},F=function(e){return T("Node",e,"textContent")},U=function(e){return e&&"host"in e?T("ShadowRoot",e,"host"):null},j=function(e){return e&&"shadowRoot"in e?T("Element",e,"shadowRoot"):null};function B(e){return e.nodeType===e.ELEMENT_NODE}function $(e){var t=e&&"host"in e&&"mode"in e&&U(e)||null;return Boolean(t&&"shadowRoot"in t&&j(t)===e)}function z(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function q(e){try{var t=e.rules||e.cssRules;if(!t)return null;var r=e.href;return!r&&e.ownerNode&&e.ownerNode.ownerDocument&&(r=e.ownerNode.ownerDocument.location.href),(n=Array.from(t,function(e){return V(e,r)}).join("")).includes(" background-clip: text;")&&!n.includes(" -webkit-background-clip: text;")&&(n=n.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),n}catch(e){return null}var n}function V(e,t){if(function(e){return"styleSheet"in e}(e)){var r;try{r=q(e.styleSheet)||function(e){var t=e.cssText;if(t.split('"').length<3)return t;var r=["@import","url("+JSON.stringify(e.href)+")"];return""===e.layerName?r.push("layer"):e.layerName&&r.push("layer("+e.layerName+")"),e.supportsText&&r.push("supports("+e.supportsText+")"),e.media.length&&r.push(e.media.mediaText),r.join(" ")+";"}(e)}catch(t){r=e.cssText}return e.styleSheet.href?te(r,e.styleSheet.href):r}var n,i=e.cssText;return function(e){return"selectorText"in e}(e)&&e.selectorText.includes(":")&&(n=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm,i=i.replace(n,"$1\\$2")),t?te(i,t):i}var W=function(){function e(){E(this,"idNodeMap",new Map),E(this,"nodeMetaMap",new WeakMap)}var t=e.prototype;return t.getId=function(e){var t;if(!e)return-1;var r=null==(t=this.getMeta(e))?void 0:t.id;return null!=r?r:-1},t.getNode=function(e){return this.idNodeMap.get(e)||null},t.getIds=function(){return Array.from(this.idNodeMap.keys())},t.getMeta=function(e){return this.nodeMetaMap.get(e)||null},t.removeNodeFromMap=function(e){var t=this,r=this.getId(e);this.idNodeMap.delete(r),e.childNodes&&e.childNodes.forEach(function(e){return t.removeNodeFromMap(e)})},t.has=function(e){return this.idNodeMap.has(e)},t.hasNode=function(e){return this.nodeMetaMap.has(e)},t.add=function(e,t){var r=t.id;this.idNodeMap.set(r,e),this.nodeMetaMap.set(e,t)},t.replace=function(e,t){var r=this.getNode(e);if(r){var n=this.nodeMetaMap.get(r);n&&this.nodeMetaMap.set(t,n)}this.idNodeMap.set(e,t)},t.reset=function(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap},e}();function H(e){var t=e.element,r=e.maskInputOptions,n=e.tagName,i=e.type,o=e.value,s=e.maskInputFn,a=o||"",c=i&&G(i);return(r[n.toLowerCase()]||c&&r[c])&&(a=s?s(a,t):"*".repeat(a.length)),a}function G(e){return e.toLowerCase()}var K="__rrweb_original__";function J(e){var t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?G(t):null}function Y(e,t){var r;try{r=new URL(e,null!=t?t:window.location.href)}catch(e){return null}var n,i=r.pathname.match(/\.([0-9a-z]+)(?:$)/i);return null!=(n=null==i?void 0:i[1])?n:null}var Z=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,X=/^(?:[a-z+]+:)?\/\//i,Q=/^www\..*/i,ee=/^(data:)([^,]*),(.*)/i;function te(e,t){return(e||"").replace(Z,function(e,r,n,i,o,s){var a,c=n||o||s,l=r||i||"";if(!c)return e;if(X.test(c)||Q.test(c))return"url("+l+c+l+")";if(ee.test(c))return"url("+l+c+l+")";if("/"===c[0])return"url("+l+(((a=t).indexOf("//")>-1?a.split("/").slice(0,3).join("/"):a.split("/")[0]).split("?")[0]+c)+l+")";var u=t.split("/"),p=c.split("/");u.pop();for(var h,d=b(p);!(h=d()).done;){var f=h.value;"."!==f&&(".."===f?u.pop():u.push(f))}return"url("+l+u.join("/")+l+")"})}function re(e,t){return void 0===t&&(t=!1),t?e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,""):e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,"").replace(/0px/g,"0")}var ne,ie,oe=1,se=new RegExp("[^a-z0-9-_:]");function ae(){return oe++}var ce=/^[^ \t\n\r\u000c]+/,le=/^[, \t\n\r\u000c]+/,ue=new WeakMap;function pe(e,t){return t&&""!==t.trim()?he(e,t):t}function he(e,t){var r=ue.get(e);if(r||(r=e.createElement("a"),ue.set(e,r)),t){if(t.startsWith("blob:")||t.startsWith("data:"))return t}else t="";return r.setAttribute("href",t),r.href}function de(e,t,r,n){return n?"src"===r||"href"===r&&("use"!==t||"#"!==n[0])||"xlink:href"===r&&"#"!==n[0]?pe(e,n):"background"!==r||"table"!==t&&"td"!==t&&"th"!==t?"srcset"===r?function(e,t){if(""===t.trim())return t;var r=0;function n(e){var n,i=e.exec(t.substring(r));return i?(n=i[0],r+=n.length,n):""}for(var i=[];n(le),!(r>=t.length);){var o=n(ce);if(","===o.slice(-1))o=pe(e,o.substring(0,o.length-1)),i.push(o);else{var s="";o=pe(e,o);for(var a=!1;;){var c=t.charAt(r);if(""===c){i.push((o+s).trim());break}if(a)")"===c&&(a=!1);else{if(","===c){r+=1,i.push((o+s).trim());break}"("===c&&(a=!0)}s+=c,r+=1}}}return i.join(", ")}(e,n):"style"===r?te(n,he(e)):"object"===t&&"data"===r?pe(e,n):n:pe(e,n):n}function fe(e,t,r){return("video"===e||"audio"===e)&&"autoplay"===t}function ge(e,t,r){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return!!r&&ge(P(e),t,r);for(var n=e.classList.length;n--;){var i=e.classList[n];if(t.test(i))return!0}return!!r&&ge(P(e),t,r)}function me(e,t,r,n){var i;if(B(e)){if(!L(i=e).length)return!1}else{if(null===D(e))return!1;i=D(e)}try{if("string"==typeof t){if(n){if(i.closest("."+t))return!0}else if(i.classList.contains(t))return!0}else if(ge(i,t,n))return!0;if(r)if(n){if(i.closest(r))return!0}else if(i.matches(r))return!0}catch(e){}return!1}function ve(e,t){var r=t.doc,n=t.mirror,i=t.blockClass,o=t.blockSelector,s=t.needsMask,a=t.inlineStylesheet,c=t.maskInputOptions,l=void 0===c?{}:c,u=t.maskTextFn,p=t.maskInputFn,h=t.dataURLOptions,f=void 0===h?{}:h,g=t.inlineImages,m=t.recordCanvas,v=t.keepIframeSrcFn,y=t.newlyAddedElement,b=void 0!==y&&y,_=t.cssCaptured,w=void 0!==_&&_,k=function(e,t){if(t.hasNode(e)){var r=t.getId(e);return 1===r?void 0:r}}(r,n);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:I.Document,childNodes:[],compatMode:e.compatMode}:{type:I.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:I.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:k};case e.ELEMENT_NODE:return function(e,t){for(var r,n=t.doc,i=t.inlineStylesheet,o=t.maskInputOptions,s=void 0===o?{}:o,a=t.maskInputFn,c=t.dataURLOptions,l=void 0===c?{}:c,u=t.inlineImages,p=t.recordCanvas,h=t.keepIframeSrcFn,f=t.newlyAddedElement,g=void 0!==f&&f,m=t.rootId,v=function(e,t,r){try{if("string"==typeof t){if(e.classList.contains(t))return!0}else for(var n=e.classList.length;n--;){var i=e.classList[n];if(t.test(i))return!0}if(r)return e.matches(r)}catch(e){}return!1}(e,t.blockClass,t.blockSelector),y=function(e){if(d(e,HTMLFormElement))return"form";var t=G(e.tagName);return se.test(t)?"div":t}(e),b={},_=e.attributes.length,w=0;w<_;w++){var k=e.attributes[w];fe(y,k.name,k.value)||(b[k.name]=de(n,y,G(k.name),k.value))}if("link"===y&&i){var S=Array.from(n.styleSheets).find(function(t){return t.href===e.href}),x=null;S&&(x=q(S)),x&&(delete b.rel,delete b.href,b._cssText=x)}if("style"===y&&e.sheet){var C=q(e.sheet);C&&(e.childNodes.length>1&&(C=function(e,t){return function(e,t,r){void 0===r&&(r=!1);var n=Array.from(t.childNodes),i=[],o=0;if(n.length>1&&e&&"string"==typeof e)for(var s=re(e,r),a=s.length/e.length,c=1;c2&&""===h[0]&&""!==n[c-1].textContent)d=s.indexOf(p,1);else if(1===h.length){if(p=p.substring(0,p.length-1),(h=s.split(p)).length<=1)return i.push(e),i;u=101}else u===l.length-1&&(d=s.indexOf(p));if(h.length>=2&&u>100){var f=n[c-1].textContent;if(f&&"string"==typeof f){var g=re(f).length;d=s.indexOf(p,g)}-1===d&&(d=h[0].length)}if(-1!==d){for(var m=Math.floor(d/a);m>0&&m50*n.length)return i.push(e),i;var v=re(e.substring(0,m),r);if(v.length===d){i.push(e.substring(0,m)),e=e.substring(m),s=s.substring(d);break}v.length",T=R.crossOrigin,L=function(){R.removeEventListener("load",L);try{ne.width=R.naturalWidth,ne.height=R.naturalHeight,ie.drawImage(R,0,0),b.rr_dataURL=ne.toDataURL(l.type,l.quality)}catch(e){if("anonymous"!==R.crossOrigin)return R.crossOrigin="anonymous",void(R.complete&&0!==R.naturalWidth?L():R.addEventListener("load",L));console.warn("Cannot inline img src="+M+"! Error: "+e)}"anonymous"===R.crossOrigin&&(T?b.crossOrigin=T:R.removeAttribute("crossorigin"))};R.complete&&0!==R.naturalWidth?L():R.addEventListener("load",L)}if("audio"===y||"video"===y){var P=b;P.rr_mediaState=e.paused?"paused":"played",P.rr_mediaCurrentTime=e.currentTime,P.rr_mediaPlaybackRate=e.playbackRate,P.rr_mediaMuted=e.muted,P.rr_mediaLoop=e.loop,P.rr_mediaVolume=e.volume}if(g||(e.scrollLeft&&(b.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(b.rr_scrollTop=e.scrollTop)),v){var D=e.getBoundingClientRect(),F=D.width,U=D.height;b={class:b.class,rr_width:F+"px",rr_height:U+"px"}}"iframe"!==y||h(b.src)||(e.contentDocument||(b.rr_src=b.src),delete b.src);try{customElements.get(y)&&(r=!0)}catch(e){}return{type:I.Element,tagName:y,attributes:b,childNodes:[],isSVG:(j=e,Boolean("svg"===j.tagName||j.ownerSVGElement)||void 0),needBlock:v,rootId:m,isCustom:r};var j}(e,{doc:r,blockClass:i,blockSelector:o,inlineStylesheet:a,maskInputOptions:l,maskInputFn:p,dataURLOptions:f,inlineImages:g,recordCanvas:m,keepIframeSrcFn:v,newlyAddedElement:b,rootId:k});case e.TEXT_NODE:return function(e,t){var r=t.needsMask,n=t.maskTextFn,i=t.rootId,o=t.cssCaptured,s=P(e),a=s&&s.tagName,c="",l="STYLE"===a||void 0,u="SCRIPT"===a||void 0;return u?c="SCRIPT_PLACEHOLDER":o||(c=F(e),l&&c&&(c=te(c,he(t.doc)))),!l&&!u&&c&&r&&(c=n?n(c,D(e)):c.replace(/[\S]/g,"*")),{type:I.Text,textContent:c||"",rootId:i}}(e,{doc:r,needsMask:s,maskTextFn:u,rootId:k,cssCaptured:w});case e.CDATA_SECTION_NODE:return{type:I.CDATA,textContent:"",rootId:k};case e.COMMENT_NODE:return{type:I.Comment,textContent:F(e)||"",rootId:k};default:return!1}}function ye(e){return null==e?"":e.toLowerCase()}function be(e,t){var r=t.doc,n=t.mirror,i=t.blockClass,o=t.blockSelector,s=t.maskTextClass,a=t.maskTextSelector,c=t.skipChild,l=void 0!==c&&c,u=t.inlineStylesheet,p=void 0===u||u,h=t.maskInputOptions,d=void 0===h?{}:h,f=t.maskTextFn,g=t.maskInputFn,m=t.slimDOMOptions,v=t.dataURLOptions,y=void 0===v?{}:v,_=t.inlineImages,w=void 0!==_&&_,k=t.recordCanvas,S=void 0!==k&&k,x=t.onSerialize,C=t.onIframeLoad,E=t.iframeLoadTimeout,O=void 0===E?5e3:E,N=t.onStylesheetLoad,A=t.stylesheetLoadTimeout,R=void 0===A?5e3:A,M=t.keepIframeSrcFn,T=void 0===M?function(){return!1}:M,D=t.newlyAddedElement,F=void 0!==D&&D,U=t.cssCaptured,q=void 0!==U&&U,V=t.needsMask,W=t.preserveWhiteSpace,H=void 0===W||W;V||(V=me(e,s,a,void 0===V));var G,K=ve(e,{doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,dataURLOptions:y,inlineImages:w,recordCanvas:S,keepIframeSrcFn:T,newlyAddedElement:F,cssCaptured:q});if(!K)return console.warn(e,"not serialized"),null;G=n.hasNode(e)?n.getId(e):function(e,t){if(t.comment&&e.type===I.Comment)return!0;if(e.type===I.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel&&"script"===e.attributes.as||"modulepreload"===e.attributes.rel)||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===Y(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(ye(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===ye(e.attributes.name)||"icon"===ye(e.attributes.rel)||"apple-touch-icon"===ye(e.attributes.rel)||"shortcut icon"===ye(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&ye(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(ye(e.attributes.property).match(/^(og|twitter|fb):/)||ye(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===ye(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===ye(e.attributes.name)||"googlebot"===ye(e.attributes.name)||"bingbot"===ye(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===ye(e.attributes.name)||"generator"===ye(e.attributes.name)||"framework"===ye(e.attributes.name)||"publisher"===ye(e.attributes.name)||"progid"===ye(e.attributes.name)||ye(e.attributes.property).match(/^article:/)||ye(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===ye(e.attributes.name)||"yandex-verification"===ye(e.attributes.name)||"csrf-token"===ye(e.attributes.name)||"p:domain_verify"===ye(e.attributes.name)||"verify-v1"===ye(e.attributes.name)||"verification"===ye(e.attributes.name)||"shopify-checkout-api-token"===ye(e.attributes.name)))return!0}}return!1}(K,m)||!H&&K.type===I.Text&&!K.textContent.replace(/^\s+|\s+$/gm,"").length?-2:ae();var J=Object.assign(K,{id:G});if(n.add(e,J),-2===G)return null;x&&x(e);var Z=!l;if(J.type===I.Element){Z=Z&&!J.needBlock,delete J.needBlock;var X=j(e);X&&z(X)&&(J.isShadowHost=!0)}if((J.type===I.Document||J.type===I.Element)&&Z){m.headWhitespace&&J.type===I.Element&&"head"===J.tagName&&(H=!1);var Q={doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:l,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T,cssCaptured:!1};if(J.type===I.Element&&"textarea"===J.tagName&&void 0!==J.attributes.value);else{J.type===I.Element&&void 0!==J.attributes._cssText&&"string"==typeof J.attributes._cssText&&(Q.cssCaptured=!0);for(var ee,te=b(Array.from(L(e)));!(ee=te()).done;){var re=be(ee.value,Q);re&&J.childNodes.push(re)}}var ne=null;if(B(e)&&(ne=j(e)))for(var ie,oe=b(Array.from(L(ne)));!(ie=oe()).done;){var se=be(ie.value,Q);se&&(z(ne)&&(se.isShadow=!0),J.childNodes.push(se))}}var ce=P(e);return ce&&$(ce)&&z(ce)&&(J.isShadow=!0),J.type===I.Element&&"iframe"===J.tagName&&function(e,t,r){var n=e.contentWindow;if(n){var i,o=!1;try{i=n.document.readyState}catch(e){return}if("complete"===i){var s="about:blank";if(n.location.href!==s||e.src===s||""===e.src)return setTimeout(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}else{var a=setTimeout(function(){o||(t(),o=!0)},r);e.addEventListener("load",function(){clearTimeout(a),o=!0,t()})}}}(e,function(){var t=e.contentDocument;if(t&&C){var r=be(t,{doc:t,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:!1,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T});r&&C(e,r)}},O),J.type===I.Element&&"link"===J.tagName&&"string"==typeof J.attributes.rel&&("stylesheet"===J.attributes.rel||"preload"===J.attributes.rel&&"string"==typeof J.attributes.href&&"css"===Y(J.attributes.href))&&function(e,t,r){var n,i=!1;try{n=e.sheet}catch(e){return}if(!n){var o=setTimeout(function(){i||(t(),i=!0)},r);e.addEventListener("load",function(){clearTimeout(o),i=!0,t()})}}(e,function(){if(N){var t=be(e,{doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:!1,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T});t&&N(e,t)}},R),J}function _e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function we(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){return d(this,e)?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}),r}var ke={exports:{}},Se=String,xe=function(){return{isColorSupported:!1,reset:Se,bold:Se,dim:Se,italic:Se,underline:Se,inverse:Se,hidden:Se,strikethrough:Se,black:Se,red:Se,green:Se,yellow:Se,blue:Se,magenta:Se,cyan:Se,white:Se,gray:Se,bgBlack:Se,bgRed:Se,bgGreen:Se,bgYellow:Se,bgBlue:Se,bgMagenta:Se,bgCyan:Se,bgWhite:Se}};ke.exports=xe(),ke.exports.createColors=xe;var Ce=ke.exports,Ee=we(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"}))),Ie=Ce,Oe=Ee,Ne=function(e){function t(r,n,i,o,s,a){var c;return(c=e.call(this,r)||this).name="CssSyntaxError",c.reason=r,s&&(c.file=s),o&&(c.source=o),a&&(c.plugin=a),void 0!==n&&void 0!==i&&("number"==typeof n?(c.line=n,c.column=i):(c.line=n.line,c.column=n.column,c.endLine=i.line,c.endColumn=i.column)),c.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(c,t),c}h(t,e);var r=t.prototype;return r.setMessage=function(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},r.showSourceCode=function(e){var t=this;if(!this.source)return"";var r=this.source;null==e&&(e=Ie.isColorSupported),Oe&&e&&(r=Oe(r));var n,i,o=r.split(/\r?\n/),s=Math.max(this.line-3,0),a=Math.min(this.line+2,o.length),c=String(a).length;if(e){var l=Ie.createColors(!0),u=l.bold,p=l.gray,h=l.red;n=function(e){return u(h(e))},i=function(e){return p(e)}}else n=i=function(e){return e};return o.slice(s,a).map(function(e,r){var o=s+1+r,a=" "+(" "+o).slice(-c)+" | ";if(o===t.line){var l=i(a.replace(/\d/g," "))+e.slice(0,t.column-1).replace(/[^\t]/g," ");return n(">")+i(a)+e+"\n "+l+n("^")}return" "+i(a)+e}).join("\n")},r.toString=function(){var e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e},t}(v(Error)),Ae=Ne;Ne.default=Ne;var Re={};Re.isClean=Symbol("isClean"),Re.my=Symbol("my");var Me={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1},Te=function(){function e(e){this.builder=e}var t=e.prototype;return t.atrule=function(e,t){var r="@"+e.name,n=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?r+=e.raws.afterName:n&&(r+=" "),e.nodes)this.block(e,r+n);else{var i=(e.raws.between||"")+(t?";":"");this.builder(r+n+i,e)}},t.beforeAfter=function(e,t){var r;r="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");for(var n=e.parent,i=0;n&&"root"!==n.type;)i+=1,n=n.parent;if(r.includes("\n")){var o=this.raw(e,null,"indent");if(o.length)for(var s=0;s0&&"comment"===e.nodes[t].type;)t-=1;for(var r=this.raw(e,"semicolon"),n=0;n0&&void 0!==e.raws.after)return(t=e.raws.after).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawBeforeComment=function(e,t){var r;return e.walkComments(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeDecl=function(e,t){var r;return e.walkDecls(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeOpen=function(e){var t;return e.walk(function(e){if("decl"!==e.type&&void 0!==(t=e.raws.between))return!1}),t},t.rawBeforeRule=function(e){var t;return e.walk(function(r){if(r.nodes&&(r.parent!==e||e.first!==r)&&void 0!==r.raws.before)return(t=r.raws.before).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawColon=function(e){var t;return e.walkDecls(function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1}),t},t.rawEmptyBody=function(e){var t;return e.walk(function(e){if(e.nodes&&0===e.nodes.length&&void 0!==(t=e.raws.after))return!1}),t},t.rawIndent=function(e){return e.raws.indent?e.raws.indent:(e.walk(function(r){var n=r.parent;if(n&&n!==e&&n.parent&&n.parent===e&&void 0!==r.raws.before){var i=r.raws.before.split("\n");return t=(t=i[i.length-1]).replace(/\S/g,""),!1}}),t);var t},t.rawSemicolon=function(e){var t;return e.walk(function(e){if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&void 0!==(t=e.raws.semicolon))return!1}),t},t.rawValue=function(e,t){var r=e[t],n=e.raws[t];return n&&n.value===r?n.raw:r},t.root=function(e){this.body(e),e.raws.after&&this.builder(e.raws.after)},t.rule=function(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")},t.stringify=function(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)},e}(),Le=Te;Te.default=Te;var Pe=Le;function De(e,t){new Pe(t).stringify(e)}var Fe=De;De.default=De;var Ue=Re.isClean,je=Re.my,Be=Ae,$e=Le,ze=Fe;function qe(e,t){var r=new e.constructor;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&"proxyCache"!==n){var i=e[n],o=void 0===i?"undefined":m(i);"parent"===n&&"object"===o?t&&(r[n]=t):"source"===n?r[n]=i:Array.isArray(i)?r[n]=i.map(function(e){return qe(e,r)}):("object"===o&&null!==i&&(i=qe(i)),r[n]=i)}return r}var Ve=function(){function e(e){for(var t in void 0===e&&(e={}),this.raws={},this[Ue]=!1,this[je]=!0,e)if("nodes"===t){this.nodes=[];for(var r,n=b(e[t]);!(r=n()).done;){var i=r.value;"function"==typeof i.clone?this.append(i.clone()):this.append(i)}}else this[t]=e[t]}var t=e.prototype;return t.addToError=function(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){var t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,"$&"+t.input.from+":"+t.start.line+":"+t.start.column+"$&")}return e},t.after=function(e){return this.parent.insertAfter(this,e),this},t.assign=function(e){for(var t in void 0===e&&(e={}),e)this[t]=e[t];return this},t.before=function(e){return this.parent.insertBefore(this,e),this},t.cleanRaws=function(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between},t.clone=function(e){void 0===e&&(e={});var t=qe(this);for(var r in e)t[r]=e[r];return t},t.cloneAfter=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertAfter(this,t),t},t.cloneBefore=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertBefore(this,t),t},t.error=function(e,t){if(void 0===t&&(t={}),this.source){var r=this.rangeBy(t),n=r.end,i=r.start;return this.source.input.error(e,{column:i.column,line:i.line},{column:n.column,line:n.line},t)}return new Be(e)},t.getProxyProcessor=function(){return{get:function(e,t){return"proxyOf"===t?e:"root"===t?function(){return e.root().toProxy()}:e[t]},set:function(e,t,r){return e[t]===r||(e[t]=r,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0}}},t.markDirty=function(){if(this[Ue]){this[Ue]=!1;for(var e=this;e=e.parent;)e[Ue]=!1}},t.next=function(){if(this.parent){var e=this.parent.index(this);return this.parent.nodes[e+1]}},t.positionBy=function(e,t){var r=this.source.start;if(e.index)r=this.positionInside(e.index,t);else if(e.word){var n=(t=this.toString()).indexOf(e.word);-1!==n&&(r=this.positionInside(n,t))}return r},t.positionInside=function(e,t){for(var r=t||this.toString(),n=this.source.start.column,i=this.source.start.line,o=0;o-1&&n>-1&&(this.annotation=this.getAnnotationURL(e.substring(r,n)))}},t.loadFile=function(e){if(this.root=Xe(e),Ye(e))return this.mapFile=e,Ze(e,"utf-8").toString().trim()},t.loadMap=function(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(d(t,Ke))return Je.fromSourceMap(t).toString();if(d(t,Je))return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}var r=t(e);if(r){var n=this.loadFile(r);if(!n)throw new Error("Unable to load previous source map: "+r.toString());return n}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var i=this.annotation;return e&&(i=Qe(Xe(e),i)),this.loadFile(i)}}},t.startWith=function(e,t){return!!e&&e.substr(0,t.length)===t},t.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},e}(),tt=et;et.default=et;var rt=Ee.SourceMapConsumer,nt=Ee.SourceMapGenerator,it=Ee.fileURLToPath,ot=Ee.pathToFileURL,st=Ee.isAbsolute,at=Ee.resolve,ct=function(e){void 0===e&&(e=21);for(var t="",r=e;r--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},lt=Ee,ut=Ae,pt=tt,ht=Symbol("fromOffsetCache"),dt=Boolean(rt&&nt),ft=Boolean(at&&st),gt=function(){function e(e,t){if(void 0===t&&(t={}),null==e||"object"===(void 0===e?"undefined":m(e))&&!e.toString)throw new Error("PostCSS received "+e+" instead of CSS string");if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!ft||/^\w+:\/\//.test(t.from)||st(t.from)?this.file=t.from:this.file=at(t.from)),ft&&dt){var r=new pt(this.css,t);if(r.text){this.map=r;var n=r.consumer().file;!this.file&&n&&(this.file=this.mapResolve(n))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}var t=e.prototype;return t.error=function(e,t,r,n){var i,o,s;if(void 0===n&&(n={}),t&&"object"===(void 0===t?"undefined":m(t))){var a=t,c=r;if("number"==typeof a.offset){var l=this.fromOffset(a.offset);t=l.line,r=l.col}else t=a.line,r=a.column;if("number"==typeof c.offset){var u=this.fromOffset(c.offset);o=u.line,s=u.col}else o=c.line,s=c.column}else if(!r){var p=this.fromOffset(t);t=p.line,r=p.col}var h=this.origin(t,r,o,s);return(i=h?new ut(e,void 0===h.endLine?h.line:{column:h.column,line:h.line},void 0===h.endLine?h.column:{column:h.endColumn,line:h.endLine},h.source,h.file,n.plugin):new ut(e,void 0===o?t:{column:r,line:t},void 0===o?r:{column:s,line:o},this.css,this.file,n.plugin)).input={column:r,endColumn:s,endLine:o,line:t,source:this.css},this.file&&(ot&&(i.input.url=ot(this.file).toString()),i.input.file=this.file),i},t.fromOffset=function(e){var t;if(this[ht])t=this[ht];else{var r=this.css.split("\n");t=new Array(r.length);for(var n=0,i=0,o=r.length;i=t[t.length-1])s=t.length-1;else for(var a,c=t.length-2;s>1)])c=a-1;else{if(!(e>=t[a+1])){s=a;break}s=a+1}return{col:e-t[s]+1,line:s+1}},t.mapResolve=function(e){return/^\w+:\/\//.test(e)?e:at(this.map.consumer().sourceRoot||this.map.root||".",e)},t.origin=function(e,t,r,n){if(!this.map)return!1;var i,o,s=this.map.consumer(),a=s.originalPositionFor({column:t,line:e});if(!a.source)return!1;"number"==typeof r&&(i=s.originalPositionFor({column:n,line:r})),o=st(a.source)?ot(a.source):new URL(a.source,this.map.consumer().sourceRoot||ot(this.map.mapFile));var c={column:a.column,endColumn:i&&i.column,endLine:i&&i.line,line:a.line,url:o.toString()};if("file:"===o.protocol){if(!it)throw new Error("file: protocol is not available in this PostCSS build");c.file=it(o)}var l=s.sourceContentFor(a.source);return l&&(c.source=l),c},t.toJSON=function(){for(var e={},t=0,r=["hasBOM","css","file","id"];t=0;t--)"comment"===(e=this.root.nodes[t]).type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t);else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))},t.generate=function(){if(this.clearAnnotation(),Et&&Ct&&this.isMap())return this.generateMap();var e="";return this.stringify(this.root,function(t){e+=t}),[e]},t.generateMap=function(){if(this.root)this.generateString();else if(1===this.previous().length){var e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=yt.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new yt({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},t.generateString=function(){var e=this;this.css="",this.map=new yt({file:this.outputFile(),ignoreInvalidMapping:!0});var t,r,n=1,i=1,o="",s={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,function(a,c,l){if(e.css+=a,c&&"end"!==l&&(s.generated.line=n,s.generated.column=i-1,c.source&&c.source.start?(s.source=e.sourcePath(c),s.original.line=c.source.start.line,s.original.column=c.source.start.column-1,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,e.map.addMapping(s))),(t=a.match(/\n/g))?(n+=t.length,r=a.lastIndexOf("\n"),i=a.length-r):i+=a.length,c&&"start"!==l){var u=c.parent||{raws:{}};("decl"===c.type||"atrule"===c.type&&!c.nodes)&&c===u.last&&!u.raws.semicolon||(c.source&&c.source.end?(s.source=e.sourcePath(c),s.original.line=c.source.end.line,s.original.column=c.source.end.column-1,s.generated.line=n,s.generated.column=i-2,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,s.generated.line=n,s.generated.column=i-1,e.map.addMapping(s)))}})},t.isAnnotation=function(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some(function(e){return e.annotation}))},t.isInline=function(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;var e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some(function(e){return e.inline}))},t.isMap=function(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0},t.isSourcesContent=function(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some(function(e){return e.withContent()})},t.outputFile=function(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"},t.path=function(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;var t=this.memoizedPaths.get(e);if(t)return t;var r=this.opts.to?bt(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(r=bt(wt(r,this.mapOpts.annotation)));var n=_t(r,e);return this.memoizedPaths.set(e,n),n},t.previous=function(){var e=this;if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(function(t){if(t.source&&t.source.input.map){var r=t.source.input.map;e.previousMaps.includes(r)||e.previousMaps.push(r)}});else{var t=new xt(this.originalCSS,this.opts);t.map&&this.previousMaps.push(t.map)}return this.previousMaps},t.setSourcesContent=function(){var e=this,t={};if(this.root)this.root.walk(function(r){if(r.source){var n=r.source.input.from;if(n&&!t[n]){t[n]=!0;var i=e.usesFileUrls?e.toFileUrl(n):e.toUrl(e.path(n));e.map.setSourceContent(i,r.source.input.css)}}});else if(this.css){var r=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(r,this.css)}},t.sourcePath=function(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))},t.toBase64=function(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))},t.toFileUrl=function(e){var t=this.memoizedFileURLs.get(e);if(t)return t;if(St){var r=St(e).toString();return this.memoizedFileURLs.set(e,r),r}throw new Error("`map.absolute` option is not available in this PostCSS build")},t.toUrl=function(e){var t=this.memoizedURLs.get(e);if(t)return t;"\\"===kt&&(e=e.replace(/\\/g,"/"));var r=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,r),r},e}(),Ot=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="comment",r}return h(t,e),t}(We),Nt=Ot;Ot.default=Ot;var At,Rt,Mt,Tt,Lt=Re.isClean,Pt=Re.my,Dt=Ge,Ft=Nt;function Ut(e){return e.map(function(e){return e.nodes&&(e.nodes=Ut(e.nodes)),delete e.source,e})}function jt(e){if(e[Lt]=!1,e.proxyOf.nodes)for(var t,r=b(e.proxyOf.nodes);!(t=r()).done;)jt(t.value)}var Bt=function(e){function t(){return e.apply(this,arguments)||this}h(t,e);var r=t.prototype;return r.append=function(){for(var e=arguments.length,t=new Array(e),r=0;r1?t-1:0),i=1;i=e&&(this.indexes[r]=t-1);return this.markDirty(),this},r.replaceValues=function(e,t,r){return r||(r=t,t={}),this.walkDecls(function(n){t.props&&!t.props.includes(n.prop)||t.fast&&!n.value.includes(t.fast)||(n.value=n.value.replace(e,r))}),this.markDirty(),this},r.some=function(e){return this.nodes.some(e)},r.walk=function(e){return this.each(function(t,r){var n;try{n=e(t,r)}catch(e){throw t.addToError(e)}return!1!==n&&t.walk&&(n=t.walk(e)),n})},r.walkAtRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("atrule"===r.type&&e.test(r.name))return t(r,n)}):this.walk(function(r,n){if("atrule"===r.type&&r.name===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("atrule"===e.type)return t(e,r)}))},r.walkComments=function(e){return this.walk(function(t,r){if("comment"===t.type)return e(t,r)})},r.walkDecls=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("decl"===r.type&&e.test(r.prop))return t(r,n)}):this.walk(function(r,n){if("decl"===r.type&&r.prop===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("decl"===e.type)return t(e,r)}))},r.walkRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("rule"===r.type&&e.test(r.selector))return t(r,n)}):this.walk(function(r,n){if("rule"===r.type&&r.selector===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("rule"===e.type)return t(e,r)}))},l(t,[{key:"first",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}},{key:"last",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}]),t}(We);Bt.registerParse=function(e){At=e},Bt.registerRule=function(e){Rt=e},Bt.registerAtRule=function(e){Mt=e},Bt.registerRoot=function(e){Tt=e};var $t=Bt;Bt.default=Bt,Bt.rebuild=function(e){"atrule"===e.type?Object.setPrototypeOf(e,Mt.prototype):"rule"===e.type?Object.setPrototypeOf(e,Rt.prototype):"decl"===e.type?Object.setPrototypeOf(e,Dt.prototype):"comment"===e.type?Object.setPrototypeOf(e,Ft.prototype):"root"===e.type&&Object.setPrototypeOf(e,Tt.prototype),e[Pt]=!0,e.nodes&&e.nodes.forEach(function(e){Bt.rebuild(e)})};var zt,qt,Vt=function(e){function t(t){var r;return(r=e.call(this,u({type:"document"},t))||this).nodes||(r.nodes=[]),r}return h(t,e),t.prototype.toResult=function(e){return void 0===e&&(e={}),new zt(new qt,this,e).stringify()},t}($t);Vt.registerLazyResult=function(e){zt=e},Vt.registerProcessor=function(e){qt=e};var Wt=Vt;Vt.default=Vt;var Ht=function(){function e(e,t){if(void 0===t&&(t={}),this.type="warning",this.text=e,t.node&&t.node.source){var r=t.node.rangeBy(t);this.line=r.start.line,this.column=r.start.column,this.endLine=r.end.line,this.endColumn=r.end.column}for(var n in t)this[n]=t[n]}return e.prototype.toString=function(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},e}(),Gt=Ht;Ht.default=Ht;var Kt=Gt,Jt=function(){function e(e,t,r){this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}var t=e.prototype;return t.toString=function(){return this.css},t.warn=function(e,t){void 0===t&&(t={}),t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);var r=new Kt(e,t);return this.messages.push(r),r},t.warnings=function(){return this.messages.filter(function(e){return"warning"===e.type})},l(e,[{key:"content",get:function(){return this.css}}]),e}(),Yt=Jt;Jt.default=Jt;var Zt="'".charCodeAt(0),Xt='"'.charCodeAt(0),Qt="\\".charCodeAt(0),er="/".charCodeAt(0),tr="\n".charCodeAt(0),rr=" ".charCodeAt(0),nr="\f".charCodeAt(0),ir="\t".charCodeAt(0),or="\r".charCodeAt(0),sr="[".charCodeAt(0),ar="]".charCodeAt(0),cr="(".charCodeAt(0),lr=")".charCodeAt(0),ur="{".charCodeAt(0),pr="}".charCodeAt(0),hr=";".charCodeAt(0),dr="*".charCodeAt(0),fr=":".charCodeAt(0),gr="@".charCodeAt(0),mr=/[\t\n\f\r "#'()/;[\\\]{}]/g,vr=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,yr=/.[\r\n"'(/\\]/,br=/[\da-f]/i,_r=$t,wr=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="atrule",r}h(t,e);var r=t.prototype;return r.append=function(){for(var t=arguments.length,r=new Array(t),n=0;n1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before;else if(this.first!==r)for(var o,s=b(i);!(o=s()).done;)o.value.raws.before=r.raws.before;return i},r.removeChild=function(t,r){var n=this.index(t);return!r&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),e.prototype.removeChild.call(this,t)},r.toResult=function(e){return void 0===e&&(e={}),new Sr(new xr,this,e).stringify()},t}(Cr);Er.registerLazyResult=function(e){Sr=e},Er.registerProcessor=function(e){xr=e};var Ir=Er;Er.default=Er,Cr.registerRoot(Er);var Or={comma:function(e){return Or.split(e,[","],!0)},space:function(e){return Or.split(e,[" ","\n","\t"])},split:function(e,t,r){for(var n,i=[],o="",s=!1,a=0,c=!1,l="",u=!1,p=b(e);!(n=p()).done;){var h=n.value;u?u=!1:"\\"===h?u=!0:c?h===l&&(c=!1):'"'===h||"'"===h?(c=!0,l=h):"("===h?a+=1:")"===h?a>0&&(a-=1):0===a&&t.includes(h)&&(s=!0),s?(""!==o&&i.push(o.trim()),o="",s=!1):o+=h}return(r||""!==o)&&i.push(o.trim()),i}},Nr=Or;Or.default=Or;var Ar=$t,Rr=Nr,Mr=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="rule",r.nodes||(r.nodes=[]),r}return h(t,e),l(t,[{key:"selectors",get:function(){return Rr.comma(this.selector)},set:function(e){var t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}}]),t}(Ar),Tr=Mr;Mr.default=Mr,Ar.registerRule(Mr);var Lr=Ge,Pr=Nt,Dr=kr,Fr=Ir,Ur=Tr,jr={empty:!0,space:!0},Br=function(){function e(e){this.input=e,this.root=new Fr,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}var t=e.prototype;return t.atrule=function(e){var t,r,n,i=new Dr;i.name=e[1].slice(1),""===i.name&&this.unnamedAtrule(i,e),this.init(i,e[2]);for(var o=!1,s=!1,a=[],c=[];!this.tokenizer.endOfFile();){if("("===(t=(e=this.tokenizer.nextToken())[0])||"["===t?c.push("("===t?")":"]"):"{"===t&&c.length>0?c.push("}"):t===c[c.length-1]&&c.pop(),0===c.length){if(";"===t){i.source.end=this.getPosition(e[2]),i.source.end.offset++,this.semicolon=!0;break}if("{"===t){s=!0;break}if("}"===t){if(a.length>0){for(r=a[n=a.length-1];r&&"space"===r[0];)r=a[--n];r&&(i.source.end=this.getPosition(r[3]||r[2]),i.source.end.offset++)}this.end(e);break}a.push(e)}else a.push(e);if(this.tokenizer.endOfFile()){o=!0;break}}i.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(i.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(i,"params",a),o&&(e=a[a.length-1],i.source.end=this.getPosition(e[3]||e[2]),i.source.end.offset++,this.spaces=i.raws.between,i.raws.between="")):(i.raws.afterName="",i.params=""),s&&(i.nodes=[],this.current=i)},t.checkMissedSemicolon=function(e){var t=this.colon(e);if(!1!==t){for(var r,n=0,i=t-1;i>=0&&("space"===(r=e[i])[0]||2!==(n+=1));i--);throw this.input.error("Missed semicolon","word"===r[0]?r[3]+1:r[2])}},t.colon=function(e){for(var t,r,n,i,o=0,s=b(e.entries());!(i=s()).done;){var a=i.value,c=a[0];if("("===(r=(t=a[1])[0])&&(o+=1),")"===r&&(o-=1),0===o&&":"===r){if(n){if("word"===n[0]&&"progid"===n[1])continue;return c}this.doubleColon(t)}n=t}return!1},t.comment=function(e){var t=new Pr;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;var r=e[1].slice(2,-2);if(/^\s*$/.test(r))t.text="",t.raws.left=r,t.raws.right="";else{var n=r.match(/^(\s*)([^]*\S)(\s*)$/);t.text=n[2],t.raws.left=n[1],t.raws.right=n[3]}},t.createTokenizer=function(){this.tokenizer=function(e,t){void 0===t&&(t={});var r,n,i,o,s,a,c,l,u,p,h=e.css.valueOf(),d=t.ignoreErrors,f=h.length,g=0,m=[],v=[];function y(t){throw e.error("Unclosed "+t,g)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&g>=f},nextToken:function(e){if(v.length)return v.pop();if(!(g>=f)){var t=!!e&&e.ignoreUnclosed;switch(r=h.charCodeAt(g)){case tr:case rr:case ir:case or:case nr:n=g;do{n+=1,r=h.charCodeAt(n)}while(r===rr||r===tr||r===ir||r===or||r===nr);p=["space",h.slice(g,n)],g=n-1;break;case sr:case ar:case ur:case pr:case fr:case hr:case lr:var b=String.fromCharCode(r);p=[b,b,g];break;case cr:if(l=m.length?m.pop()[1]:"",u=h.charCodeAt(g+1),"url"===l&&u!==Zt&&u!==Xt&&u!==rr&&u!==tr&&u!==ir&&u!==nr&&u!==or){n=g;do{if(a=!1,-1===(n=h.indexOf(")",n+1))){if(d||t){n=g;break}y("bracket")}for(c=n;h.charCodeAt(c-1)===Qt;)c-=1,a=!a}while(a);p=["brackets",h.slice(g,n+1),g,n],g=n}else n=h.indexOf(")",g+1),o=h.slice(g,n+1),-1===n||yr.test(o)?p=["(","(",g]:(p=["brackets",o,g,n],g=n);break;case Zt:case Xt:i=r===Zt?"'":'"',n=g;do{if(a=!1,-1===(n=h.indexOf(i,n+1))){if(d||t){n=g+1;break}y("string")}for(c=n;h.charCodeAt(c-1)===Qt;)c-=1,a=!a}while(a);p=["string",h.slice(g,n+1),g,n],g=n;break;case gr:mr.lastIndex=g+1,mr.test(h),n=0===mr.lastIndex?h.length-1:mr.lastIndex-2,p=["at-word",h.slice(g,n+1),g,n],g=n;break;case Qt:for(n=g,s=!0;h.charCodeAt(n+1)===Qt;)n+=1,s=!s;if(r=h.charCodeAt(n+1),s&&r!==er&&r!==rr&&r!==tr&&r!==ir&&r!==or&&r!==nr&&(n+=1,br.test(h.charAt(n)))){for(;br.test(h.charAt(n+1));)n+=1;h.charCodeAt(n+1)===rr&&(n+=1)}p=["word",h.slice(g,n+1),g,n],g=n;break;default:r===er&&h.charCodeAt(g+1)===dr?(0===(n=h.indexOf("*/",g+2)+1)&&(d||t?n=h.length:y("comment")),p=["comment",h.slice(g,n+1),g,n],g=n):(vr.lastIndex=g+1,vr.test(h),n=0===vr.lastIndex?h.length-1:vr.lastIndex-2,p=["word",h.slice(g,n+1),g,n],m.push(p),g=n)}return g++,p}},position:function(){return g}}}(this.input)},t.decl=function(e,t){var r=new Lr;this.init(r,e[0][2]);var n,i=e[e.length-1];for(";"===i[0]&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(i[3]||i[2]||function(e){for(var t=e.length-1;t>=0;t--){var r=e[t],n=r[3]||r[2];if(n)return n}}(e)),r.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop="";e.length;){var o=e[0][0];if(":"===o||"space"===o||"comment"===o)break;r.prop+=e.shift()[1]}for(r.raws.between="";e.length;){if(":"===(n=e.shift())[0]){r.raws.between+=n[1];break}"word"===n[0]&&/\w/.test(n[1])&&this.unknownWord([n]),r.raws.between+=n[1]}"_"!==r.prop[0]&&"*"!==r.prop[0]||(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));for(var s,a=[];e.length&&("space"===(s=e[0][0])||"comment"===s);)a.push(e.shift());this.precheckMissedSemicolon(e);for(var c=e.length-1;c>=0;c--){if("!important"===(n=e[c])[1].toLowerCase()){r.important=!0;var l=this.stringFrom(e,c);" !important"!==(l=this.spacesFromEnd(e)+l)&&(r.raws.important=l);break}if("important"===n[1].toLowerCase()){for(var u=e.slice(0),p="",h=c;h>0;h--){var d=u[h][0];if(0===p.trim().indexOf("!")&&"space"!==d)break;p=u.pop()[1]+p}0===p.trim().indexOf("!")&&(r.important=!0,r.raws.important=p,e=u)}if("space"!==n[0]&&"comment"!==n[0])break}var f=e.some(function(e){return"space"!==e[0]&&"comment"!==e[0]});f&&(r.raws.between+=a.map(function(e){return e[1]}).join(""),a=[]),this.raw(r,"value",a.concat(e),t),r.value.includes(":")&&!t&&this.checkMissedSemicolon(e)},t.doubleColon=function(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})},t.emptyRule=function(e){var t=new Ur;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t},t.end=function(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)},t.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())},t.freeSemicolon=function(e){if(this.spaces+=e[1],this.current.nodes){var t=this.current.nodes[this.current.nodes.length-1];t&&"rule"===t.type&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}},t.getPosition=function(e){var t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}},t.init=function(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)},t.other=function(e){for(var t=!1,r=null,n=!1,i=null,o=[],s=e[1].startsWith("--"),a=[],c=e;c;){if(r=c[0],a.push(c),"("===r||"["===r)i||(i=c),o.push("("===r?")":"]");else if(s&&n&&"{"===r)i||(i=c),o.push("}");else if(0===o.length){if(";"===r){if(n)return void this.decl(a,s);break}if("{"===r)return void this.rule(a);if("}"===r){this.tokenizer.back(a.pop()),t=!0;break}":"===r&&(n=!0)}else r===o[o.length-1]&&(o.pop(),0===o.length&&(i=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),o.length>0&&this.unclosedBracket(i),t&&n){if(!s)for(;a.length&&("space"===(c=a[a.length-1][0])||"comment"===c);)this.tokenizer.back(a.pop());this.decl(a,s)}else this.unknownWord(a)},t.parse=function(){for(var e;!this.tokenizer.endOfFile();)switch((e=this.tokenizer.nextToken())[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()},t.precheckMissedSemicolon=function(){},t.raw=function(e,t,r,n){for(var i,o,s,a,c=r.length,l="",u=!0,p=0;p0},t.runAsync=function(){var e=this;return a(function(){var t,r,n,i,o,s,a,c,l,u,p,h;return _(this,function(d){switch(d.label){case 0:e.plugin=0,t=0,d.label=1;case 1:if(!(t0))return[3,13];if(!on(a=e.visitTick(s)))return[3,12];d.label=9;case 9:return d.trys.push([9,11,,12]),[4,a];case 10:return d.sent(),[3,12];case 11:throw c=d.sent(),l=s[s.length-1].node,e.handleError(c,l);case 12:return[3,8];case 13:return[3,7];case 14:if(!e.listeners.OnceExit)return[3,18];u=function(){var t,r,n,i,s;return _(this,function(a){switch(a.label){case 0:t=h.value,r=t[0],n=t[1],e.result.lastPlugin=r,a.label=1;case 1:return a.trys.push([1,6,,7]),"document"!==o.type?[3,3]:(i=o.nodes.map(function(t){return n(t,e.helpers)}),[4,Promise.all(i)]);case 2:return a.sent(),[3,5];case 3:return[4,n(o,e.helpers)];case 4:a.sent(),a.label=5;case 5:return[3,7];case 6:throw s=a.sent(),e.handleError(s);case 7:return[2]}})},p=b(e.listeners.OnceExit),d.label=15;case 15:return(h=p()).done?[3,18]:[5,w(u())];case 16:d.sent(),d.label=17;case 17:return[3,15];case 18:return e.processed=!0,[2,e.stringify()]}})})()},t.runOnRoot=function(e){var t=this;this.result.lastPlugin=e;try{if("object"===(void 0===e?"undefined":m(e))&&e.Once){if("document"===this.result.root.type){var r=this.result.root.nodes.map(function(r){return e.Once(r,t.helpers)});return on(r[0])?Promise.all(r):r}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(e){throw this.handleError(e)}},t.stringify=function(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=Jr;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var r=new Kr(t,this.result.root,this.result.opts).generate();return this.result.css=r[0],this.result.map=r[1],this.result},t.sync=function(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(var e,t=b(this.plugins);!(e=t()).done;){var r=e.value;if(on(this.runOnRoot(r)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){for(var n=this.result.root;!n[Hr];)n[Hr]=!0,this.walkSync(n);if(this.listeners.OnceExit)if("document"===n.type)for(var i,o=b(n.nodes);!(i=o()).done;){var s=i.value;this.visitSync(this.listeners.OnceExit,s)}else this.visitSync(this.listeners.OnceExit,n)}return this.result},t.then=function(e,t){return this.async().then(e,t)},t.toString=function(){return this.css},t.visitSync=function(e,t){for(var r,n=b(e);!(r=n()).done;){var i=r.value,o=i[0],s=i[1];this.result.lastPlugin=o;var a=void 0;try{a=s(t,this.helpers)}catch(e){throw this.handleError(e,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(on(a))throw this.getAsyncError()}},t.visitTick=function(e){var t=e[e.length-1],r=t.node,n=t.visitors;if("root"===r.type||"document"===r.type||r.parent){if(n.length>0&&t.visitorIndex",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},r.showSourceCode=function(e){var t=this;if(!this.source)return"";var r=this.source;null==e&&(e=ui.isColorSupported),pi&&e&&(r=pi(r));var n,i,o=r.split(/\r?\n/),s=Math.max(this.line-3,0),a=Math.min(this.line+2,o.length),c=String(a).length;if(e){var l=ui.createColors(!0),u=l.bold,p=l.gray,h=l.red;n=function(e){return u(h(e))},i=function(e){return p(e)}}else n=i=function(e){return e};return o.slice(s,a).map(function(e,r){var o=s+1+r,a=" "+(" "+o).slice(-c)+" | ";if(o===t.line){var l=i(a.replace(/\d/g," "))+e.slice(0,t.column-1).replace(/[^\t]/g," ");return n(">")+i(a)+e+"\n "+l+n("^")}return" "+i(a)+e}).join("\n")},r.toString=function(){var e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e},t}(v(Error)),di=hi;hi.default=hi;var fi={};fi.isClean=Symbol("isClean"),fi.my=Symbol("my");var gi={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1},mi=function(){function e(e){this.builder=e}var t=e.prototype;return t.atrule=function(e,t){var r="@"+e.name,n=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?r+=e.raws.afterName:n&&(r+=" "),e.nodes)this.block(e,r+n);else{var i=(e.raws.between||"")+(t?";":"");this.builder(r+n+i,e)}},t.beforeAfter=function(e,t){var r;r="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");for(var n=e.parent,i=0;n&&"root"!==n.type;)i+=1,n=n.parent;if(r.includes("\n")){var o=this.raw(e,null,"indent");if(o.length)for(var s=0;s0&&"comment"===e.nodes[t].type;)t-=1;for(var r=this.raw(e,"semicolon"),n=0;n0&&void 0!==e.raws.after)return(t=e.raws.after).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawBeforeComment=function(e,t){var r;return e.walkComments(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeDecl=function(e,t){var r;return e.walkDecls(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeOpen=function(e){var t;return e.walk(function(e){if("decl"!==e.type&&void 0!==(t=e.raws.between))return!1}),t},t.rawBeforeRule=function(e){var t;return e.walk(function(r){if(r.nodes&&(r.parent!==e||e.first!==r)&&void 0!==r.raws.before)return(t=r.raws.before).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawColon=function(e){var t;return e.walkDecls(function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1}),t},t.rawEmptyBody=function(e){var t;return e.walk(function(e){if(e.nodes&&0===e.nodes.length&&void 0!==(t=e.raws.after))return!1}),t},t.rawIndent=function(e){return e.raws.indent?e.raws.indent:(e.walk(function(r){var n=r.parent;if(n&&n!==e&&n.parent&&n.parent===e&&void 0!==r.raws.before){var i=r.raws.before.split("\n");return t=(t=i[i.length-1]).replace(/\S/g,""),!1}}),t);var t},t.rawSemicolon=function(e){var t;return e.walk(function(e){if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&void 0!==(t=e.raws.semicolon))return!1}),t},t.rawValue=function(e,t){var r=e[t],n=e.raws[t];return n&&n.value===r?n.raw:r},t.root=function(e){this.body(e),e.raws.after&&this.builder(e.raws.after)},t.rule=function(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")},t.stringify=function(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)},e}(),vi=mi;mi.default=mi;var yi=vi;function bi(e,t){new yi(t).stringify(e)}var _i=bi;bi.default=bi;var wi=fi.isClean,ki=fi.my,Si=di,xi=vi,Ci=_i;function Ei(e,t){var r=new e.constructor;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&"proxyCache"!==n){var i=e[n],o=void 0===i?"undefined":m(i);"parent"===n&&"object"===o?t&&(r[n]=t):"source"===n?r[n]=i:Array.isArray(i)?r[n]=i.map(function(e){return Ei(e,r)}):("object"===o&&null!==i&&(i=Ei(i)),r[n]=i)}return r}var Ii=function(){function e(e){for(var t in void 0===e&&(e={}),this.raws={},this[wi]=!1,this[ki]=!0,e)if("nodes"===t){this.nodes=[];for(var r,n=b(e[t]);!(r=n()).done;){var i=r.value;"function"==typeof i.clone?this.append(i.clone()):this.append(i)}}else this[t]=e[t]}var t=e.prototype;return t.addToError=function(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){var t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,"$&"+t.input.from+":"+t.start.line+":"+t.start.column+"$&")}return e},t.after=function(e){return this.parent.insertAfter(this,e),this},t.assign=function(e){for(var t in void 0===e&&(e={}),e)this[t]=e[t];return this},t.before=function(e){return this.parent.insertBefore(this,e),this},t.cleanRaws=function(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between},t.clone=function(e){void 0===e&&(e={});var t=Ei(this);for(var r in e)t[r]=e[r];return t},t.cloneAfter=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertAfter(this,t),t},t.cloneBefore=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertBefore(this,t),t},t.error=function(e,t){if(void 0===t&&(t={}),this.source){var r=this.rangeBy(t),n=r.end,i=r.start;return this.source.input.error(e,{column:i.column,line:i.line},{column:n.column,line:n.line},t)}return new Si(e)},t.getProxyProcessor=function(){return{get:function(e,t){return"proxyOf"===t?e:"root"===t?function(){return e.root().toProxy()}:e[t]},set:function(e,t,r){return e[t]===r||(e[t]=r,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0}}},t.markDirty=function(){if(this[wi]){this[wi]=!1;for(var e=this;e=e.parent;)e[wi]=!1}},t.next=function(){if(this.parent){var e=this.parent.index(this);return this.parent.nodes[e+1]}},t.positionBy=function(e,t){var r=this.source.start;if(e.index)r=this.positionInside(e.index,t);else if(e.word){var n=(t=this.toString()).indexOf(e.word);-1!==n&&(r=this.positionInside(n,t))}return r},t.positionInside=function(e,t){for(var r=t||this.toString(),n=this.source.start.column,i=this.source.start.line,o=0;o-1&&n>-1&&(this.annotation=this.getAnnotationURL(e.substring(r,n)))}},t.loadFile=function(e){if(this.root=Pi(e),Ti(e))return this.mapFile=e,Li(e,"utf-8").toString().trim()},t.loadMap=function(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(d(t,Ri))return Mi.fromSourceMap(t).toString();if(d(t,Mi))return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}var r=t(e);if(r){var n=this.loadFile(r);if(!n)throw new Error("Unable to load previous source map: "+r.toString());return n}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var i=this.annotation;return e&&(i=Di(Pi(e),i)),this.loadFile(i)}}},t.startWith=function(e,t){return!!e&&e.substr(0,t.length)===t},t.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},e}(),Ui=Fi;Fi.default=Fi;var ji=li.SourceMapConsumer,Bi=li.SourceMapGenerator,$i=li.fileURLToPath,zi=li.pathToFileURL,qi=li.isAbsolute,Vi=li.resolve,Wi=function(e){void 0===e&&(e=21);for(var t="",r=e;r--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},Hi=li,Gi=di,Ki=Ui,Ji=Symbol("fromOffsetCache"),Yi=Boolean(ji&&Bi),Zi=Boolean(Vi&&qi),Xi=function(){function e(e,t){if(void 0===t&&(t={}),null==e||"object"===(void 0===e?"undefined":m(e))&&!e.toString)throw new Error("PostCSS received "+e+" instead of CSS string");if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Zi||/^\w+:\/\//.test(t.from)||qi(t.from)?this.file=t.from:this.file=Vi(t.from)),Zi&&Yi){var r=new Ki(this.css,t);if(r.text){this.map=r;var n=r.consumer().file;!this.file&&n&&(this.file=this.mapResolve(n))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}var t=e.prototype;return t.error=function(e,t,r,n){var i,o,s;if(void 0===n&&(n={}),t&&"object"===(void 0===t?"undefined":m(t))){var a=t,c=r;if("number"==typeof a.offset){var l=this.fromOffset(a.offset);t=l.line,r=l.col}else t=a.line,r=a.column;if("number"==typeof c.offset){var u=this.fromOffset(c.offset);o=u.line,s=u.col}else o=c.line,s=c.column}else if(!r){var p=this.fromOffset(t);t=p.line,r=p.col}var h=this.origin(t,r,o,s);return(i=h?new Gi(e,void 0===h.endLine?h.line:{column:h.column,line:h.line},void 0===h.endLine?h.column:{column:h.endColumn,line:h.endLine},h.source,h.file,n.plugin):new Gi(e,void 0===o?t:{column:r,line:t},void 0===o?r:{column:s,line:o},this.css,this.file,n.plugin)).input={column:r,endColumn:s,endLine:o,line:t,source:this.css},this.file&&(zi&&(i.input.url=zi(this.file).toString()),i.input.file=this.file),i},t.fromOffset=function(e){var t;if(this[Ji])t=this[Ji];else{var r=this.css.split("\n");t=new Array(r.length);for(var n=0,i=0,o=r.length;i=t[t.length-1])s=t.length-1;else for(var a,c=t.length-2;s>1)])c=a-1;else{if(!(e>=t[a+1])){s=a;break}s=a+1}return{col:e-t[s]+1,line:s+1}},t.mapResolve=function(e){return/^\w+:\/\//.test(e)?e:Vi(this.map.consumer().sourceRoot||this.map.root||".",e)},t.origin=function(e,t,r,n){if(!this.map)return!1;var i,o,s=this.map.consumer(),a=s.originalPositionFor({column:t,line:e});if(!a.source)return!1;"number"==typeof r&&(i=s.originalPositionFor({column:n,line:r})),o=qi(a.source)?zi(a.source):new URL(a.source,this.map.consumer().sourceRoot||zi(this.map.mapFile));var c={column:a.column,endColumn:i&&i.column,endLine:i&&i.line,line:a.line,url:o.toString()};if("file:"===o.protocol){if(!$i)throw new Error("file: protocol is not available in this PostCSS build");c.file=$i(o)}var l=s.sourceContentFor(a.source);return l&&(c.source=l),c},t.toJSON=function(){for(var e={},t=0,r=["hasBOM","css","file","id"];t=0;t--)"comment"===(e=this.root.nodes[t]).type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t);else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))},t.generate=function(){if(this.clearAnnotation(),lo&&co&&this.isMap())return this.generateMap();var e="";return this.stringify(this.root,function(t){e+=t}),[e]},t.generateMap=function(){if(this.root)this.generateString();else if(1===this.previous().length){var e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=to.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new to({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},t.generateString=function(){var e=this;this.css="",this.map=new to({file:this.outputFile(),ignoreInvalidMapping:!0});var t,r,n=1,i=1,o="",s={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,function(a,c,l){if(e.css+=a,c&&"end"!==l&&(s.generated.line=n,s.generated.column=i-1,c.source&&c.source.start?(s.source=e.sourcePath(c),s.original.line=c.source.start.line,s.original.column=c.source.start.column-1,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,e.map.addMapping(s))),(t=a.match(/\n/g))?(n+=t.length,r=a.lastIndexOf("\n"),i=a.length-r):i+=a.length,c&&"start"!==l){var u=c.parent||{raws:{}};("decl"===c.type||"atrule"===c.type&&!c.nodes)&&c===u.last&&!u.raws.semicolon||(c.source&&c.source.end?(s.source=e.sourcePath(c),s.original.line=c.source.end.line,s.original.column=c.source.end.column-1,s.generated.line=n,s.generated.column=i-2,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,s.generated.line=n,s.generated.column=i-1,e.map.addMapping(s)))}})},t.isAnnotation=function(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some(function(e){return e.annotation}))},t.isInline=function(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;var e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some(function(e){return e.inline}))},t.isMap=function(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0},t.isSourcesContent=function(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some(function(e){return e.withContent()})},t.outputFile=function(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"},t.path=function(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;var t=this.memoizedPaths.get(e);if(t)return t;var r=this.opts.to?ro(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(r=ro(io(r,this.mapOpts.annotation)));var n=no(r,e);return this.memoizedPaths.set(e,n),n},t.previous=function(){var e=this;if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(function(t){if(t.source&&t.source.input.map){var r=t.source.input.map;e.previousMaps.includes(r)||e.previousMaps.push(r)}});else{var t=new ao(this.originalCSS,this.opts);t.map&&this.previousMaps.push(t.map)}return this.previousMaps},t.setSourcesContent=function(){var e=this,t={};if(this.root)this.root.walk(function(r){if(r.source){var n=r.source.input.from;if(n&&!t[n]){t[n]=!0;var i=e.usesFileUrls?e.toFileUrl(n):e.toUrl(e.path(n));e.map.setSourceContent(i,r.source.input.css)}}});else if(this.css){var r=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(r,this.css)}},t.sourcePath=function(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))},t.toBase64=function(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))},t.toFileUrl=function(e){var t=this.memoizedFileURLs.get(e);if(t)return t;if(so){var r=so(e).toString();return this.memoizedFileURLs.set(e,r),r}throw new Error("`map.absolute` option is not available in this PostCSS build")},t.toUrl=function(e){var t=this.memoizedURLs.get(e);if(t)return t;"\\"===oo&&(e=e.replace(/\\/g,"/"));var r=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,r),r},e}(),po=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="comment",r}return h(t,e),t}(Oi),ho=po;po.default=po;var fo,go,mo,vo,yo=fi.isClean,bo=fi.my,_o=Ai,wo=ho;function ko(e){return e.map(function(e){return e.nodes&&(e.nodes=ko(e.nodes)),delete e.source,e})}function So(e){if(e[yo]=!1,e.proxyOf.nodes)for(var t,r=b(e.proxyOf.nodes);!(t=r()).done;)So(t.value)}var xo=function(e){function t(){return e.apply(this,arguments)||this}h(t,e);var r=t.prototype;return r.append=function(){for(var e=arguments.length,t=new Array(e),r=0;r1?t-1:0),i=1;i=e&&(this.indexes[r]=t-1);return this.markDirty(),this},r.replaceValues=function(e,t,r){return r||(r=t,t={}),this.walkDecls(function(n){t.props&&!t.props.includes(n.prop)||t.fast&&!n.value.includes(t.fast)||(n.value=n.value.replace(e,r))}),this.markDirty(),this},r.some=function(e){return this.nodes.some(e)},r.walk=function(e){return this.each(function(t,r){var n;try{n=e(t,r)}catch(e){throw t.addToError(e)}return!1!==n&&t.walk&&(n=t.walk(e)),n})},r.walkAtRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("atrule"===r.type&&e.test(r.name))return t(r,n)}):this.walk(function(r,n){if("atrule"===r.type&&r.name===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("atrule"===e.type)return t(e,r)}))},r.walkComments=function(e){return this.walk(function(t,r){if("comment"===t.type)return e(t,r)})},r.walkDecls=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("decl"===r.type&&e.test(r.prop))return t(r,n)}):this.walk(function(r,n){if("decl"===r.type&&r.prop===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("decl"===e.type)return t(e,r)}))},r.walkRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("rule"===r.type&&e.test(r.selector))return t(r,n)}):this.walk(function(r,n){if("rule"===r.type&&r.selector===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("rule"===e.type)return t(e,r)}))},l(t,[{key:"first",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}},{key:"last",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}]),t}(Oi);xo.registerParse=function(e){fo=e},xo.registerRule=function(e){go=e},xo.registerAtRule=function(e){mo=e},xo.registerRoot=function(e){vo=e};var Co=xo;xo.default=xo,xo.rebuild=function(e){"atrule"===e.type?Object.setPrototypeOf(e,mo.prototype):"rule"===e.type?Object.setPrototypeOf(e,go.prototype):"decl"===e.type?Object.setPrototypeOf(e,_o.prototype):"comment"===e.type?Object.setPrototypeOf(e,wo.prototype):"root"===e.type&&Object.setPrototypeOf(e,vo.prototype),e[bo]=!0,e.nodes&&e.nodes.forEach(function(e){xo.rebuild(e)})};var Eo,Io,Oo=function(e){function t(t){var r;return(r=e.call(this,u({type:"document"},t))||this).nodes||(r.nodes=[]),r}return h(t,e),t.prototype.toResult=function(e){return void 0===e&&(e={}),new Eo(new Io,this,e).stringify()},t}(Co);Oo.registerLazyResult=function(e){Eo=e},Oo.registerProcessor=function(e){Io=e};var No=Oo;Oo.default=Oo;var Ao=function(){function e(e,t){if(void 0===t&&(t={}),this.type="warning",this.text=e,t.node&&t.node.source){var r=t.node.rangeBy(t);this.line=r.start.line,this.column=r.start.column,this.endLine=r.end.line,this.endColumn=r.end.column}for(var n in t)this[n]=t[n]}return e.prototype.toString=function(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},e}(),Ro=Ao;Ao.default=Ao;var Mo=Ro,To=function(){function e(e,t,r){this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}var t=e.prototype;return t.toString=function(){return this.css},t.warn=function(e,t){void 0===t&&(t={}),t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);var r=new Mo(e,t);return this.messages.push(r),r},t.warnings=function(){return this.messages.filter(function(e){return"warning"===e.type})},l(e,[{key:"content",get:function(){return this.css}}]),e}(),Lo=To;To.default=To;var Po="'".charCodeAt(0),Do='"'.charCodeAt(0),Fo="\\".charCodeAt(0),Uo="/".charCodeAt(0),jo="\n".charCodeAt(0),Bo=" ".charCodeAt(0),$o="\f".charCodeAt(0),zo="\t".charCodeAt(0),qo="\r".charCodeAt(0),Vo="[".charCodeAt(0),Wo="]".charCodeAt(0),Ho="(".charCodeAt(0),Go=")".charCodeAt(0),Ko="{".charCodeAt(0),Jo="}".charCodeAt(0),Yo=";".charCodeAt(0),Zo="*".charCodeAt(0),Xo=":".charCodeAt(0),Qo="@".charCodeAt(0),es=/[\t\n\f\r "#'()/;[\\\]{}]/g,ts=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,rs=/.[\r\n"'(/\\]/,ns=/[\da-f]/i,is=Co,os=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="atrule",r}h(t,e);var r=t.prototype;return r.append=function(){for(var t=arguments.length,r=new Array(t),n=0;n1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before;else if(this.first!==r)for(var o,s=b(i);!(o=s()).done;)o.value.raws.before=r.raws.before;return i},r.removeChild=function(t,r){var n=this.index(t);return!r&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),e.prototype.removeChild.call(this,t)},r.toResult=function(e){return void 0===e&&(e={}),new as(new cs,this,e).stringify()},t}(ls);us.registerLazyResult=function(e){as=e},us.registerProcessor=function(e){cs=e};var ps=us;us.default=us,ls.registerRoot(us);var hs={comma:function(e){return hs.split(e,[","],!0)},space:function(e){return hs.split(e,[" ","\n","\t"])},split:function(e,t,r){for(var n,i=[],o="",s=!1,a=0,c=!1,l="",u=!1,p=b(e);!(n=p()).done;){var h=n.value;u?u=!1:"\\"===h?u=!0:c?h===l&&(c=!1):'"'===h||"'"===h?(c=!0,l=h):"("===h?a+=1:")"===h?a>0&&(a-=1):0===a&&t.includes(h)&&(s=!0),s?(""!==o&&i.push(o.trim()),o="",s=!1):o+=h}return(r||""!==o)&&i.push(o.trim()),i}},ds=hs;hs.default=hs;var fs=Co,gs=ds,ms=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="rule",r.nodes||(r.nodes=[]),r}return h(t,e),l(t,[{key:"selectors",get:function(){return gs.comma(this.selector)},set:function(e){var t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}}]),t}(fs),vs=ms;ms.default=ms,fs.registerRule(ms);var ys=Ai,bs=ho,_s=ss,ws=ps,ks=vs,Ss={empty:!0,space:!0},xs=function(){function e(e){this.input=e,this.root=new ws,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}var t=e.prototype;return t.atrule=function(e){var t,r,n,i=new _s;i.name=e[1].slice(1),""===i.name&&this.unnamedAtrule(i,e),this.init(i,e[2]);for(var o=!1,s=!1,a=[],c=[];!this.tokenizer.endOfFile();){if("("===(t=(e=this.tokenizer.nextToken())[0])||"["===t?c.push("("===t?")":"]"):"{"===t&&c.length>0?c.push("}"):t===c[c.length-1]&&c.pop(),0===c.length){if(";"===t){i.source.end=this.getPosition(e[2]),i.source.end.offset++,this.semicolon=!0;break}if("{"===t){s=!0;break}if("}"===t){if(a.length>0){for(r=a[n=a.length-1];r&&"space"===r[0];)r=a[--n];r&&(i.source.end=this.getPosition(r[3]||r[2]),i.source.end.offset++)}this.end(e);break}a.push(e)}else a.push(e);if(this.tokenizer.endOfFile()){o=!0;break}}i.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(i.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(i,"params",a),o&&(e=a[a.length-1],i.source.end=this.getPosition(e[3]||e[2]),i.source.end.offset++,this.spaces=i.raws.between,i.raws.between="")):(i.raws.afterName="",i.params=""),s&&(i.nodes=[],this.current=i)},t.checkMissedSemicolon=function(e){var t=this.colon(e);if(!1!==t){for(var r,n=0,i=t-1;i>=0&&("space"===(r=e[i])[0]||2!==(n+=1));i--);throw this.input.error("Missed semicolon","word"===r[0]?r[3]+1:r[2])}},t.colon=function(e){for(var t,r,n,i,o=0,s=b(e.entries());!(i=s()).done;){var a=i.value,c=a[0];if("("===(r=(t=a[1])[0])&&(o+=1),")"===r&&(o-=1),0===o&&":"===r){if(n){if("word"===n[0]&&"progid"===n[1])continue;return c}this.doubleColon(t)}n=t}return!1},t.comment=function(e){var t=new bs;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;var r=e[1].slice(2,-2);if(/^\s*$/.test(r))t.text="",t.raws.left=r,t.raws.right="";else{var n=r.match(/^(\s*)([^]*\S)(\s*)$/);t.text=n[2],t.raws.left=n[1],t.raws.right=n[3]}},t.createTokenizer=function(){this.tokenizer=function(e,t){void 0===t&&(t={});var r,n,i,o,s,a,c,l,u,p,h=e.css.valueOf(),d=t.ignoreErrors,f=h.length,g=0,m=[],v=[];function y(t){throw e.error("Unclosed "+t,g)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&g>=f},nextToken:function(e){if(v.length)return v.pop();if(!(g>=f)){var t=!!e&&e.ignoreUnclosed;switch(r=h.charCodeAt(g)){case jo:case Bo:case zo:case qo:case $o:n=g;do{n+=1,r=h.charCodeAt(n)}while(r===Bo||r===jo||r===zo||r===qo||r===$o);p=["space",h.slice(g,n)],g=n-1;break;case Vo:case Wo:case Ko:case Jo:case Xo:case Yo:case Go:var b=String.fromCharCode(r);p=[b,b,g];break;case Ho:if(l=m.length?m.pop()[1]:"",u=h.charCodeAt(g+1),"url"===l&&u!==Po&&u!==Do&&u!==Bo&&u!==jo&&u!==zo&&u!==$o&&u!==qo){n=g;do{if(a=!1,-1===(n=h.indexOf(")",n+1))){if(d||t){n=g;break}y("bracket")}for(c=n;h.charCodeAt(c-1)===Fo;)c-=1,a=!a}while(a);p=["brackets",h.slice(g,n+1),g,n],g=n}else n=h.indexOf(")",g+1),o=h.slice(g,n+1),-1===n||rs.test(o)?p=["(","(",g]:(p=["brackets",o,g,n],g=n);break;case Po:case Do:i=r===Po?"'":'"',n=g;do{if(a=!1,-1===(n=h.indexOf(i,n+1))){if(d||t){n=g+1;break}y("string")}for(c=n;h.charCodeAt(c-1)===Fo;)c-=1,a=!a}while(a);p=["string",h.slice(g,n+1),g,n],g=n;break;case Qo:es.lastIndex=g+1,es.test(h),n=0===es.lastIndex?h.length-1:es.lastIndex-2,p=["at-word",h.slice(g,n+1),g,n],g=n;break;case Fo:for(n=g,s=!0;h.charCodeAt(n+1)===Fo;)n+=1,s=!s;if(r=h.charCodeAt(n+1),s&&r!==Uo&&r!==Bo&&r!==jo&&r!==zo&&r!==qo&&r!==$o&&(n+=1,ns.test(h.charAt(n)))){for(;ns.test(h.charAt(n+1));)n+=1;h.charCodeAt(n+1)===Bo&&(n+=1)}p=["word",h.slice(g,n+1),g,n],g=n;break;default:r===Uo&&h.charCodeAt(g+1)===Zo?(0===(n=h.indexOf("*/",g+2)+1)&&(d||t?n=h.length:y("comment")),p=["comment",h.slice(g,n+1),g,n],g=n):(ts.lastIndex=g+1,ts.test(h),n=0===ts.lastIndex?h.length-1:ts.lastIndex-2,p=["word",h.slice(g,n+1),g,n],m.push(p),g=n)}return g++,p}},position:function(){return g}}}(this.input)},t.decl=function(e,t){var r=new ys;this.init(r,e[0][2]);var n,i=e[e.length-1];for(";"===i[0]&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(i[3]||i[2]||function(e){for(var t=e.length-1;t>=0;t--){var r=e[t],n=r[3]||r[2];if(n)return n}}(e)),r.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop="";e.length;){var o=e[0][0];if(":"===o||"space"===o||"comment"===o)break;r.prop+=e.shift()[1]}for(r.raws.between="";e.length;){if(":"===(n=e.shift())[0]){r.raws.between+=n[1];break}"word"===n[0]&&/\w/.test(n[1])&&this.unknownWord([n]),r.raws.between+=n[1]}"_"!==r.prop[0]&&"*"!==r.prop[0]||(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));for(var s,a=[];e.length&&("space"===(s=e[0][0])||"comment"===s);)a.push(e.shift());this.precheckMissedSemicolon(e);for(var c=e.length-1;c>=0;c--){if("!important"===(n=e[c])[1].toLowerCase()){r.important=!0;var l=this.stringFrom(e,c);" !important"!==(l=this.spacesFromEnd(e)+l)&&(r.raws.important=l);break}if("important"===n[1].toLowerCase()){for(var u=e.slice(0),p="",h=c;h>0;h--){var d=u[h][0];if(0===p.trim().indexOf("!")&&"space"!==d)break;p=u.pop()[1]+p}0===p.trim().indexOf("!")&&(r.important=!0,r.raws.important=p,e=u)}if("space"!==n[0]&&"comment"!==n[0])break}var f=e.some(function(e){return"space"!==e[0]&&"comment"!==e[0]});f&&(r.raws.between+=a.map(function(e){return e[1]}).join(""),a=[]),this.raw(r,"value",a.concat(e),t),r.value.includes(":")&&!t&&this.checkMissedSemicolon(e)},t.doubleColon=function(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})},t.emptyRule=function(e){var t=new ks;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t},t.end=function(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)},t.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())},t.freeSemicolon=function(e){if(this.spaces+=e[1],this.current.nodes){var t=this.current.nodes[this.current.nodes.length-1];t&&"rule"===t.type&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}},t.getPosition=function(e){var t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}},t.init=function(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)},t.other=function(e){for(var t=!1,r=null,n=!1,i=null,o=[],s=e[1].startsWith("--"),a=[],c=e;c;){if(r=c[0],a.push(c),"("===r||"["===r)i||(i=c),o.push("("===r?")":"]");else if(s&&n&&"{"===r)i||(i=c),o.push("}");else if(0===o.length){if(";"===r){if(n)return void this.decl(a,s);break}if("{"===r)return void this.rule(a);if("}"===r){this.tokenizer.back(a.pop()),t=!0;break}":"===r&&(n=!0)}else r===o[o.length-1]&&(o.pop(),0===o.length&&(i=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),o.length>0&&this.unclosedBracket(i),t&&n){if(!s)for(;a.length&&("space"===(c=a[a.length-1][0])||"comment"===c);)this.tokenizer.back(a.pop());this.decl(a,s)}else this.unknownWord(a)},t.parse=function(){for(var e;!this.tokenizer.endOfFile();)switch((e=this.tokenizer.nextToken())[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()},t.precheckMissedSemicolon=function(){},t.raw=function(e,t,r,n){for(var i,o,s,a,c=r.length,l="",u=!0,p=0;p0},t.runAsync=function(){var e=this;return a(function(){var t,r,n,i,o,s,a,c,l,u,p,h;return _(this,function(d){switch(d.label){case 0:e.plugin=0,t=0,d.label=1;case 1:if(!(t0))return[3,13];if(!zs(a=e.visitTick(s)))return[3,12];d.label=9;case 9:return d.trys.push([9,11,,12]),[4,a];case 10:return d.sent(),[3,12];case 11:throw c=d.sent(),l=s[s.length-1].node,e.handleError(c,l);case 12:return[3,8];case 13:return[3,7];case 14:if(!e.listeners.OnceExit)return[3,18];u=function(){var t,r,n,i,s;return _(this,function(a){switch(a.label){case 0:t=h.value,r=t[0],n=t[1],e.result.lastPlugin=r,a.label=1;case 1:return a.trys.push([1,6,,7]),"document"!==o.type?[3,3]:(i=o.nodes.map(function(t){return n(t,e.helpers)}),[4,Promise.all(i)]);case 2:return a.sent(),[3,5];case 3:return[4,n(o,e.helpers)];case 4:a.sent(),a.label=5;case 5:return[3,7];case 6:throw s=a.sent(),e.handleError(s);case 7:return[2]}})},p=b(e.listeners.OnceExit),d.label=15;case 15:return(h=p()).done?[3,18]:[5,w(u())];case 16:d.sent(),d.label=17;case 17:return[3,15];case 18:return e.processed=!0,[2,e.stringify()]}})})()},t.runOnRoot=function(e){var t=this;this.result.lastPlugin=e;try{if("object"===(void 0===e?"undefined":m(e))&&e.Once){if("document"===this.result.root.type){var r=this.result.root.nodes.map(function(r){return e.Once(r,t.helpers)});return zs(r[0])?Promise.all(r):r}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(e){throw this.handleError(e)}},t.stringify=function(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=Ts;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var r=new Ms(t,this.result.root,this.result.opts).generate();return this.result.css=r[0],this.result.map=r[1],this.result},t.sync=function(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(var e,t=b(this.plugins);!(e=t()).done;){var r=e.value;if(zs(this.runOnRoot(r)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){for(var n=this.result.root;!n[As];)n[As]=!0,this.walkSync(n);if(this.listeners.OnceExit)if("document"===n.type)for(var i,o=b(n.nodes);!(i=o()).done;){var s=i.value;this.visitSync(this.listeners.OnceExit,s)}else this.visitSync(this.listeners.OnceExit,n)}return this.result},t.then=function(e,t){return this.async().then(e,t)},t.toString=function(){return this.css},t.visitSync=function(e,t){for(var r,n=b(e);!(r=n()).done;){var i=r.value,o=i[0],s=i[1];this.result.lastPlugin=o;var a=void 0;try{a=s(t,this.helpers)}catch(e){throw this.handleError(e,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(zs(a))throw this.getAsyncError()}},t.visitTick=function(e){var t=e[e.length-1],r=t.node,n=t.visitors;if("root"===r.type||"document"===r.type||r.parent){if(n.length>0&&t.visitorIndext?(n&&(clearTimeout(n),n=null),i=c,e.apply(u,s)):n||!1===r.trailing||(n=setTimeout(function(){i=!1===r.leading?0:Date.now(),n=null,e.apply(u,s)},l))}}function sc(e,t,r,n,i){void 0===i&&(i=window);var o=i.Object.getOwnPropertyDescriptor(e,t);return i.Object.defineProperty(e,t,n?r:{set:function(e){var t=this;setTimeout(function(){r.set.call(t,e)},0),o&&o.set&&o.set.call(this,e)}}),function(){return sc(e,t,o||{},!0)}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(ic=new Proxy(ic,{get:function(e,t,r){return"map"===t&&console.error(nc),Reflect.get(e,t,r)}}));var ac=Date.now;function cc(e){var t,r,n,i,o=e.document;return{left:o.scrollingElement?o.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:o.documentElement.scrollLeft||(null==o?void 0:o.body)&&(null==(t=Ya(o.body))?void 0:t.scrollLeft)||(null==(r=null==o?void 0:o.body)?void 0:r.scrollLeft)||0,top:o.scrollingElement?o.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:(null==o?void 0:o.documentElement.scrollTop)||(null==o?void 0:o.body)&&(null==(n=Ya(o.body))?void 0:n.scrollTop)||(null==(i=null==o?void 0:o.body)?void 0:i.scrollTop)||0}}function lc(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function uc(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function pc(e){return e?e.nodeType===e.ELEMENT_NODE?e:Ya(e):null}function hc(e,t,r,n){if(!e)return!1;var i=pc(e);if(!i)return!1;try{if("string"==typeof t){if(i.classList.contains(t))return!0;if(n&&null!==i.closest("."+t))return!0}else if(ge(i,t,n))return!0}catch(e){}if(r){if(i.matches(r))return!0;if(n&&null!==i.closest(r))return!0}return!1}function dc(e,t,r){return!("TITLE"!==e.tagName||!r.headTitleMutations)||-2===t.getId(e)}function fc(e,t){if($(e))return!1;var r=t.getId(e);if(!t.has(r))return!0;var n=Ja(e);return(!n||n.nodeType!==e.DOCUMENT_NODE)&&(!n||fc(n,t))}function gc(e){return Boolean(e.changedTouches)}function mc(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function vc(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function yc(e){return!!e&&(d(e,Fa)&&"shadowRoot"in e?Boolean(e.shadowRoot):Boolean(tc(e)))}/[1-9][0-9]{12}/.test(Date.now().toString())||(ac=function(){return(new Date).getTime()});var bc=function(){function e(){x(this,"id",1),x(this,"styleIDMap",new WeakMap),x(this,"idStyleMap",new Map)}var t=e.prototype;return t.getId=function(e){var t;return null!=(t=this.styleIDMap.get(e))?t:-1},t.has=function(e){return this.styleIDMap.has(e)},t.add=function(e,t){return this.has(e)?this.getId(e):(r=void 0===t?this.id++:t,this.styleIDMap.set(e,r),this.idStyleMap.set(r,e),r);var r},t.getStyle=function(e){return this.idStyleMap.get(e)||null},t.reset=function(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1},t.generateId=function(){return this.id++},e}();function _c(e){var t,r=null;return"getRootNode"in e&&(null==(t=Qa(e))?void 0:t.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&ec(Qa(e))&&(r=ec(Qa(e))),r}function wc(e){var t=e.ownerDocument;return!!t&&(Xa(t,e)||function(e){var t=e.ownerDocument;if(!t)return!1;var r=function(e){for(var t,r=e;t=_c(r);)r=t;return r}(e);return Xa(t,r)}(e))}var kc=function(e){return e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e}(kc||{}),Sc=function(e){return e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e}(Sc||{}),xc=function(e){return e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e}(xc||{}),Cc=function(e){return e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e}(Cc||{}),Ec=function(e){return e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e}(Ec||{}),Ic=function(e){return e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e}(Ic||{}),Oc=function(e){return e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e}(Oc||{});function Nc(e){return"__ln"in e}var Ac,Rc=function(){function e(){x(this,"length",0),x(this,"head",null),x(this,"tail",null)}var t=e.prototype;return t.get=function(e){if(e>=this.length)throw new Error("Position outside of list range");for(var t=this.head,r=0;r0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))},t.handleMessage=function(e){var t=e;if("rrweb"===t.data.type&&t.origin===t.data.origin&&e.source){var r=this.crossOriginIframeMap.get(e.source);if(r){var n=this.transformCrossOriginEvent(r,t.data.event);n&&this.wrappedEmit(n,t.data.isCheckout)}}},t.transformCrossOriginEvent=function(e,t){var r,n=this;switch(t.type){case kc.FullSnapshot:this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);var i=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,i),this.patchRootIdOnNode(t.data.node,i),{timestamp:t.timestamp,type:kc.IncrementalSnapshot,data:{source:Sc.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}};case kc.Meta:case kc.Load:case kc.DomContentLoaded:return!1;case kc.Plugin:return t;case kc.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case kc.IncrementalSnapshot:switch(t.data.source){case Sc.Mutation:return t.data.adds.forEach(function(t){n.replaceIds(t,e,["parentId","nextId","previousId"]),n.replaceIdOnNode(t.node,e);var r=n.crossOriginIframeRootIdMap.get(e);r&&n.patchRootIdOnNode(t.node,r)}),t.data.removes.forEach(function(t){n.replaceIds(t,e,["parentId","id"])}),t.data.attributes.forEach(function(t){n.replaceIds(t,e,["id"])}),t.data.texts.forEach(function(t){n.replaceIds(t,e,["id"])}),t;case Sc.Drag:case Sc.TouchMove:case Sc.MouseMove:return t.data.positions.forEach(function(t){n.replaceIds(t,e,["id"])}),t;case Sc.ViewportResize:return!1;case Sc.MediaInteraction:case Sc.MouseInteraction:case Sc.Scroll:case Sc.CanvasMutation:case Sc.Input:return this.replaceIds(t.data,e,["id"]),t;case Sc.StyleSheetRule:case Sc.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case Sc.Font:return t;case Sc.Selection:return t.data.ranges.forEach(function(t){n.replaceIds(t,e,["start","end"])}),t;case Sc.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),null==(r=t.data.styles)||r.forEach(function(t){n.replaceStyleIds(t,e,["styleId"])}),t}}return!1},t.replace=function(e,t,r,n){for(var i,o=b(n);!(i=o()).done;){var s=i.value;(Array.isArray(t[s])||"number"==typeof t[s])&&(Array.isArray(t[s])?t[s]=e.getIds(r,t[s]):t[s]=e.getId(r,t[s]))}return t},t.replaceIds=function(e,t,r){return this.replace(this.crossOriginIframeMirror,e,t,r)},t.replaceStyleIds=function(e,t,r){return this.replace(this.crossOriginIframeStyleMirror,e,t,r)},t.replaceIdOnNode=function(e,t){var r=this;this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach(function(e){r.replaceIdOnNode(e,t)})},t.patchRootIdOnNode=function(e,t){var r=this;e.type===Oc.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach(function(e){r.patchRootIdOnNode(e,t)})},e}(),Qc=function(){function e(e){x(this,"shadowDoms",new WeakSet),x(this,"mutationCb"),x(this,"scrollCb"),x(this,"bypassOptions"),x(this,"mirror"),x(this,"restoreHandlers",[]),this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}var t=e.prototype;return t.init=function(){this.reset(),this.patchAttachShadow(Element,document)},t.addShadowRoot=function(e,t){var r=this;if(z(e)&&!this.shadowDoms.has(e)){this.shadowDoms.add(e);var n=$c(u({},this.bypassOptions,{doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this}),e);this.restoreHandlers.push(function(){return n.disconnect()}),this.restoreHandlers.push(zc(u({},this.bypassOptions,{scrollCb:this.scrollCb,doc:e,mirror:this.mirror}))),setTimeout(function(){e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&r.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,r.mirror.getId(ec(e))),r.restoreHandlers.push(Gc({mirror:r.mirror,stylesheetManager:r.bypassOptions.stylesheetManager},e))},0)}},t.observeAttachShadow=function(e){e.contentWindow&&e.contentDocument&&this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)},t.patchAttachShadow=function(e,t){var r=this;this.restoreHandlers.push(Ga(e.prototype,"attachShadow",function(e){return function(n){var i=e.call(this,n),o=tc(this);return o&&wc(this)&&r.addShadowRoot(o,t),i}}))},t.reset=function(){this.restoreHandlers.forEach(function(e){try{e()}catch(e){}}),this.restoreHandlers=[],this.shadowDoms=new WeakSet},e}(),el="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",tl="undefined"==typeof Uint8Array?[]:new Uint8Array(256),rl=0;rl<64;rl++)tl[el.charCodeAt(rl)]=rl;var nl=new Map,il=function(e,t,r){if(e&&(al(e,t)||"object"===(void 0===e?"undefined":m(e)))){var n=function(e,t){var r=nl.get(e);return r||(r=new Map,nl.set(e,r)),r.has(t)||r.set(t,[]),r.get(t)}(r,e.constructor.name),i=n.indexOf(e);return-1===i&&(i=n.length,n.push(e)),i}};function ol(e,t,r){return d(e,Array)?e.map(function(e){return ol(e,t,r)}):null===e?e:d(e,Float32Array)||d(e,Float64Array)||d(e,Int32Array)||d(e,Uint32Array)||d(e,Uint8Array)||d(e,Uint16Array)||d(e,Int16Array)||d(e,Int8Array)||d(e,Uint8ClampedArray)?{rr_type:e.constructor.name,args:[Object.values(e)]}:d(e,ArrayBuffer)?{rr_type:e.constructor.name,base64:function(e){var t,r=new Uint8Array(e),n=r.length,i="";for(t=0;t>2],i+=el[(3&r[t])<<4|r[t+1]>>4],i+=el[(15&r[t+1])<<2|r[t+2]>>6],i+=el[63&r[t+2]];return n%3==2?i=i.substring(0,i.length-1)+"=":n%3==1&&(i=i.substring(0,i.length-2)+"=="),i}(e)}:d(e,DataView)?{rr_type:e.constructor.name,args:[ol(e.buffer,t,r),e.byteOffset,e.byteLength]}:d(e,HTMLImageElement)?{rr_type:e.constructor.name,src:e.src}:d(e,HTMLCanvasElement)?{rr_type:"HTMLImageElement",src:e.toDataURL()}:d(e,ImageData)?{rr_type:e.constructor.name,args:[ol(e.data,t,r),e.width,e.height]}:al(e,t)||"object"===(void 0===e?"undefined":m(e))?{rr_type:e.constructor.name,index:il(e,t,r)}:e}var sl=function(e,t,r){return e.map(function(e){return ol(e,t,r)})},al=function(e,t){var r=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter(function(e){return"function"==typeof t[e]});return Boolean(r.find(function(r){return d(e,t[r])}))};function cl(e,t,r,n){var i=[];try{var o=Ga(e.HTMLCanvasElement.prototype,"getContext",function(e){return function(i){for(var o=arguments.length,s=new Array(o>1?o-1:0),a=1;a0&&(o.styles=s),this.adoptedStyleSheetCb(o)}},t.reset=function(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet},t.trackStylesheetInLinkElement=function(e){},e}(),bl=function(){function e(){x(this,"nodeMap",new WeakMap),x(this,"active",!1)}var t=e.prototype;return t.inOtherBuffer=function(e,t){var r=this.nodeMap.get(e);return r&&Array.from(r).some(function(e){return e!==t})},t.add=function(e,t){var r=this;this.active||(this.active=!0,requestAnimationFrame(function(){r.nodeMap=new WeakMap,r.active=!1})),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))},t.destroy=function(){},e}(),_l=!1;try{if(2!==Array.from([1],function(e){return 2*e})[0]){var wl=document.createElement("iframe");document.body.appendChild(wl),Array.from=(null==(k=wl.contentWindow)?void 0:k.Array.from)||Array.from,document.body.removeChild(wl)}}catch(e){console.debug("Unable to override Array.from",e)}var kl,Sl,xl=new W;function Cl(e){void 0===e&&(e={});var t=e.emit,r=e.checkoutEveryNms,n=e.checkoutEveryNth,i=e.blockClass,o=void 0===i?"rr-block":i,s=e.blockSelector,a=void 0===s?null:s,c=e.ignoreClass,l=void 0===c?"rr-ignore":c,p=e.ignoreSelector,h=void 0===p?null:p,d=e.maskTextClass,f=void 0===d?"rr-mask":d,g=e.maskTextSelector,m=void 0===g?null:g,v=e.inlineStylesheet,y=void 0===v||v,_=e.maskAllInputs,w=e.maskInputOptions,k=e.slimDOMOptions,S=e.maskInputFn,x=e.maskTextFn,C=e.hooks,E=e.packFn,I=e.sampling,O=void 0===I?{}:I,N=e.dataURLOptions,A=void 0===N?{}:N,R=e.mousemoveWait,M=e.recordDOM,T=void 0===M||M,L=e.recordCanvas,P=void 0!==L&&L,D=e.recordCrossOriginIframes,F=void 0!==D&&D,U=e.recordAfter,j=void 0===U?"DOMContentLoaded"===e.recordAfter?e.recordAfter:"load":U,B=e.userTriggeredOnInput,$=void 0!==B&&B,z=e.collectFonts,q=void 0!==z&&z,V=e.inlineImages,H=void 0!==V&&V,G=e.plugins,K=e.keepIframeSrcFn,J=void 0===K?function(){return!1}:K,Y=e.ignoreCSSAttributes,Z=void 0===Y?new Set([]):Y,X=e.errorHandler;Ac=X;var Q=!F||window.parent===window,ee=!1;if(!Q)try{window.parent.document&&(ee=!1)}catch(e){ee=!0}if(Q&&!t)throw new Error("emit function is required");if(!Q&&!ee)return function(){};void 0!==R&&void 0===O.mousemove&&(O.mousemove=R),xl.reset();var te,re=!0===_?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0,hidden:!0}:void 0!==w?w:{password:!0},ne=!0===k||"all"===k?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===k,headMetaDescKeywords:"all"===k,headTitleMutations:"all"===k}:k||{};!function(e){void 0===e&&(e=window),"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach)}();var ie=0,oe=function(e){for(var t,r=b(G||[]);!(t=r()).done;){var n=t.value;n.eventProcessor&&(e=n.eventProcessor(e))}return E&&!ee&&(e=E(e)),e};fl=function(e,i){var o,s=e;if(s.timestamp=ac(),!(null==(o=jc[0])?void 0:o.isFrozen())||s.type===kc.FullSnapshot||s.type===kc.IncrementalSnapshot&&s.data.source===Sc.Mutation||jc.forEach(function(e){return e.unfreeze()}),Q)null==t||t(oe(s),i);else if(ee){var a={type:"rrweb",event:oe(s),origin:window.location.origin,isCheckout:i};window.parent.postMessage(a,"*")}if(s.type===kc.FullSnapshot)te=s,ie=0;else if(s.type===kc.IncrementalSnapshot){if(s.data.source===Sc.Mutation&&s.data.isAttachIframe)return;ie++;var c=n&&ie>=n,l=r&&s.timestamp-te.timestamp>r;(c||l)&&gl(!0)}};for(var se,ae=function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Mutation},e)})},ce=function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Scroll},e)})},le=function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.CanvasMutation},e)})},ue=new yl({mutationCb:ae,adoptedStyleSheetCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.AdoptedStyleSheet},e)})}}),pe=new Xc({mirror:xl,mutationCb:ae,stylesheetManager:ue,recordCrossOriginIframes:F,wrappedEmit:fl}),he=b(G||[]);!(se=he()).done;){var de=se.value;de.getMirror&&de.getMirror({nodeMirror:xl,crossOriginIframeMirror:pe.crossOriginIframeMirror,crossOriginIframeStyleMirror:pe.crossOriginIframeStyleMirror})}var fe=new bl;ml=new vl({recordCanvas:P,mutationCb:le,win:window,blockClass:o,blockSelector:a,mirror:xl,sampling:O.canvas,dataURLOptions:A});var ge=new Qc({mutationCb:ae,scrollCb:ce,bypassOptions:{blockClass:o,blockSelector:a,maskTextClass:f,maskTextSelector:m,inlineStylesheet:y,maskInputOptions:re,dataURLOptions:A,maskTextFn:x,maskInputFn:S,recordCanvas:P,inlineImages:H,sampling:O,slimDOMOptions:ne,iframeManager:pe,stylesheetManager:ue,canvasManager:ml,keepIframeSrcFn:J,processedNodeManager:fe},mirror:xl});gl=function(e){if(void 0===e&&(e=!1),T){fl({type:kc.Meta,data:{href:window.location.href,width:uc(),height:lc()}},e),ue.reset(),ge.init(),jc.forEach(function(e){return e.lock()});var t=function(e,t){var r=t||{},n=r.mirror,i=void 0===n?new W:n,o=r.blockClass,s=r.blockSelector,a=r.maskTextClass,c=r.maskTextSelector,l=r.inlineStylesheet,u=r.inlineImages,p=r.recordCanvas,h=r.maskAllInputs,d=void 0!==h&&h,f=r.slimDOM,g=void 0!==f&&f,m=r.keepIframeSrcFn;return be(e,{doc:e,mirror:i,blockClass:void 0===o?"rr-block":o,blockSelector:void 0===s?null:s,maskTextClass:void 0===a?"rr-mask":a,maskTextSelector:void 0===c?null:c,skipChild:!1,inlineStylesheet:void 0===l||l,maskInputOptions:!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0,hidden:!0}:!1===d?{password:!0}:d,maskTextFn:r.maskTextFn,maskInputFn:r.maskInputFn,slimDOMOptions:!0===g||"all"===g?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===g,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===g?{}:g,dataURLOptions:r.dataURLOptions,inlineImages:void 0!==u&&u,recordCanvas:void 0!==p&&p,preserveWhiteSpace:r.preserveWhiteSpace,onSerialize:r.onSerialize,onIframeLoad:r.onIframeLoad,iframeLoadTimeout:r.iframeLoadTimeout,onStylesheetLoad:r.onStylesheetLoad,stylesheetLoadTimeout:r.stylesheetLoadTimeout,keepIframeSrcFn:void 0===m?function(){return!1}:m,newlyAddedElement:!1})}(document,{mirror:xl,blockClass:o,blockSelector:a,maskTextClass:f,maskTextSelector:m,inlineStylesheet:y,maskAllInputs:re,maskTextFn:x,maskInputFn:S,slimDOM:ne,dataURLOptions:A,recordCanvas:P,inlineImages:H,onSerialize:function(e){mc(e,xl)&&pe.addIframe(e),vc(e,xl)&&ue.trackLinkElement(e),yc(e)&&ge.addShadowRoot(tc(e),document)},onIframeLoad:function(e,t){pe.attachIframe(e,t),ge.observeAttachShadow(e)},onStylesheetLoad:function(e,t){ue.attachLinkElement(e,t)},keepIframeSrcFn:J});if(!t)return console.warn("Failed to snapshot the document");fl({type:kc.FullSnapshot,data:{node:t,initialOffset:cc(window)}},e),jc.forEach(function(e){return e.unlock()}),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&ue.adoptStyleSheets(document.adoptedStyleSheets,xl.getId(document))}};try{var me=[],ve=function(e){var t;return Uc(Kc)({mutationCb:ae,mousemoveCb:function(e,t){return fl({type:kc.IncrementalSnapshot,data:{source:t,positions:e}})},mouseInteractionCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.MouseInteraction},e)})},scrollCb:ce,viewportResizeCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.ViewportResize},e)})},inputCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Input},e)})},mediaInteractionCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.MediaInteraction},e)})},styleSheetRuleCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.StyleSheetRule},e)})},styleDeclarationCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.StyleDeclaration},e)})},canvasMutationCb:le,fontCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Font},e)})},selectionCb:function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Selection},e)})},customElementCb:function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.CustomElement},e)})},blockClass:o,ignoreClass:l,ignoreSelector:h,maskTextClass:f,maskTextSelector:m,maskInputOptions:re,inlineStylesheet:y,sampling:O,recordDOM:T,recordCanvas:P,inlineImages:H,userTriggeredOnInput:$,collectFonts:q,doc:e,maskInputFn:S,maskTextFn:x,keepIframeSrcFn:J,blockSelector:a,slimDOMOptions:ne,dataURLOptions:A,mirror:xl,iframeManager:pe,stylesheetManager:ue,shadowDomManager:ge,processedNodeManager:fe,canvasManager:ml,ignoreCSSAttributes:Z,plugins:(null==(t=null==G?void 0:G.filter(function(e){return e.observer}))?void 0:t.map(function(e){return{observer:e.observer,options:e.options,callback:function(t){return fl({type:kc.Plugin,data:{plugin:e.name,payload:t}})}}}))||[]},C)};pe.addLoadListener(function(e){try{me.push(ve(e.contentDocument))}catch(e){console.warn(e)}});var ye=function(){gl(),me.push(ve(document)),_l=!0};return"interactive"===document.readyState||"complete"===document.readyState?ye():(me.push(rc("DOMContentLoaded",function(){fl({type:kc.DomContentLoaded,data:{}}),"DOMContentLoaded"===j&&ye()})),me.push(rc("load",function(){fl({type:kc.Load,data:{}}),"load"===j&&ye()},window))),function(){me.forEach(function(e){try{e()}catch(e){String(e).toLowerCase().includes("cross-origin")||console.warn(e)}}),fe.destroy(),_l=!1,Ac=void 0}}catch(e){console.warn(e)}}Cl.addCustomEvent=function(e,t){if(!_l)throw new Error("please add custom event after start recording");fl({type:kc.Custom,data:{tag:e,payload:t}})},Cl.freezePage=function(){jc.forEach(function(e){return e.freeze()})},Cl.takeFullSnapshot=function(e){if(!_l)throw new Error("please take full snapshot after start recording");gl(e)},Cl.mirror=xl,(Sl=kl||(kl={}))[Sl.NotStarted=0]="NotStarted",Sl[Sl.Running=1]="Running",Sl[Sl.Stopped=2]="Stopped",Cl.addCustomEvent,Cl.freezePage,Cl.takeFullSnapshot;var El=Object.defineProperty,Il=function(e,t,r){return function(e,t,r){return t in e?El(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},Ol=function(){function e(e){Il(this,"fileName"),Il(this,"functionName"),Il(this,"lineNumber"),Il(this,"columnNumber"),this.fileName=e.fileName||"",this.functionName=e.functionName||"",this.lineNumber=e.lineNumber,this.columnNumber=e.columnNumber}return e.prototype.toString=function(){var e=this.lineNumber||"",t=this.columnNumber||"";return this.functionName?this.functionName+" ("+this.fileName+":"+e+":"+t+")":this.fileName+":"+e+":"+t},e}(),Nl=/(^|@)\S+:\d+/,Al=/^\s*at .*(\S+:\d+|\(native\))/m,Rl=/^(eval@)?(\[native code])?$/,Ml={parse:function(e){return e?void 0!==e.stacktrace||void 0!==e["opera#sourceloc"]?this.parseOpera(e):e.stack&&e.stack.match(Al)?this.parseV8OrIE(e):e.stack?this.parseFFOrSafari(e):(console.warn("[console-record-plugin]: Failed to parse error object:",e),[]):[]},extractLocation:function(e){if(-1===e.indexOf(":"))return[e];var t=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/[()]/g,""));if(!t)throw new Error("Cannot parse given url: "+e);return[t[1],t[2]||void 0,t[3]||void 0]},parseV8OrIE:function(e){return e.stack.split("\n").filter(function(e){return!!e.match(Al)},this).map(function(e){e.indexOf("(eval ")>-1&&(e=e.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(\),.*$)/g,""));var t=e.replace(/^\s+/,"").replace(/\(eval code/g,"("),r=t.match(/ (\((.+):(\d+):(\d+)\)$)/),n=(t=r?t.replace(r[0],""):t).split(/\s+/).slice(1),i=this.extractLocation(r?r[1]:n.pop()),o=n.join(" ")||void 0,s=["eval",""].indexOf(i[0])>-1?void 0:i[0];return new Ol({functionName:o,fileName:s,lineNumber:i[1],columnNumber:i[2]})},this)},parseFFOrSafari:function(e){return e.stack.split("\n").filter(function(e){return!e.match(Rl)},this).map(function(e){if(e.indexOf(" > eval")>-1&&(e=e.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),-1===e.indexOf("@")&&-1===e.indexOf(":"))return new Ol({functionName:e});var t=/((.*".+"[^@]*)?[^@]*)(?:@)/,r=e.match(t),n=r&&r[1]?r[1]:void 0,i=this.extractLocation(e.replace(t,""));return new Ol({functionName:n,fileName:i[0],lineNumber:i[1],columnNumber:i[2]})},this)},parseOpera:function(e){return!e.stacktrace||e.message.indexOf("\n")>-1&&e.message.split("\n").length>e.stacktrace.split("\n").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(e){for(var t=/Line (\d+).*script (?:in )?(\S+)/i,r=e.message.split("\n"),n=[],i=2,o=r.length;i/,"$2").replace(/\([^)]*\)/g,"")||void 0;return new Ol({functionName:n,fileName:r[0],lineNumber:r[1],columnNumber:r[2]})},this)}};function Tl(e){if(!e||!e.outerHTML)return"";for(var t="";e.parentElement;){var r=e.localName;if(!r)break;r=r.toLowerCase();var n=e.parentElement,i=[];if(n.children&&n.children.length>0)for(var o=0;o1&&(r+=":eq("+i.indexOf(e)+")"),t=r+(t?">"+t:""),e=n}return t}function Ll(e){return"[object Object]"===Object.prototype.toString.call(e)}function Pl(e,t){if(0===t)return!0;for(var r,n=b(Object.keys(e));!(r=n()).done;){var i=r.value;if(Ll(e[i])&&Pl(e[i],t-1))return!0}return!1}function Dl(e,t){var r={numOfKeysLimit:50,depthOfLimit:4};Object.assign(r,t);var n=[],i=[];return JSON.stringify(e,function(e,t){if(n.length>0){var o=n.indexOf(this);~o?n.splice(o+1):n.push(this),~o?i.splice(o,1/0,e):i.push(e),~n.indexOf(t)&&(t=n[0]===t?"[Circular ~]":"[Circular ~."+i.slice(0,n.indexOf(t)).join(".")+"]")}else n.push(t);if(null===t)return t;if(void 0===t)return"undefined";if(Ll(s=t)&&Object.keys(s).length>r.numOfKeysLimit||"function"==typeof s||Ll(s)&&Pl(s,r.depthOfLimit))return function(e){var t=e.toString();return r.stringLengthLimit&&t.length>r.stringLengthLimit&&(t=t.slice(0,r.stringLengthLimit)+"..."),t}(t);var s;if("bigint"===(void 0===t?"undefined":m(t)))return t.toString()+"n";if(d(t,Event)){var a={};for(var c in t){var l=t[c];Array.isArray(l)?a[c]=Tl(l.length?l[0]:null):a[c]=l}return a}return d(t,Node)?d(t,HTMLElement)?t?t.outerHTML:"":t.nodeName:d(t,Error)?t.stack?t.stack+"\nEnd of stack for Error object":t.name+": "+t.message:t})}var Fl={level:["assert","clear","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],lengthThreshold:1e3,logger:"console"};function Ul(e,t,r){var n,i=r?Object.assign({},Fl,r):Fl,o=i.logger;if(!o)return function(){};n="string"==typeof o?t[o]:o;var s=0,a=!1,c=[];if(i.level.includes("error")){var l=function(t){var r=t.message,n=t.error,o=Ml.parse(n).map(function(e){return e.toString()}),s=[Dl(r,i.stringifyOptions)];e({level:"error",trace:o,payload:s})};t.addEventListener("error",l),c.push(function(){t.removeEventListener("error",l)});var u=function(t){var r,n;d(t.reason,Error)?n=[Dl("Uncaught (in promise) "+(r=t.reason).name+": "+r.message,i.stringifyOptions)]:(r=new Error,n=[Dl("Uncaught (in promise)",i.stringifyOptions),Dl(t.reason,i.stringifyOptions)]);var o=Ml.parse(r).map(function(e){return e.toString()});e({level:"error",trace:o,payload:n})};t.addEventListener("unhandledrejection",u),c.push(function(){t.removeEventListener("unhandledrejection",u)})}for(var p,h=b(i.level);!(p=h()).done;){var f=p.value;c.push(g(n,f))}return function(){c.forEach(function(e){return e()})};function g(t,r){var n=this;return t[r]?function(t,o){try{if(!(o in t))return function(){};var c=t[o],l=function(t){var o=n;return function(){for(var n=arguments.length,c=new Array(n),l=0;l0&&Wl(Gl,r))}catch(e){Yl.call(new Xl(r),e)}}}function Yl(e){var t=this;t.triggered||(t.triggered=!0,t.def&&(t=t.def),t.msg=e,t.state=2,t.chain.length>0&&Wl(Gl,t))}function Zl(e,t,r,n){for(var i=0;i0&&(t[r]=e)}),t},Tu.truncate=function(e,t){var r;return"string"==typeof e?r=e.slice(0,t):Tu.isArray(e)?(r=[],Tu.each(e,function(e){r.push(Tu.truncate(e,t))})):Tu.isObject(e)?(r={},Tu.each(e,function(e,n){r[n]=Tu.truncate(e,t)})):r=e,r},Tu.JSONEncode=function(e){var t=function(e){var t=/[\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,r={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};return t.lastIndex=0,t.test(e)?'"'+e.replace(t,function(e){var t=r[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'},r=function(e,n){var i="",o=0,s="",a="",c=0,l=i,u=[],p=n[e];switch(p&&"object"==typeof p&&"function"==typeof p.toJSON&&(p=p.toJSON(e)),typeof p){case"string":return t(p);case"number":return isFinite(p)?String(p):"null";case"boolean":case"null":return String(p);case"object":if(!p)return"null";if(i+=" ",u=[],"[object Array]"===bu.apply(p)){for(c=p.length,o=0;o="0"&&iu<="9";)t+=iu,lu();if("."===iu)for(t+=".";lu()&&iu>="0"&&iu<="9";)t+=iu;if("e"===iu||"E"===iu)for(t+=iu,lu(),"-"!==iu&&"+"!==iu||(t+=iu,lu());iu>="0"&&iu<="9";)t+=iu,lu();if(e=+t,isFinite(e))return e;cu("Bad number")},pu=function(){var e,t,r,n="";if('"'===iu)for(;lu();){if('"'===iu)return lu(),n;if("\\"===iu)if(lu(),"u"===iu){for(r=0,t=0;t<4&&(e=parseInt(lu(),16),isFinite(e));t+=1)r=16*r+e;n+=String.fromCharCode(r)}else{if("string"!=typeof au[iu])break;n+=au[iu]}else n+=iu}cu("Bad string")},hu=function(){for(;iu&&iu<=" ";)lu()},su=function(){switch(hu(),iu){case"{":return function(){var e,t={};if("{"===iu){if(lu("{"),hu(),"}"===iu)return lu("}"),t;for(;iu;){if(e=pu(),hu(),lu(":"),Object.hasOwnProperty.call(t,e)&&cu('Duplicate key "'+e+'"'),t[e]=su(),hu(),"}"===iu)return lu("}"),t;lu(","),hu()}}cu("Bad object")}();case"[":return function(){var e=[];if("["===iu){if(lu("["),hu(),"]"===iu)return lu("]"),e;for(;iu;){if(e.push(su()),hu(),"]"===iu)return lu("]"),e;lu(","),hu()}}cu("Bad array")}();case'"':return pu();case"-":return uu();default:return iu>="0"&&iu<="9"?uu():function(){switch(iu){case"t":return lu("t"),lu("r"),lu("u"),lu("e"),!0;case"f":return lu("f"),lu("a"),lu("l"),lu("s"),lu("e"),!1;case"n":return lu("n"),lu("u"),lu("l"),lu("l"),null}cu('Unexpected "'+iu+'"')}()}},function(e){var t;return ou=e,nu=0,iu=" ",t=su(),hu(),iu&&cu("Syntax error"),t}),Tu.base64Encode=function(e){var t,r,n,i,o,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",a=0,c=0,l="",u=[];if(!e)return e;e=Tu.utf8Encode(e);do{t=(o=e.charCodeAt(a++)<<16|e.charCodeAt(a++)<<8|e.charCodeAt(a++))>>18&63,r=o>>12&63,n=o>>6&63,i=63&o,u[c++]=s.charAt(t)+s.charAt(r)+s.charAt(n)+s.charAt(i)}while(a127&&s<2048?String.fromCharCode(s>>6|192,63&s|128):String.fromCharCode(s>>12|224,s>>6&63|128,63&s|128),null!==a&&(r>t&&(o+=e.substring(t,r)),o+=a,t=r=i+1)}return r>t&&(o+=e.substring(t,e.length)),o},Tu.UUID=function(){try{return n.crypto.randomUUID()}catch(r){for(var e=new Array(36),t=0;t<36;t++)e[t]=Math.floor(16*Math.random());return e[14]=4,e[19]=e[19]&=-5,e[19]=e[19]|=8,e[8]=e[13]=e[18]=e[23]="-",Tu.map(e,function(e){return e.toString(16)}).join("")}};var ju=["ahrefsbot","ahrefssiteaudit","amazonbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandex","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"];Tu.isBlockedUA=function(e){var t;for(e=e.toLowerCase(),t=0;t=0}function n(t){if(!Su.getElementsByTagName)return[];var n,i,o,s,a,c,l,u,p,h,d=t.split(" "),f=[Su];for(c=0;c-1){o=(i=n.split("#"))[0];var g=i[1],m=Su.getElementById(g);if(!m||o&&m.nodeName.toLowerCase()!=o)return[];f=[m]}else if(n.indexOf(".")>-1){o=(i=n.split("."))[0];var v=i[1];for(o||(o="*"),s=[],a=0,l=0;l-1};break;default:b=function(e){return e.getAttribute(_)}}for(f=[],h=0,l=0;l=3?t[2]:""},currentUrl:function(){return n.location.href},properties:function(e){return"object"!=typeof e&&(e={}),Tu.extend(Tu.strip_empty_properties({$os:Tu.info.os(),$browser:Tu.info.browser(Eu,ku.vendor,xu),$referrer:Su.referrer,$referring_domain:Tu.info.referringDomain(Su.referrer),$device:Tu.info.device(Eu)}),{$current_url:Tu.info.currentUrl(),$browser_version:Tu.info.browserVersion(Eu,ku.vendor,xu),$screen_height:Cu.height,$screen_width:Cu.width,mp_lib:"web",$lib_version:du.LIB_VERSION,$insert_id:Ku(),time:Tu.timestamp()/1e3},Tu.strip_empty_properties(e))},people_properties:function(){return Tu.extend(Tu.strip_empty_properties({$os:Tu.info.os(),$browser:Tu.info.browser(Eu,ku.vendor,xu)}),{$browser_version:Tu.info.browserVersion(Eu,ku.vendor,xu)})},mpPageViewProperties:function(){return Tu.strip_empty_properties({current_page_title:Su.title,current_domain:n.location.hostname,current_url_path:n.location.pathname,current_url_protocol:n.location.protocol,current_url_search:n.location.search})}};var Ku=function(e){var t=Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10);return e?t.substring(0,e):t},Ju=/[a-z0-9][a-z0-9-]*\.[a-z]+$/i,Yu=/[a-z0-9][a-z0-9-]+\.[a-z.]{2,6}$/i,Zu=function(e){var t=Yu,r=e.split("."),n=r[r.length-1];(n.length>4||"com"===n||"org"===n)&&(t=Ju);var i=e.match(t);return i?i[0]:""},Xu=function(){},Qu=null,ep=null;"undefined"!=typeof JSON&&(Qu=JSON.stringify,ep=JSON.parse),Qu=Qu||Tu.JSONEncode,ep=ep||Tu.JSONDecode,Tu.info=Tu.info,Tu.info.browser=Tu.info.browser,Tu.info.browserVersion=Tu.info.browserVersion,Tu.info.device=Tu.info.device,Tu.info.properties=Tu.info.properties,Tu.isBlockedUA=Tu.isBlockedUA,Tu.isEmptyObject=Tu.isEmptyObject,Tu.isObject=Tu.isObject,Tu.JSONDecode=Tu.JSONDecode,Tu.JSONEncode=Tu.JSONEncode,Tu.toArray=Tu.toArray,Tu.NPO=eu;var tp="mixpanelRecordingEvents",rp="mixpanelRecordingRegistry",np=[tp,rp],ip=function(e){this.dbPromise=null,this.storeName=e};function op(e,t){mp(!0,e,t)}function sp(e,t){mp(!1,e,t)}function ap(e,t){return"1"===gp(e,t)}function cp(e,t){if(function(e){if(e&&e.ignoreDnt)return!1;var t=e&&e.window||n,r=t.navigator||{},i=!1;return Tu.each([r.doNotTrack,r.msDoNotTrack,t.doNotTrack],function(e){Tu.includes([!0,1,"1","yes"],e)&&(i=!0)}),i}(t))return Lu.warn('This browser has "Do Not Track" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the "Do Not Track" browser setting, initialize the Mixpanel instance with the config "ignore_dnt: true"'),!0;var r="0"===gp(e,t);return r&&Lu.warn("You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data."),r}function lp(e){return vp(e,function(e){return this.get_config(e)})}function up(e){return vp(e,function(e){return this._get_config(e)})}function pp(e){return vp(e,function(e){return this._get_config(e)})}function hp(e,t){dp(t=t||{}).remove(fp(e,t),!!t.crossSubdomainCookie,t.cookieDomain)}function dp(e){return"localStorage"===(e=e||{}).persistenceType?Tu.localStorage:Tu.cookie}function fp(e,t){return((t=t||{}).persistencePrefix||"__mp_opt_in_out_")+e}function gp(e,t){return dp(t).get(fp(e,t))}function mp(e,t,r){Tu.isString(t)&&t.length?(dp(r=r||{}).set(fp(t,r),e?1:0,Tu.isNumber(r.cookieExpiration)?r.cookieExpiration:null,!!r.crossSubdomainCookie,!!r.secureCookie,!!r.crossSiteCookie,r.cookieDomain),r.track&&e&&r.track(r.trackEventName||"$opt_in",r.trackProperties,{send_immediately:!0})):Lu.error("gdpr."+(e?"optIn":"optOut")+" called with an invalid token")}function vp(e,t){return function(){var r=!1;try{var n=t.call(this,"token"),i=t.call(this,"ignore_dnt"),o=t.call(this,"opt_out_tracking_persistence_type"),s=t.call(this,"opt_out_tracking_cookie_prefix"),a=t.call(this,"window");n&&(r=cp(n,{ignoreDnt:i,persistenceType:o,persistencePrefix:s,window:a}))}catch(e){Lu.error("Unexpected error when checking tracking opt-out status: "+e)}if(!r)return e.apply(this,arguments);var c=arguments[arguments.length-1];"function"==typeof c&&c(0)}}ip.prototype._openDb=function(){return new tu(function(e,t){var r=n.indexedDB.open("mixpanelBrowserDb",1);r.onerror=function(){t(r.error)},r.onsuccess=function(){e(r.result)},r.onupgradeneeded=function(e){var t=e.target.result;np.forEach(function(e){t.createObjectStore(e)})}})},ip.prototype.init=function(){return n.indexedDB?(this.dbPromise||(this.dbPromise=this._openDb()),this.dbPromise.then(function(e){return e instanceof n.IDBDatabase?tu.resolve():tu.reject(e)})):tu.reject("indexedDB is not supported in this browser")},ip.prototype.isInitialized=function(){return!!this.dbPromise},ip.prototype.makeTransaction=function(e,t){var r=this.storeName,n=function(n){return new tu(function(i,o){var s=n.transaction(r,e);s.oncomplete=function(){i(s)},s.onabort=s.onerror=function(){o(s.error)},t(s.objectStore(r))})};return this.dbPromise.then(n).catch(function(e){return e&&"InvalidStateError"===e.name?(this.dbPromise=this._openDb(),this.dbPromise.then(n)):tu.reject(e)}.bind(this))},ip.prototype.setItem=function(e,t){return this.makeTransaction("readwrite",function(r){r.put(t,e)})},ip.prototype.getItem=function(e){var t;return this.makeTransaction("readonly",function(r){t=r.get(e)}).then(function(){return t.result})},ip.prototype.removeItem=function(e){return this.makeTransaction("readwrite",function(t){t.delete(e)})},ip.prototype.getAll=function(){var e;return this.makeTransaction("readonly",function(t){e=t.getAll()}).then(function(){return e.result})};var yp=Du("lock"),bp=function(e,t){t=t||{},this.storageKey=e,this.storage=t.storage||n.localStorage,this.pollIntervalMS=t.pollIntervalMS||100,this.timeoutMS=t.timeoutMS||2e3,this.promiseImpl=t.promiseImpl||tu};bp.prototype.withLock=function(e,t){return new(0,this.promiseImpl)(Tu.bind(function(r,n){var i=t||(new Date).getTime()+"|"+Math.random(),o=(new Date).getTime(),s=this.storageKey,a=this.pollIntervalMS,c=this.timeoutMS,l=this.storage,u=s+":X",p=s+":Y",h=s+":Z",d=function(e){if((new Date).getTime()-o>c)return yp.error("Timeout waiting for mutex on "+s+"; clearing lock. ["+i+"]"),l.removeItem(h),l.removeItem(p),void m();setTimeout(function(){try{e()}catch(e){n(e)}},a*(Math.random()+.1))},f=function(e,t){e()?t():d(function(){f(e,t)})},g=function(){var e=l.getItem(p);return!(e&&e!==i||(l.setItem(p,i),l.getItem(p)!==i&&(zu(l,!0)||n(new Error("localStorage support dropped while acquiring lock")),1)))},m=function(){l.setItem(u,i),f(g,function(){l.getItem(u)!==i?d(function(){l.getItem(p)===i?f(function(){return!l.getItem(h)},v):m()}):v()})},v=function(){l.setItem(h,"1");var t=function(){l.removeItem(h),l.getItem(p)===i&&l.removeItem(p),l.getItem(u)===i&&l.removeItem(u)};e().then(function(e){t(),r(e)}).catch(function(e){t(),n(e)})};try{if(!zu(l,!0))throw new Error("localStorage support check failed");m()}catch(e){n(e)}},this))};var _p=function(e){this.storage=e||n.localStorage};_p.prototype.init=function(){return tu.resolve()},_p.prototype.isInitialized=function(){return!0},_p.prototype.setItem=function(e,t){return new tu(Tu.bind(function(r,n){try{this.storage.setItem(e,Qu(t))}catch(e){n(e)}r()},this))},_p.prototype.getItem=function(e){return new tu(Tu.bind(function(t,r){var n;try{n=ep(this.storage.getItem(e))}catch(e){r(e)}t(n)},this))},_p.prototype.removeItem=function(e){return new tu(Tu.bind(function(t,r){try{this.storage.removeItem(e)}catch(e){r(e)}t()},this))};var wp=Du("batch"),kp=function(e,t){var r,i,o,s;t=t||{},this.storageKey=e,this.usePersistence=t.usePersistence,this.usePersistence&&(this.queueStorage=t.queueStorage||new _p,this.lock=new bp(e,{storage:t.sharedLockStorage||n.localStorage,timeoutMS:t.sharedLockTimeoutMS})),this.reportError=t.errorReporter||Tu.bind(wp.error,wp),this.pid=t.pid||null,this.memQueue=[],this.initialized=!1,t.enqueueThrottleMs?this.enqueuePersisted=(r=Tu.bind(this._enqueuePersisted,this),i=t.enqueueThrottleMs,o=null,s=[],function(e){var t=this;return s.push(e),o||(o=new tu(function(e){setTimeout(function(){var n=r.apply(t,[s]);o=null,s=[],e(n)},i)})),o}):this.enqueuePersisted=Tu.bind(function(e){return this._enqueuePersisted([e])},this)};kp.prototype.ensureInit=function(){return this.initialized||!this.usePersistence?tu.resolve():this.queueStorage.init().then(Tu.bind(function(){this.initialized=!0},this)).catch(Tu.bind(function(e){this.reportError("Error initializing queue persistence. Disabling persistence",e),this.initialized=!0,this.usePersistence=!1},this))},kp.prototype.enqueue=function(e,t){var r={id:Ku(),flushAfter:(new Date).getTime()+2*t,payload:e};return this.usePersistence?this.enqueuePersisted(r):(this.memQueue.push(r),tu.resolve(!0))},kp.prototype._enqueuePersisted=function(e){var t=Tu.bind(function(){return this.ensureInit().then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(t){return this.saveToStorage(t.concat(e))},this)).then(Tu.bind(function(t){return t&&(this.memQueue=this.memQueue.concat(e)),t},this)).catch(Tu.bind(function(t){return this.reportError("Error enqueueing items",t,e),!1},this))},this);return this.lock.withLock(t,this.pid).catch(Tu.bind(function(e){return this.reportError("Error acquiring storage lock",e),!1},this))},kp.prototype.fillBatch=function(e){var t=this.memQueue.slice(0,e);return this.usePersistence&&t.lengtho.flushAfter&&!n[o.id]&&(o.orphaned=!0,t.push(o),t.length>=e))break}}return t},this)):tu.resolve(t)};var Sp=function(e,t){var r=[];return Tu.each(e,function(e){e.id&&!t[e.id]&&r.push(e)}),r};kp.prototype.removeItemsByID=function(e){var t={};if(Tu.each(e,function(e){t[e]=!0}),this.memQueue=Sp(this.memQueue,t),this.usePersistence){var r=Tu.bind(function(){return this.ensureInit().then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(e){return e=Sp(e,t),this.saveToStorage(e)},this)).then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(e){for(var r=0;r5&&(this.reportError("[dupe] item ID sent too many times, not sending",{item:e,batchSize:o.length,timesSent:this.itemIdsSentSuccessfully[n]}),r=!1):this.reportError("[dupe] found item with no ID",{item:e}),r&&a.push(t)}c[e.id]=t},this),a.length<1)return this.requestInProgress=!1,this.resetFlush(),tu.resolve();var l=Tu.bind(function(){return this.queue.removeItemsByID(Tu.map(o,function(e){return e.id})).then(Tu.bind(function(e){return Tu.each(o,Tu.bind(function(e){var t=e.id;t?(this.itemIdsSentSuccessfully[t]=this.itemIdsSentSuccessfully[t]||0,this.itemIdsSentSuccessfully[t]++,this.itemIdsSentSuccessfully[t]>5&&this.reportError("[dupe] item ID sent too many times",{item:e,batchSize:o.length,timesSent:this.itemIdsSentSuccessfully[t]})):this.reportError("[dupe] found item with no ID while removing",{item:e})},this)),e?(this.consecutiveRemovalFailures=0,this.flushOnlyOnInterval&&!s?(this.resetFlush(),tu.resolve()):this.flush()):(++this.consecutiveRemovalFailures>5?(this.reportError("Too many queue failures; disabling batching system."),this.stopAllBatching()):this.resetFlush(),tu.resolve())},this))},this),u=Tu.bind(function(s){this.requestInProgress=!1;try{if(e.unloading)return this.queue.updatePayloads(c);if(Tu.isObject(s)&&"timeout"===s.error&&(new Date).getTime()-r>=t)return this.reportError("Network timeout; retrying"),this.flush();if(Tu.isObject(s)&&(s.httpStatusCode>=500||429===s.httpStatusCode||s.httpStatusCode<=0&&(p=n.navigator.onLine,!Tu.isUndefined(p)&&!p)||"timeout"===s.error)){var a=2*this.flushInterval;return s.retryAfter&&(a=1e3*parseInt(s.retryAfter,10)||a),a=Math.min(6e5,a),this.reportError("Error; retry in "+a+" ms"),this.scheduleFlush(a),tu.resolve()}if(Tu.isObject(s)&&413===s.httpStatusCode){if(o.length>1){var u=Math.max(1,Math.floor(i/2));return this.batchSize=Math.min(this.batchSize,u,o.length-1),this.reportError("413 response; reducing batch size to "+this.batchSize),this.resetFlush(),tu.resolve()}return this.reportError("Single-event request too large; dropping",o),this.resetBatchSize(),l()}return l()}catch(e){this.reportError("Error handling API response",e),this.resetFlush()}var p},this),p={method:"POST",verbose:!0,ignore_json_errors:!0,timeout_ms:t};return e.unloading&&(p.transport="sendBeacon"),Cp.log("MIXPANEL REQUEST:",a),this.sendRequestPromise(a,p).then(u)},this)).catch(Tu.bind(function(e){this.reportError("Error flushing request queue",e),this.resetFlush()},this))},Ep.prototype.reportError=function(e,t){if(Cp.error.apply(Cp.error,arguments),this.errorReporter)try{t instanceof Error||(t=new Error(e)),this.errorReporter(e,t)}catch(t){Cp.error(t)}};var Ip=function(e){var t=Date.now();return!e||t>e.maxExpires||t>e.idleExpires},Op=Du("recorder"),Np=n.CompressionStream,Ap={batch_size:1e3,batch_flush_interval_ms:1e4,batch_request_timeout_ms:9e4,batch_autostart:!0},Rp=new Set([Sc.MouseMove,Sc.MouseInteraction,Sc.Scroll,Sc.ViewportResize,Sc.Input,Sc.TouchMove,Sc.MediaInteraction,Sc.Drag,Sc.Selection]),Mp=function(e){this._mixpanel=e.mixpanelInstance,this._onIdleTimeout=e.onIdleTimeout||Xu,this._onMaxLengthReached=e.onMaxLengthReached||Xu,this._onBatchSent=e.onBatchSent||Xu,this._rrwebRecord=e.rrwebRecord||null,this._stopRecording=null,this.replayId=e.replayId,this.batchStartUrl=e.batchStartUrl||null,this.replayStartUrl=e.replayStartUrl||null,this.idleExpires=e.idleExpires||null,this.maxExpires=e.maxExpires||null,this.replayStartTime=e.replayStartTime||null,this.lastEventTimestamp=e.lastEventTimestamp||null,this.seqNo=e.seqNo||0,this.idleTimeoutId=null,this.maxTimeoutId=null,this.recordMaxMs=fu,this.recordMinMs=0;var t=zu(e.sharedLockStorage,!0)&&!this.getConfig("disable_persistence");this.batcherKey="__mprec_"+this.getConfig("name")+"_"+this.getConfig("token")+"_"+this.replayId,this.queueStorage=new ip(tp),this.batcher=new Ep(this.batcherKey,{errorReporter:this.reportError.bind(this),flushOnlyOnInterval:!0,libConfig:Ap,sendRequestFunc:this.flushEventsWithOptOut.bind(this),queueStorage:this.queueStorage,sharedLockStorage:e.sharedLockStorage,usePersistence:t,stopAllBatchingFunc:this.stopRecording.bind(this),enqueueThrottleMs:250,sharedLockTimeoutMS:1e4})};Mp.prototype.getUserIdInfo=function(){if(this.finalFlushUserIdInfo)return this.finalFlushUserIdInfo;var e={distinct_id:String(this._mixpanel.get_distinct_id())},t=this._mixpanel.get_property("$device_id");t&&(e.$device_id=t);var r=this._mixpanel.get_property("$user_id");return r&&(e.$user_id=r),e},Mp.prototype.unloadPersistedData=function(){return this.batcher.stop(),this.queueStorage.init().catch(function(){this.reportError("Error initializing IndexedDB storage for unloading persisted data.")}.bind(this)).then(function(){return this.getDurationMs()fu&&(this.recordMaxMs=fu,Op.critical("record_max_ms cannot be greater than "+fu+"ms. Capping value.")),this.maxExpires||(this.maxExpires=(new Date).getTime()+this.recordMaxMs),this.recordMinMs=this._getRecordMinMs(),this.replayStartTime||(this.replayStartTime=(new Date).getTime(),this.batchStartUrl=Tu.info.currentUrl(),this.replayStartUrl=Tu.info.currentUrl()),e||this.recordMinMs>0?this.batcher.stop():this.batcher.start();var t=function(){clearTimeout(this.idleTimeoutId);var e=this.getConfig("record_idle_timeout_ms");this.idleTimeoutId=setTimeout(this._onIdleTimeout,e),this.idleExpires=(new Date).getTime()+e}.bind(this);t();var r,n=this.getConfig("record_block_selector");""!==n&&null!==n||(n=void 0);try{this._stopRecording=this._rrwebRecord({emit:function(e){this.idleExpires&&this.idleExpires=this.recordMinMs&&this.batcher.start(),t()),this.__enqueuePromise=this.batcher.enqueue(e),(null===this.lastEventTimestamp||e.timestamp>this.lastEventTimestamp)&&(this.lastEventTimestamp=e.timestamp))}.bind(this),blockClass:this.getConfig("record_block_class"),blockSelector:n,collectFonts:this.getConfig("record_collect_fonts"),dataURLOptions:{type:"image/webp",quality:.6},maskAllInputs:!0,maskTextClass:this.getConfig("record_mask_text_class"),maskTextSelector:this.getConfig("record_mask_text_selector"),recordCanvas:this.getConfig("record_canvas"),sampling:{canvas:15},plugins:this.getConfig("record_console")?[(r={stringifyOptions:{stringLengthLimit:1e3,numOfKeysLimit:50,depthOfLimit:2}},{name:"rrweb/console@1",observer:Ul,options:r})]:[]})}catch(e){this.reportError("Unexpected error when starting rrweb recording.",e)}if("function"!=typeof this._stopRecording)return this.reportError("rrweb failed to start, skipping this recording."),this._stopRecording=null,void this.stopRecording();var i=this.maxExpires-(new Date).getTime();this.maxTimeoutId=setTimeout(this._onMaxLengthReached.bind(this),i)}else Op.log("Recording already in progress, skipping startRecording.");else this.reportError("rrweb record function not provided. ")},Mp.prototype.stopRecording=function(e){if(this.finalFlushUserIdInfo=this.getUserIdInfo(),!this.isRrwebStopped()){try{this._stopRecording()}catch(e){this.reportError("Error with rrweb stopRecording",e)}this._stopRecording=null}var t;return this.batcher.stopped?t=this.batcher.clear():e||(t=this.batcher.flush()),this.batcher.stop(),clearTimeout(this.idleTimeoutId),clearTimeout(this.maxTimeoutId),t},Mp.prototype.isRrwebStopped=function(){return null===this._stopRecording},Mp.prototype.flushEventsWithOptOut=function(e,t,r){var n=function(e){0===e&&(this.stopRecording(),r({error:"Tracking has been opted out, stopping recording."}))}.bind(this);this._flushEvents(e,t,r,n)},Mp.prototype.serialize=function(){var e;try{e=this._mixpanel.get_tab_id()}catch(t){this.reportError("Error getting tab ID for serialization ",t),e=null}return{replayId:this.replayId,seqNo:this.seqNo,replayStartTime:this.replayStartTime,batchStartUrl:this.batchStartUrl,replayStartUrl:this.replayStartUrl,lastEventTimestamp:this.lastEventTimestamp,idleExpires:this.idleExpires,maxExpires:this.maxExpires,tabId:e}},Mp.deserialize=function(e,t){return new Mp(Tu.extend({},t,{replayId:e.replayId,batchStartUrl:e.batchStartUrl,replayStartUrl:e.replayStartUrl,idleExpires:e.idleExpires,maxExpires:e.maxExpires,replayStartTime:e.replayStartTime,lastEventTimestamp:e.lastEventTimestamp,seqNo:e.seqNo,sharedLockStorage:t.sharedLockStorage}))},Mp.prototype._sendRequest=function(e,t,r,i){var o=function(t,r){200===t.status&&this.replayId===e&&(this.seqNo++,this.batchStartUrl=Tu.info.currentUrl()),this._onBatchSent(),i({status:0,httpStatusCode:t.status,responseBody:r,retryAfter:t.headers.get("Retry-After")})}.bind(this),s=this._mixpanel.get_api_host&&this._mixpanel.get_api_host("record")||this.getConfig("api_host");n.fetch(s+"/"+this.getConfig("api_routes").record+"?"+new URLSearchParams(t),{method:"POST",headers:{Authorization:"Basic "+btoa(this.getConfig("token")+":"),"Content-Type":"application/octet-stream"},body:r}).then(function(e){e.json().then(function(t){o(e,t)}).catch(function(e){i({error:e})})}).catch(function(e){i({error:e,httpStatusCode:0})})},Mp.prototype._flushEvents=lp(function(e,t,r){var i=e.length;if(i>0){for(var o=this.replayId,s=1/0,a=-1/0,c=!1,l=0;l=16.4&&o<16.6)}(Eu,ku.vendor,xu)){var d=new Blob([h],{type:"application/json"}).stream().pipeThrough(new Np("gzip"));new Response(d).blob().then(function(e){p.format="gzip",this._sendRequest(o,p,e,r)}.bind(this))}else p.format="body",this._sendRequest(o,p,h,r)}}),Mp.prototype.reportError=function(e,t){Op.error.apply(Op.error,arguments);try{t||e instanceof Error||(e=new Error(e)),this.getConfig("error_reporter")(e,t)}catch(t){Op.error(t)}},Mp.prototype.getDurationMs=function(){return null===this.replayStartTime?0:null===this.lastEventTimestamp?(new Date).getTime()-this.replayStartTime:this.lastEventTimestamp-this.replayStartTime},Mp.prototype._getRecordMinMs=function(){var e=this.getConfig("record_min_ms");return e>8e3?(Op.critical("record_min_ms cannot be greater than 8000ms. Capping value."),8e3):e};var Tp=function(e){this.idb=new ip(rp),this.errorReporter=e.errorReporter,this.mixpanelInstance=e.mixpanelInstance,this.sharedLockStorage=e.sharedLockStorage};Tp.prototype.isPersistenceEnabled=function(){return!this.mixpanelInstance.get_config("disable_persistence")},Tp.prototype.handleError=function(e){this.errorReporter("IndexedDB error: ",e)},Tp.prototype.setActiveRecording=function(e){if(!this.isPersistenceEnabled())return tu.resolve();var t=e.tabId;return t?this.idb.init().then(function(){return this.idb.setItem(t,e)}.bind(this)).catch(this.handleError.bind(this)):(console.warn("No tab ID is set, cannot persist recording metadata."),tu.resolve())},Tp.prototype.getActiveRecording=function(){return this.isPersistenceEnabled()?this.idb.init().then(function(){return this.idb.getItem(this.mixpanelInstance.get_tab_id())}.bind(this)).then(function(e){return Ip(e)?null:e}.bind(this)).catch(this.handleError.bind(this)):tu.resolve(null)},Tp.prototype.clearActiveRecording=function(){return this.isPersistenceEnabled()?this.markActiveRecordingExpired():this.deleteActiveRecording()},Tp.prototype.markActiveRecordingExpired=function(){return this.getActiveRecording().then(function(e){if(e)return e.maxExpires=0,this.setActiveRecording(e)}.bind(this)).catch(this.handleError.bind(this))},Tp.prototype.deleteActiveRecording=function(){return this.idb.isInitialized()?this.idb.removeItem(this.mixpanelInstance.get_tab_id()).catch(this.handleError.bind(this)):tu.resolve()},Tp.prototype.flushInactiveRecordings=function(){return this.isPersistenceEnabled()?this.idb.init().then(function(){return this.idb.getAll()}.bind(this)).then(function(e){var t=e.filter(function(e){return Ip(e)}).map(function(e){return Mp.deserialize(e,{mixpanelInstance:this.mixpanelInstance,sharedLockStorage:this.sharedLockStorage}).unloadPersistedData().then(function(){return this.idb.removeItem(e.tabId)}.bind(this)).catch(this.handleError.bind(this))}.bind(this));return tu.all(t)}.bind(this)).catch(this.handleError.bind(this)):tu.resolve([])};var Lp=Du("recorder"),Pp=function(e,t,r){this.mixpanelInstance=e,this.rrwebRecord=t||Cl,this.sharedLockStorage=r,this.recordingRegistry=new Tp({mixpanelInstance:this.mixpanelInstance,errorReporter:Lp.error,sharedLockStorage:r}),this._flushInactivePromise=this.recordingRegistry.flushInactiveRecordings(),this.activeRecording=null,this.stopRecordingInProgress=!1};Pp.prototype.startRecording=function(e){if(e=e||{},!this.activeRecording||this.activeRecording.isRrwebStopped()){var t=function(){Lp.log("Idle timeout reached, restarting recording."),this.resetRecording()}.bind(this),r=function(){Lp.log("Max recording length reached, stopping recording."),this.resetRecording()}.bind(this),n=function(){this.recordingRegistry.setActiveRecording(this.activeRecording.serialize()),this.__flushPromise=this.activeRecording.batcher._flushPromise}.bind(this),i={mixpanelInstance:this.mixpanelInstance,onBatchSent:n,onIdleTimeout:t,onMaxLengthReached:r,replayId:Tu.UUID(),rrwebRecord:this.rrwebRecord,sharedLockStorage:this.sharedLockStorage};return e.activeSerializedRecording?this.activeRecording=Mp.deserialize(e.activeSerializedRecording,i):this.activeRecording=new Mp(i),this.activeRecording.startRecording(e.shouldStopBatcher),this.recordingRegistry.setActiveRecording(this.activeRecording.serialize())}Lp.log("Recording already in progress, skipping startRecording.")},Pp.prototype.stopRecording=function(){return this.stopRecordingInProgress=!0,this._stopCurrentRecording(!1,!0).then(function(){return this.recordingRegistry.clearActiveRecording()}.bind(this)).then(function(){this.stopRecordingInProgress=!1}.bind(this))},Pp.prototype.pauseRecording=function(){return this._stopCurrentRecording(!1)},Pp.prototype._stopCurrentRecording=function(e,t){if(this.activeRecording){var r=this.activeRecording.stopRecording(e);return t&&(this.activeRecording=null),r}return tu.resolve()},Pp.prototype.resumeRecording=function(e){return this.activeRecording&&this.activeRecording.isRrwebStopped()?(this.activeRecording.startRecording(!1),tu.resolve(null)):this.recordingRegistry.getActiveRecording().then(function(t){return t&&!this.stopRecordingInProgress?this.startRecording({activeSerializedRecording:t}):e?this.startRecording({shouldStopBatcher:!1}):(Lp.log("No resumable recording found."),null)}.bind(this))},Pp.prototype.resetRecording=function(){this.stopRecording(),this.startRecording({shouldStopBatcher:!0})},Pp.prototype.getActiveReplayId=function(){return this.activeRecording&&!this.activeRecording.isRrwebStopped()?this.activeRecording.replayId:null},Object.defineProperty(Pp.prototype,"replayId",{get:function(){return this.getActiveReplayId()}}),n.__mp_recorder=Pp;var Dp="change",Fp="click",Up="hashchange",jp="load",Bp="mp_locationchange",$p="popstate",zp="scrollend",qp="scroll",Vp="submit",Wp="visibilitychange",Hp=["clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","x","y"],Gp=["mp-include"],Kp=["mp-no-track"],Jp=Kp.concat(["mp-sensitive"]),Yp=["aria-label","aria-labelledby","aria-describedby","href","name","role","title","type"],Zp={button:!0,checkbox:!0,combobox:!0,grid:!0,link:!0,listbox:!0,menu:!0,menubar:!0,menuitem:!0,menuitemcheckbox:!0,menuitemradio:!0,navigation:!0,option:!0,radio:!0,radiogroup:!0,searchbox:!0,slider:!0,spinbutton:!0,switch:!0,tab:!0,tablist:!0,textbox:!0,tree:!0,treegrid:!0,treeitem:!0},Xp={base:!0,head:!0,html:!0,link:!0,meta:!0,script:!0,style:!0,title:!0,br:!0,hr:!0,wbr:!0,noscript:!0,picture:!0,source:!0,template:!0,track:!0},Qp={article:!0,div:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,p:!0,section:!0,span:!0},eh=["onclick","onmousedown","onmouseup","onpointerdown","onpointerup","ontouchend","ontouchstart"],th=Du("autocapture");function rh(e){for(var t={},r=nh(e).split(" "),n=0;n0?t[0]:e.target||e.srcElement}function bh(){this.clicks=[]}function _h(e,t){this.changeCallback=e||function(){},this.observerConfig=t,this.observedShadowRoots=null,this.shadowObservers=[]}bh.prototype.isRageClick=function(e,t){var r=(t=t||{}).threshold_px||30,n=t.timeout_ms||1e3,i=t.click_count||4;if(t.interactive_elements_only){var o=yh(e);if(!o||mh(o))return!1}var s=Date.now(),a=e.pageX,c=e.pageY,l=this.clicks[this.clicks.length-1];if(l&&s-l.timestamp=i)return this.clicks=[],!0}else this.clicks=[{x:a,y:c,timestamp:s}];return!1},_h.prototype.getEventTarget=function(e){if(this.observedShadowRoots)return yh(e)},_h.prototype.observeFromEvent=function(e){if(this.observedShadowRoots)for(var t=vh(e),r=0;r=t?this.hasChangesAfter(s.timestamp)||i.push(s):this.pendingClicks.push(s)}return i},Ch.prototype.hasChangesAfter=function(e){return this.lastChangeEventTimestamp>=e-100},Ch.prototype.recordChangeEvent=function(){this.lastChangeEventTimestamp=Date.now()},Ch.prototype.triggerProcessing=function(e){this.processingActive||(this.processingActive=!0,this.processRecursively(e))},Ch.prototype.processRecursively=function(e){if(this.isTracking&&this.onDeadClickCallback){var t=e.timeout_ms,r=this;this.processingTimeout=setTimeout(function(){if(r.processingActive){for(var t=r.getDeadClicks(e),n=0;n0?r.processRecursively(e):r.processingActive=!1}},t)}else this.processingActive=!1},Ch.prototype.startTracking=function(){if(!this.isTracking){this.isTracking=!0;var e=this;wh.forEach(function(t){var r=function(){e.recordChangeEvent()};document.addEventListener(t,r,{capture:!0,passive:!0}),e.eventListeners.push({target:document,event:t,handler:r,options:{capture:!0,passive:!0}})}),Sh.forEach(function(t){var r=function(){e.recordChangeEvent()};window.addEventListener(t,r),e.eventListeners.push({target:window,event:t,handler:r})}),kh.forEach(function(t){var r=function(){e.recordChangeEvent()};window.addEventListener(t,r,{passive:!0}),e.eventListeners.push({target:window,event:t,handler:r,options:{passive:!0}})});var t=function(){e.recordChangeEvent()};if(document.addEventListener("selectionchange",t),e.eventListeners.push({target:document,event:"selectionchange",handler:t}),window.MutationObserver)try{this.mutationObserver=new window.MutationObserver(function(){e.recordChangeEvent()}),this.mutationObserver.observe(document.body||document.documentElement,xh)}catch(e){th.critical("Error while setting up mutation observer",e)}if(window.customElements)try{this.shadowDOMObserver=new _h(function(){e.recordChangeEvent()},xh),this.shadowDOMObserver.start()}catch(e){th.critical("Error while setting up shadow DOM observer",e),this.shadowDOMObserver=null}}},Ch.prototype.stopTracking=function(){if(this.isTracking){this.isTracking=!1,this.pendingClicks=[],this.lastChangeEventTimestamp=0,this.processingActive=!1,this.processingTimeout&&(clearTimeout(this.processingTimeout),this.processingTimeout=null);for(var e=0;ethis.maxScrollViewDepth&&(this.maxScrollViewDepth=e),this.previousScrollHeight=Su.body.scrollHeight}}.bind(this));this.listenerScrollDepth=e.listener,n.addEventListener(e.eventType,this.listenerScrollDepth)}},Zh.prototype.initClickTracking=function(){n.removeEventListener(Fp,this.listenerClick),(this.getConfig(Uh)||this.mp.get_config("record_heatmap_data"))&&(th.log("Initializing click tracking"),this.listenerClick=function(e){(this.getConfig(Uh)||this.mp.is_recording_heatmap_data())&&this.trackDomEvent(e,Kh)}.bind(this),n.addEventListener(Fp,this.listenerClick))},Zh.prototype.initDeadClickTracking=function(){this._getClickTrackingConfig(jh)||this.mp.get_config("record_heatmap_data")?(th.log("Initializing dead click tracking"),this._deadClickTracker||(this._deadClickTracker=new Ch(function(e){this.trackDomEvent(e,Jh)}.bind(this)),this._deadClickTracker.startTracking()),this.listenerDeadClick||(this.listenerDeadClick=function(e){var t=this._getClickTrackingConfig(jh);if((t||this.mp.is_recording_heatmap_data())&&!this.currentUrlBlocked()){var r=t||{};r.timeout_ms||(r.timeout_ms=500),this._deadClickTracker.trackClick(e,r)}}.bind(this),n.addEventListener(Fp,this.listenerDeadClick))):this.stopDeadClickTracking()},Zh.prototype.initInputTracking=function(){n.removeEventListener(Dp,this.listenerChange),this.getConfig(Bh)&&(th.log("Initializing input tracking"),this.listenerChange=function(e){this.getConfig(Bh)&&this.trackDomEvent(e,"$mp_input_change")}.bind(this),n.addEventListener(Dp,this.listenerChange))},Zh.prototype.initPageviewTracking=function(){if(n.removeEventListener(Bp,this.listenerLocationchange),this.pageviewTrackingConfig()){th.log("Initializing pageview tracking");var e="",t=!1;this.currentUrlBlocked()||(t=this.mp.track_pageview(Gh)),t&&(e=Tu.info.currentUrl()),this.listenerLocationchange=Fu(function(){if(!this.currentUrlBlocked()){var t=Tu.info.currentUrl(),r=!1,n=t.split("#")[0].split("?")[0]!==e.split("#")[0].split("?")[0],i=this.pageviewTrackingConfig();i===Ih?r=t!==e:"url-with-path-and-query-string"===i?r=t.split("#")[0]!==e.split("#")[0]:"url-with-path"===i&&(r=n),r&&(this.mp.track_pageview(Gh)&&(e=t),n&&(this.lastScrollCheckpoint=0,th.log("Path change: re-initializing scroll depth checkpoints")))}}.bind(this)),n.addEventListener(Bp,this.listenerLocationchange)}},Zh.prototype.initRageClickTracking=function(){n.removeEventListener(Fp,this.listenerRageClick),(this._getClickTrackingConfig(zh)||this.mp.get_config("record_heatmap_data"))&&(th.log("Initializing rage click tracking"),this._rageClickTracker||(this._rageClickTracker=new bh),this.listenerRageClick=function(e){var t=this._getClickTrackingConfig(zh);(t||this.mp.is_recording_heatmap_data())&&(this.currentUrlBlocked()||this._rageClickTracker.isRageClick(e,t)&&this.trackDomEvent(e,Yh))}.bind(this),n.addEventListener(Fp,this.listenerRageClick))},Zh.prototype.initScrollTracking=function(){if(n.removeEventListener(zp,this.listenerScroll),n.removeEventListener(qp,this.listenerScroll),this.getConfig(qh)){th.log("Initializing scroll tracking"),this.lastScrollCheckpoint=0;var e=fh(function(){if(this.getConfig(qh)&&!this.currentUrlBlocked()){var e=this.getConfig(Dh),t=(this.getConfig(Fh)||[]).slice().sort(function(e,t){return e-t}),r=n.scrollY,i=Tu.extend({$scroll_top:r},Gh);try{var o=Su.body.scrollHeight,s=Math.round(r/(o-n.innerHeight)*100);if(i.$scroll_height=o,i.$scroll_percentage=s,s>this.lastScrollCheckpoint)for(var a=0;a=c&&this.lastScrollCheckpoint=0;p--)c=this._mixpanel.persistence.load_queue(ud),l=c.pop(),a._mixpanel.persistence.save(),Tu.isEmptyObject(l)||a.append(l,u);var h=this._mixpanel.persistence.load_queue(hd);if(!Tu.isUndefined(h)&&Tu.isArray(h)&&h.length)for(var d,f=function(e,t){0===e&&a._mixpanel.persistence._add_to_people_queue(hd,d),Tu.isUndefined(s)||s(e,t)},g=h.length-1;g>=0;g--)h=this._mixpanel.persistence.load_queue(hd),d=h.pop(),a._mixpanel.persistence.save(),Tu.isEmptyObject(d)||a.remove(d,f)},gd.prototype._is_reserved_property=function(e){return"$distinct_id"===e||"$token"===e||"$device_id"===e||"$user_id"===e||"$had_persisted_distinct_id"===e},gd.prototype.set=gd.prototype.set,gd.prototype.set_once=gd.prototype.set_once,gd.prototype.unset=gd.prototype.unset,gd.prototype.increment=gd.prototype.increment,gd.prototype.append=gd.prototype.append,gd.prototype.remove=gd.prototype.remove,gd.prototype.union=gd.prototype.union,gd.prototype.track_charge=gd.prototype.track_charge,gd.prototype.clear_charges=gd.prototype.clear_charges,gd.prototype.delete_user=gd.prototype.delete_user,gd.prototype.toString=gd.prototype.toString;var md,vd="__mps",yd="__mpso",bd="__mpus",_d="__mpa",wd="__mpap",kd="__mpr",Sd="__mpu",xd="$people_distinct_id",Cd="__alias",Ed="__timers",Id=[vd,yd,bd,_d,wd,kd,Sd,xd,Cd,Ed],Od=function(e){this.props={},this.campaign_params_saved=!1,e.persistence_name?this.name="mp_"+e.persistence_name:this.name="mp_"+e.token+"_mixpanel";var t=e.persistence;"cookie"!==t&&"localStorage"!==t&&(Lu.critical("Unknown persistence type "+t+"; falling back to cookie"),t=e.persistence="cookie"),"localStorage"===t&&Tu.localStorage.is_supported()?this.storage=Tu.localStorage:this.storage=Tu.cookie,this.load(),this.update_config(e),this.upgrade(),this.save()};Od.prototype.properties=function(){var e={};return this.load(),Tu.each(this.props,function(t,r){Tu.include(Id,r)||(e[r]=t)}),e},Od.prototype.load=function(){if(!this.disabled){var e=this.storage.parse(this.name);e&&(this.props=Tu.extend({},e))}},Od.prototype.upgrade=function(){var e,t;this.storage===Tu.localStorage?(e=Tu.cookie.parse(this.name),Tu.cookie.remove(this.name),Tu.cookie.remove(this.name,!0),e&&this.register_once(e)):this.storage===Tu.cookie&&(t=Tu.localStorage.parse(this.name),Tu.localStorage.remove(this.name),t&&this.register_once(t))},Od.prototype.save=function(){this.disabled||this.storage.set(this.name,Qu(this.props),this.expire_days,this.cross_subdomain,this.secure,this.cross_site,this.cookie_domain)},Od.prototype.load_prop=function(e){return this.load(),this.props[e]},Od.prototype.remove=function(){this.storage.remove(this.name,!1,this.cookie_domain),this.storage.remove(this.name,!0,this.cookie_domain)},Od.prototype.clear=function(){this.remove(),this.props={}},Od.prototype.register_once=function(e,t,r){return!!Tu.isObject(e)&&(void 0===t&&(t="None"),this.expire_days=void 0===r?this.default_expiry:r,this.load(),Tu.each(e,function(e,r){this.props.hasOwnProperty(r)&&this.props[r]!==t||(this.props[r]=e)},this),this.save(),!0)},Od.prototype.register=function(e,t){return!!Tu.isObject(e)&&(this.expire_days=void 0===t?this.default_expiry:t,this.load(),Tu.extend(this.props,e),this.save(),!0)},Od.prototype.unregister=function(e){this.load(),e in this.props&&(delete this.props[e],this.save())},Od.prototype.update_search_keyword=function(e){this.register(Tu.info.searchInfo(e))},Od.prototype.update_referrer_info=function(e){this.register_once({$initial_referrer:e||"$direct",$initial_referring_domain:Tu.info.referringDomain(e)||"$direct"},"")},Od.prototype.get_referrer_info=function(){return Tu.strip_empty_properties({$initial_referrer:this.props.$initial_referrer,$initial_referring_domain:this.props.$initial_referring_domain})},Od.prototype.update_config=function(e){this.default_expiry=this.expire_days=e.cookie_expiration,this.set_disabled(e.disable_persistence),this.set_cookie_domain(e.cookie_domain),this.set_cross_site(e.cross_site_cookie),this.set_cross_subdomain(e.cross_subdomain_cookie),this.set_secure(e.secure_cookie)},Od.prototype.set_disabled=function(e){this.disabled=e,this.disabled?this.remove():this.save()},Od.prototype.set_cookie_domain=function(e){e!==this.cookie_domain&&(this.remove(),this.cookie_domain=e,this.save())},Od.prototype.set_cross_site=function(e){e!==this.cross_site&&(this.cross_site=e,this.remove(),this.save())},Od.prototype.set_cross_subdomain=function(e){e!==this.cross_subdomain&&(this.cross_subdomain=e,this.remove(),this.save())},Od.prototype.get_cross_subdomain=function(){return this.cross_subdomain},Od.prototype.set_secure=function(e){e!==this.secure&&(this.secure=!!e,this.remove(),this.save())},Od.prototype._add_to_people_queue=function(e,t){var r=this._get_queue_key(e),n=t[e],i=this._get_or_create_queue(sd),o=this._get_or_create_queue(ad),s=this._get_or_create_queue(cd),a=this._get_or_create_queue(ld),c=this._get_or_create_queue(pd),l=this._get_or_create_queue(hd,[]),u=this._get_or_create_queue(ud,[]);r===vd?(Tu.extend(i,n),this._pop_from_people_queue(ld,n),this._pop_from_people_queue(pd,n),this._pop_from_people_queue(cd,n)):r===yd?(Tu.each(n,function(e,t){t in o||(o[t]=e)}),this._pop_from_people_queue(cd,n)):r===bd?Tu.each(n,function(e){Tu.each([i,o,a,c],function(t){e in t&&delete t[e]}),Tu.each(u,function(t){e in t&&delete t[e]}),s[e]=!0}):r===_d?(Tu.each(n,function(e,t){t in i?i[t]+=e:(t in a||(a[t]=0),a[t]+=e)},this),this._pop_from_people_queue(cd,n)):r===Sd?(Tu.each(n,function(e,t){Tu.isArray(e)&&(t in c||(c[t]=[]),Tu.each(e,function(e){Tu.include(c[t],e)||c[t].push(e)}))}),this._pop_from_people_queue(cd,n)):r===kd?(l.push(n),this._pop_from_people_queue(ud,n)):r===wd&&(u.push(n),this._pop_from_people_queue(cd,n)),Lu.log("MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):"),Lu.log(t),this.save()},Od.prototype._pop_from_people_queue=function(e,t){var r=this.props[this._get_queue_key(e)];Tu.isUndefined(r)||Tu.each(t,function(t,n){e===ud||e===hd?Tu.each(r,function(e){e[n]===t&&delete e[n]}):delete r[n]},this)},Od.prototype.load_queue=function(e){return this.load_prop(this._get_queue_key(e))},Od.prototype._get_queue_key=function(e){return e===sd?vd:e===ad?yd:e===cd?bd:e===ld?_d:e===ud?wd:e===hd?kd:e===pd?Sd:void Lu.error("Invalid queue:",e)},Od.prototype._get_or_create_queue=function(e,t){var r=this._get_queue_key(e);return t=Tu.isUndefined(t)?{}:t,this.props[r]||(this.props[r]=t)},Od.prototype.set_event_timer=function(e,t){var r=this.load_prop(Ed)||{};r[e]=t,this.props[Ed]=r,this.save()},Od.prototype.remove_event_timer=function(e){var t=(this.load_prop(Ed)||{})[e];return Tu.isUndefined(t)||(delete this.props[Ed][e],this.save()),t};var Nd,Ad=function(e,t){throw new Error(e+" not available in this build.")},Rd=function(e){return e},Md="mixpanel",Td="base64",Ld="$device:",Pd=n.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest,Dd=!Pd&&-1===Eu.indexOf("MSIE")&&-1===Eu.indexOf("Mozilla"),Fd=null;ku.sendBeacon&&(Fd=function(){return ku.sendBeacon.apply(ku,arguments)});var Ud={track:"track/",engage:"engage/",groups:"groups/",record:"record/",flags:"flags/"},jd={api_host:"https://api-js.mixpanel.com",api_hosts:{},api_routes:Ud,api_extra_query_params:{},api_method:"POST",api_transport:"XHR",api_payload_format:Td,app_host:"https://mixpanel.com",autocapture:!1,cdn:"https://cdn.mxpnl.com",cross_site_cookie:!1,cross_subdomain_cookie:!0,error_reporter:Xu,flags:!1,persistence:"cookie",persistence_name:"",cookie_domain:"",cookie_name:"",loaded:Xu,mp_loader:null,track_marketing:!0,track_pageview:!1,skip_first_touch_marketing:!1,store_google:!0,stop_utm_persistence:!1,save_referrer:!0,test:!1,verbose:!1,img:!1,debug:!1,track_links_timeout:300,cookie_expiration:365,upgrade:!1,disable_persistence:!1,disable_cookie:!1,secure_cookie:!1,ip:!0,opt_out_tracking_by_default:!1,opt_out_persistence_by_default:!1,opt_out_tracking_persistence_type:"localStorage",opt_out_tracking_cookie_prefix:null,property_blacklist:[],xhr_headers:{},ignore_dnt:!1,batch_requests:!0,batch_size:50,batch_flush_interval_ms:5e3,batch_request_timeout_ms:9e4,batch_autostart:!0,hooks:{},record_block_class:new RegExp("^(mp-block|fs-exclude|amp-block|rr-block|ph-no-capture)$"),record_block_selector:"img, video, audio",record_canvas:!1,record_collect_fonts:!1,record_console:!0,record_heatmap_data:!1,record_idle_timeout_ms:18e5,record_mask_text_class:new RegExp("^(mp-mask|fs-mask|amp-mask|rr-mask|ph-mask)$"),record_mask_text_selector:"*",record_max_ms:fu,record_min_ms:0,record_sessions_percent:0,recorder_src:"https://cdn.mxpnl.com/libs/mixpanel-recorder.min.js"},Bd=!1,$d=function(){},zd=function(e,t,r){var n,i=r===Md?Nd:Nd[r];if(i&&0===md)n=i;else{if(i&&!Tu.isArray(i))return void Lu.error("You have already initialized "+r);n=new $d}if(n._cached_groups={},n._init(e,t,r),n.people=new gd,n.people._init(n),!n.get_config("skip_first_touch_marketing")){var o=Tu.info.campaignParams(null),s={},a=!1;Tu.each(o,function(e,t){s["initial_"+t]=e,e&&(a=!0)}),a&&n.people.set_once(s)}return du.DEBUG=du.DEBUG||n.get_config("debug"),!Tu.isUndefined(i)&&Tu.isArray(i)&&(n._execute_array.call(n.people,i.people),n._execute_array(i)),n};$d.prototype.init=function(e,t,r){if(Tu.isUndefined(r))this.report_error("You must name your new library: init(token, config, name)");else{if(r!==Md){var n=zd(e,t,r);return Nd[r]=n,n._loaded(),n}this.report_error("You must initialize the main mixpanel object right after you include the Mixpanel js snippet")}},$d.prototype._init=function(e,t,r){t=t||{},this.__loaded=!0,this.config={};var i={};if("api_payload_format"in t||(t.api_host||jd.api_host).match(/\.mixpanel\.com/)&&(i.api_payload_format="json"),this.set_config(Tu.extend({},jd,i,t,{name:r,token:e,callback_fn:(r===Md?r:Md+"."+r)+"._jsc"})),this._jsc=Xu,this.__dom_loaded_queue=[],this.__request_queue=[],this.__disabled_events=[],this._flags={disable_all_events:!1,identify_called:!1},this.request_batchers={},this._batch_requests=this.get_config("batch_requests"),this._batch_requests)if(Tu.localStorage.is_supported(!0)&&Pd){if(this.init_batchers(),Fd&&n.addEventListener){var o=Tu.bind(function(){this.request_batchers.events.stopped||this.request_batchers.events.flush({unloading:!0})},this);n.addEventListener("pagehide",function(e){e.persisted&&o()}),n.addEventListener("visibilitychange",function(){"hidden"===Su.visibilityState&&o()})}}else this._batch_requests=!1,Lu.log("Turning off Mixpanel request-queueing; needs XHR and localStorage support"),Tu.each(this.get_batcher_configs(),function(e){Lu.log("Clearing batch queue "+e.queue_key),Tu.localStorage.remove(e.queue_key)});this.persistence=this.cookie=new Od(this.config),this.unpersisted_superprops={},this._gdpr_init();var s=Tu.UUID();this.get_distinct_id()||this.register_once({distinct_id:Ld+s,$device_id:s},""),this.flags=new rd({getFullApiRoute:Tu.bind(function(){return this.get_api_host("flags")+"/"+this.get_config("api_routes").flags},this),getConfigFunc:Tu.bind(this.get_config,this),setConfigFunc:Tu.bind(this.set_config,this),getPropertyFunc:Tu.bind(this.get_property,this),trackingFunc:Tu.bind(this.track,this)}),this.flags.init(),this.flags=this.flags,this.autocapture=new Zh(this),this.autocapture.init(),this._init_tab_id(),this._check_and_start_session_recording()},$d.prototype._init_tab_id=function(){if(this.get_config("disable_persistence"))Lu.log("Tab ID initialization skipped due to disable_persistence config");else if(Tu.sessionStorage.is_supported())try{var e=this.get_config("name")+"_"+this.get_config("token"),t="mp_tab_id_"+e,r="mp_gen_new_tab_id_"+e;!Tu.sessionStorage.get(r)&&Tu.sessionStorage.get(t)||Tu.sessionStorage.set(t,"$tab-"+Tu.UUID()),Tu.sessionStorage.set(r,"1"),this.tab_id=Tu.sessionStorage.get(t),n.addEventListener("beforeunload",function(){Tu.sessionStorage.remove(r)})}catch(e){this.report_error("Error initializing tab id",e)}else this.report_error("Session storage is not supported, cannot keep track of unique tab ID.")},$d.prototype.get_tab_id=function(){return this.tab_id||null},$d.prototype._should_load_recorder=function(){if(this.get_config("disable_persistence"))return Lu.log("Load recorder check skipped due to disable_persistence config"),Promise.resolve(!1);var e=new ip(rp),t=this.get_tab_id();return e.init().then(function(){return e.getAll()}).then(function(e){for(var r=0;r0&&100*Math.random()<=this.get_config("record_sessions_percent");e||r?t(!0):this._should_load_recorder().then(function(e){e&&t(!1)})}else Lu.critical("Browser does not support MutationObserver; skipping session recording")}),$d.prototype.start_session_recording=function(){this._check_and_start_session_recording(!0)},$d.prototype.stop_session_recording=function(){return this._recorder?this._recorder.stopRecording():Promise.resolve()},$d.prototype.pause_session_recording=function(){return this._recorder?this._recorder.pauseRecording():Promise.resolve()},$d.prototype.resume_session_recording=function(){return this._recorder?this._recorder.resumeRecording():Promise.resolve()},$d.prototype.is_recording_heatmap_data=function(){return this._get_session_replay_id()&&this.get_config("record_heatmap_data")},$d.prototype.get_session_recording_properties=function(){var e={},t=this._get_session_replay_id();return t&&(e.$mp_replay_id=t),e},$d.prototype.get_session_replay_url=function(){var e=null,t=this._get_session_replay_id();return t&&(e="https://mixpanel.com/projects/replay-redirect?"+Tu.HTTPBuildQuery({replay_id:t,distinct_id:this.get_distinct_id(),token:this.get_config("token")})),e},$d.prototype._get_session_replay_id=function(){var e=null;return this._recorder&&(e=this._recorder.replayId),e||null},$d.prototype.__get_recorder=function(){return this._recorder},$d.prototype._loaded=function(){if(this.get_config("loaded")(this),this._set_default_superprops(),this.people.set_once(this.persistence.get_referrer_info()),this.get_config("store_google")&&this.get_config("stop_utm_persistence")){var e=Tu.info.campaignParams(null);Tu.each(e,function(e,t){this.unregister(t)}.bind(this))}},$d.prototype._set_default_superprops=function(){this.persistence.update_search_keyword(Su.referrer),this.get_config("store_google")&&!this.get_config("stop_utm_persistence")&&this.register(Tu.info.campaignParams()),this.get_config("save_referrer")&&this.persistence.update_referrer_info(Su.referrer)},$d.prototype._dom_loaded=function(){Tu.each(this.__dom_loaded_queue,function(e){this._track_dom.apply(this,e)},this),this.has_opted_out_tracking()||Tu.each(this.__request_queue,function(e){this._send_request.apply(this,e)},this),delete this.__dom_loaded_queue,delete this.__request_queue},$d.prototype._track_dom=function(e,t){if(this.get_config("img"))return this.report_error("You can't use DOM tracking functions with img = true."),!1;if(!Bd)return this.__dom_loaded_queue.push([e,t]),!1;var r=(new e).init(this);return r.track.apply(r,t)},$d.prototype._prepare_callback=function(e,t){if(Tu.isUndefined(e))return null;if(Pd)return function(r){e(r,t)};var r=this._jsc,n=""+Math.floor(1e8*Math.random()),i=this.get_config("callback_fn")+"["+n+"]";return r[n]=function(i){delete r[n],e(i,t)},i},$d.prototype._send_request=function(e,t,r,n){var i=!0;if(Dd)return this.__request_queue.push(arguments),i;var o={method:this.get_config("api_method"),transport:this.get_config("api_transport"),verbose:this.get_config("verbose")},s=null;n||!Tu.isFunction(r)&&"string"!=typeof r||(n=r,r=null),r=Tu.extend(o,r||{}),Pd||(r.method="GET");var a="POST"===r.method,c=Fd&&a&&"sendbeacon"===r.transport.toLowerCase(),l=r.verbose;t.verbose&&(l=!0),this.get_config("test")&&(t.test=1),l&&(t.verbose=1),this.get_config("img")&&(t.img=1),Pd||(n?t.callback=n:(l||this.get_config("test"))&&(t.callback="(function(){})")),t.ip=this.get_config("ip")?1:0,t._=(new Date).getTime().toString(),a&&(s="data="+encodeURIComponent(t.data),delete t.data),Tu.extend(t,this.get_config("api_extra_query_params")),e+="?"+Tu.HTTPBuildQuery(t);var u=this;if("img"in t){var p=Su.createElement("img");p.src=e,Su.body.appendChild(p)}else if(c){try{i=Fd(e,s)}catch(e){u.report_error(e),i=!1}try{n&&n(i?1:0)}catch(e){u.report_error(e)}}else if(Pd)try{var h=new XMLHttpRequest;h.open(r.method,e,!0);var d=this.get_config("xhr_headers");if(a&&(d["Content-Type"]="application/x-www-form-urlencoded"),Tu.each(d,function(e,t){h.setRequestHeader(t,e)}),r.timeout_ms&&void 0!==h.timeout){h.timeout=r.timeout_ms;var f=(new Date).getTime()}h.withCredentials=!0,h.onreadystatechange=function(){var e;if(4===h.readyState)if(200===h.status){if(n)if(l){var t;try{t=Tu.JSONDecode(h.responseText)}catch(e){if(u.report_error(e),!r.ignore_json_errors)return;t=h.responseText}n(t)}else n(Number(h.responseText))}else if(e=h.timeout&&!h.status&&(new Date).getTime()-f>=h.timeout?"timeout":"Bad HTTP status: "+h.status+" "+h.statusText,u.report_error(e),n)if(l){var i=h.responseHeaders||{};n({status:0,httpStatusCode:h.status,error:e,retryAfter:i["Retry-After"]})}else n(0)},h.send(s)}catch(e){u.report_error(e),i=!1}else{var g=Su.createElement("script");g.type="text/javascript",g.async=!0,g.defer=!0,g.src=e;var m=Su.getElementsByTagName("script")[0];m.parentNode.insertBefore(g,m)}return i},$d.prototype._execute_array=function(e){var t,r=[],n=[],i=[];Tu.each(e,function(e){e&&(t=e[0],Tu.isArray(t)?i.push(e):"function"==typeof e?e.call(this):Tu.isArray(e)&&"alias"===t?r.push(e):Tu.isArray(e)&&-1!==t.indexOf("track")&&"function"==typeof this[t]?i.push(e):n.push(e))},this);var o=function(e,t){Tu.each(e,function(e){if(Tu.isArray(e[0])){var r=t;Tu.each(e,function(e){r=r[e[0]].apply(r,e.slice(1))})}else this[e[0]].apply(this,e.slice(1))},t)};o(r,this),o(n,this),o(i,this)},$d.prototype.are_batchers_initialized=function(){return!!this.request_batchers.events},$d.prototype.get_batcher_configs=function(){var e="__mpq_"+this.get_config("token");return this._batcher_configs=this._batcher_configs||{events:{type:"events",api_name:"track",queue_key:e+"_ev"},people:{type:"people",api_name:"engage",queue_key:e+"_pp"},groups:{type:"groups",api_name:"groups",queue_key:e+"_gr"}},this._batcher_configs},$d.prototype.init_batchers=function(){if(!this.are_batchers_initialized()){var e=Tu.bind(function(e){return new Ep(e.queue_key,{libConfig:this.config,errorReporter:this.get_config("error_reporter"),sendRequestFunc:Tu.bind(function(t,r,n){var i=this.get_config("api_routes");this._send_request(this.get_api_host(e.api_name)+"/"+i[e.api_name],this._encode_data_for_request(t),r,this._prepare_callback(n,t))},this),beforeSendHook:Tu.bind(function(t){return this._run_hook("before_send_"+e.type,t)},this),stopAllBatchingFunc:Tu.bind(this.stop_batch_senders,this),usePersistence:!0})},this),t=this.get_batcher_configs();this.request_batchers={events:e(t.events),people:e(t.people),groups:e(t.groups)}}this.get_config("batch_autostart")&&this.start_batch_senders()},$d.prototype.start_batch_senders=function(){this._batchers_were_started=!0,this.are_batchers_initialized()&&(this._batch_requests=!0,Tu.each(this.request_batchers,function(e){e.start()}))},$d.prototype.stop_batch_senders=function(){this._batch_requests=!1,Tu.each(this.request_batchers,function(e){e.stop(),e.clear()})},$d.prototype.push=function(e){this._execute_array([e])},$d.prototype.disable=function(e){void 0===e?this._flags.disable_all_events=!0:this.__disabled_events=this.__disabled_events.concat(e)},$d.prototype._encode_data_for_request=function(e){var t=Qu(e);return this.get_config("api_payload_format")===Td&&(t=Tu.base64Encode(t)),{data:t}},$d.prototype._track_or_batch=function(e,t){var r=Tu.truncate(e.data,255),n=e.endpoint,i=e.batcher,o=e.should_send_immediately,s=e.send_request_options||{};t=t||Xu;var a=!0,c=Tu.bind(function(){return s.skip_hooks||(r=this._run_hook("before_send_"+e.type,r)),r?(Lu.log("MIXPANEL REQUEST:"),Lu.log(r),this._send_request(n,this._encode_data_for_request(r),s,this._prepare_callback(t,r))):null},this);return this._batch_requests&&!o?i.enqueue(r).then(function(e){e?t(1,r):c()}):a=c(),a&&r},$d.prototype.track=lp(function(e,t,r,n){n||"function"!=typeof r||(n=r,r=null);var i=(r=r||{}).transport;i&&(r.transport=i);var o=r.send_immediately;if("function"!=typeof n&&(n=Xu),Tu.isUndefined(e))this.report_error("No event name provided to mixpanel.track");else{if(!this._event_is_disabled(e)){(t=Tu.extend({},t)).token=this.get_config("token");var s=this.persistence.remove_event_timer(e);if(!Tu.isUndefined(s)){var a=(new Date).getTime()-s;t.$duration=parseFloat((a/1e3).toFixed(3))}this._set_default_superprops();var c=this.get_config("track_marketing")?Tu.info.marketingParams():{};t=Tu.extend({},Tu.info.properties({mp_loader:this.get_config("mp_loader")}),c,this.persistence.properties(),this.unpersisted_superprops,this.get_session_recording_properties(),t);var l=this.get_config("property_blacklist");Tu.isArray(l)?Tu.each(l,function(e){delete t[e]}):this.report_error("Invalid value for property_blacklist config: "+l);var u={event:e,properties:t};return this._track_or_batch({type:"events",data:u,endpoint:this.get_api_host("events")+"/"+this.get_config("api_routes").track,batcher:this.request_batchers.events,should_send_immediately:o,send_request_options:r},n)}n(0)}}),$d.prototype.set_group=lp(function(e,t,r){Tu.isArray(t)||(t=[t]);var n={};return n[e]=t,this.register(n),this.people.set(e,t,r)}),$d.prototype.add_group=lp(function(e,t,r){var n=this.get_property(e),i={};return void 0===n?(i[e]=[t],this.register(i)):-1===n.indexOf(t)&&(n.push(t),i[e]=n,this.register(i)),this.people.union(e,t,r)}),$d.prototype.remove_group=lp(function(e,t,r){var n=this.get_property(e);if(void 0!==n){var i=n.indexOf(t);i>-1&&(n.splice(i,1),this.register({group_key:n})),0===n.length&&this.unregister(e)}return this.people.remove(e,t,r)}),$d.prototype.track_with_groups=lp(function(e,t,r,n){var i=Tu.extend({},t||{});return Tu.each(r,function(e,t){null!=e&&(i[t]=e)}),this.track(e,i,n)}),$d.prototype._create_map_key=function(e,t){return e+"_"+JSON.stringify(t)},$d.prototype._remove_group_from_cache=function(e,t){delete this._cached_groups[this._create_map_key(e,t)]},$d.prototype.get_group=function(e,t){var r=this._create_map_key(e,t),n=this._cached_groups[r];return void 0!==n&&n._group_key===e&&n._group_id===t||((n=new fd)._init(this,e,t),this._cached_groups[r]=n),n},$d.prototype.track_pageview=lp(function(e,t){"object"!=typeof e&&(e={});var r=(t=t||{}).event_name||"$mp_web_page_view",n=Tu.extend(Tu.info.mpPageViewProperties(),Tu.info.campaignParams(),Tu.info.clickParams()),i=Tu.extend({},n,e);return this.track(r,i)}),$d.prototype.track_links=function(){return this._track_dom.call(this,id,arguments)},$d.prototype.track_forms=function(){return this._track_dom.call(this,od,arguments)},$d.prototype.time_event=function(e){Tu.isUndefined(e)?this.report_error("No event name provided to mixpanel.time_event"):this._event_is_disabled(e)||this.persistence.set_event_timer(e,(new Date).getTime())};var qd={persistent:!0},Vd=function(e){var t;return t=Tu.isObject(e)?e:Tu.isUndefined(e)?{}:{days:e},Tu.extend({},qd,t)};$d.prototype.register=function(e,t){var r=Vd(t);r.persistent?this.persistence.register(e,r.days):Tu.extend(this.unpersisted_superprops,e)},$d.prototype.register_once=function(e,t,r){var n=Vd(r);n.persistent?this.persistence.register_once(e,t,n.days):(void 0===t&&(t="None"),Tu.each(e,function(e,r){this.unpersisted_superprops.hasOwnProperty(r)&&this.unpersisted_superprops[r]!==t||(this.unpersisted_superprops[r]=e)},this))},$d.prototype.unregister=function(e,t){(t=Vd(t)).persistent?this.persistence.unregister(e):delete this.unpersisted_superprops[e]},$d.prototype._register_single=function(e,t){var r={};r[e]=t,this.register(r)},$d.prototype.identify=function(e,t,r,n,i,o,s,a){var c=this.get_distinct_id();if(e&&c!==e){if("string"==typeof e&&0===e.indexOf(Ld))return this.report_error("distinct_id cannot have $device: prefix"),-1;this.register({$user_id:e})}if(!this.get_property("$device_id")){var l=c;this.register_once({$had_persisted_distinct_id:!0,$device_id:l},"")}e!==c&&e!==this.get_property(Cd)&&(this.unregister(Cd),this.register({distinct_id:e})),this._flags.identify_called=!0,this.people._flush(t,r,n,i,o,s,a),e!==c&&this.track("$identify",{distinct_id:e,$anon_distinct_id:c},{skip_hooks:!0}),e!==c&&this.flags.fetchFlags()},$d.prototype.reset=function(){this.stop_session_recording(),this.persistence.clear(),this._flags.identify_called=!1;var e=Tu.UUID();this.register_once({distinct_id:Ld+e,$device_id:e},""),this._check_and_start_session_recording()},$d.prototype.get_distinct_id=function(){return this.get_property("distinct_id")},$d.prototype.alias=function(e,t){if(e===this.get_property(xd))return this.report_error("Attempting to create alias for existing People user - aborting."),-2;var r=this;return Tu.isUndefined(t)&&(t=this.get_distinct_id()),e!==t?(this._register_single(Cd,e),this.track("$create_alias",{alias:e,distinct_id:t},{skip_hooks:!0},function(){r.identify(e)})):(this.report_error("alias matches current distinct_id - skipping api call."),this.identify(e),-1)},$d.prototype.name_tag=function(e){this._register_single("mp_name_tag",e)},$d.prototype.set_config=function(e){Tu.isObject(e)&&(Tu.extend(this.config,e),e.batch_size&&Tu.each(this.request_batchers,function(e){e.resetBatchSize()}),this.get_config("persistence_name")||(this.config.persistence_name=this.config.cookie_name),this.get_config("disable_persistence")||(this.config.disable_persistence=this.config.disable_cookie),this.persistence&&this.persistence.update_config(this.config),du.DEBUG=du.DEBUG||this.get_config("debug"),("autocapture"in e||"record_heatmap_data"in e)&&this.autocapture&&this.autocapture.init())},$d.prototype.get_config=function(e){return this.config[e]},$d.prototype._run_hook=function(e){var t=(this.config.hooks[e]||Rd).apply(this,yu.call(arguments,1));return void 0===t&&(this.report_error(e+" hook did not return a value"),t=null),t},$d.prototype.get_property=function(e){return this.persistence.load_prop([e])},$d.prototype.get_api_host=function(e){return this.get_config("api_hosts")[e]||this.get_config("api_host")},$d.prototype.toString=function(){var e=this.get_config("name");return e!==Md&&(e=Md+"."+e),e},$d.prototype._event_is_disabled=function(e){return Tu.isBlockedUA(Eu)||this._flags.disable_all_events||Tu.include(this.__disabled_events,e)},$d.prototype._gdpr_init=function(){"localStorage"===this.get_config("opt_out_tracking_persistence_type")&&Tu.localStorage.is_supported()&&(!this.has_opted_in_tracking()&&this.has_opted_in_tracking({persistence_type:"cookie"})&&this.opt_in_tracking({enable_persistence:!1}),!this.has_opted_out_tracking()&&this.has_opted_out_tracking({persistence_type:"cookie"})&&this.opt_out_tracking({clear_persistence:!1}),this.clear_opt_in_out_tracking({persistence_type:"cookie",enable_persistence:!1})),this.has_opted_out_tracking()?this._gdpr_update_persistence({clear_persistence:!0}):this.has_opted_in_tracking()||!this.get_config("opt_out_tracking_by_default")&&!Tu.cookie.get("mp_optout")||(Tu.cookie.remove("mp_optout"),this.opt_out_tracking({clear_persistence:this.get_config("opt_out_persistence_by_default")}))},$d.prototype._gdpr_update_persistence=function(e){var t;if(e&&e.clear_persistence)t=!0;else{if(!e||!e.enable_persistence)return;t=!1}this.get_config("disable_persistence")||this.persistence.disabled===t||this.persistence.set_disabled(t),t?(this.stop_batch_senders(),this.stop_session_recording()):this._batchers_were_started&&this.start_batch_senders()},$d.prototype._gdpr_call_func=function(e,t){return t=Tu.extend({track:Tu.bind(this.track,this),persistence_type:this.get_config("opt_out_tracking_persistence_type"),cookie_prefix:this.get_config("opt_out_tracking_cookie_prefix"),cookie_expiration:this.get_config("cookie_expiration"),cross_site_cookie:this.get_config("cross_site_cookie"),cross_subdomain_cookie:this.get_config("cross_subdomain_cookie"),cookie_domain:this.get_config("cookie_domain"),secure_cookie:this.get_config("secure_cookie"),ignore_dnt:this.get_config("ignore_dnt")},t),Tu.localStorage.is_supported()||(t.persistence_type="cookie"),e(this.get_config("token"),{track:t.track,trackEventName:t.track_event_name,trackProperties:t.track_properties,persistenceType:t.persistence_type,persistencePrefix:t.cookie_prefix,cookieDomain:t.cookie_domain,cookieExpiration:t.cookie_expiration,crossSiteCookie:t.cross_site_cookie,crossSubdomainCookie:t.cross_subdomain_cookie,secureCookie:t.secure_cookie,ignoreDnt:t.ignore_dnt})},$d.prototype.opt_in_tracking=function(e){e=Tu.extend({enable_persistence:!0},e),this._gdpr_call_func(op,e),this._gdpr_update_persistence(e)},$d.prototype.opt_out_tracking=function(e){(e=Tu.extend({clear_persistence:!0,delete_user:!0},e)).delete_user&&this.people&&this.people._identify_called()&&(this.people.delete_user(),this.people.clear_charges()),this._gdpr_call_func(sp,e),this._gdpr_update_persistence(e)},$d.prototype.has_opted_in_tracking=function(e){return this._gdpr_call_func(ap,e)},$d.prototype.has_opted_out_tracking=function(e){return this._gdpr_call_func(cp,e)},$d.prototype.clear_opt_in_out_tracking=function(e){e=Tu.extend({enable_persistence:!0},e),this._gdpr_call_func(hp,e),this._gdpr_update_persistence(e)},$d.prototype.report_error=function(e,t){Lu.error.apply(Lu.error,arguments);try{t||e instanceof Error||(e=new Error(e)),this.get_config("error_reporter")(e,t)}catch(t){Lu.error(t)}},$d.prototype.init=$d.prototype.init,$d.prototype.reset=$d.prototype.reset,$d.prototype.disable=$d.prototype.disable,$d.prototype.time_event=$d.prototype.time_event,$d.prototype.track=$d.prototype.track,$d.prototype.track_links=$d.prototype.track_links,$d.prototype.track_forms=$d.prototype.track_forms,$d.prototype.track_pageview=$d.prototype.track_pageview,$d.prototype.register=$d.prototype.register,$d.prototype.register_once=$d.prototype.register_once,$d.prototype.unregister=$d.prototype.unregister,$d.prototype.identify=$d.prototype.identify,$d.prototype.alias=$d.prototype.alias,$d.prototype.name_tag=$d.prototype.name_tag,$d.prototype.set_config=$d.prototype.set_config,$d.prototype.get_config=$d.prototype.get_config,$d.prototype.get_api_host=$d.prototype.get_api_host,$d.prototype.get_property=$d.prototype.get_property,$d.prototype.get_distinct_id=$d.prototype.get_distinct_id,$d.prototype.toString=$d.prototype.toString,$d.prototype.opt_out_tracking=$d.prototype.opt_out_tracking,$d.prototype.opt_in_tracking=$d.prototype.opt_in_tracking,$d.prototype.has_opted_out_tracking=$d.prototype.has_opted_out_tracking,$d.prototype.has_opted_in_tracking=$d.prototype.has_opted_in_tracking,$d.prototype.clear_opt_in_out_tracking=$d.prototype.clear_opt_in_out_tracking,$d.prototype.get_group=$d.prototype.get_group,$d.prototype.set_group=$d.prototype.set_group,$d.prototype.add_group=$d.prototype.add_group,$d.prototype.remove_group=$d.prototype.remove_group,$d.prototype.track_with_groups=$d.prototype.track_with_groups,$d.prototype.start_batch_senders=$d.prototype.start_batch_senders,$d.prototype.stop_batch_senders=$d.prototype.stop_batch_senders,$d.prototype.start_session_recording=$d.prototype.start_session_recording,$d.prototype.stop_session_recording=$d.prototype.stop_session_recording,$d.prototype.pause_session_recording=$d.prototype.pause_session_recording,$d.prototype.resume_session_recording=$d.prototype.resume_session_recording,$d.prototype.get_session_recording_properties=$d.prototype.get_session_recording_properties,$d.prototype.get_session_replay_url=$d.prototype.get_session_replay_url,$d.prototype.get_tab_id=$d.prototype.get_tab_id,$d.prototype.DEFAULT_API_ROUTES=Ud,$d.prototype.__get_recorder=$d.prototype.__get_recorder,Od.prototype.properties=Od.prototype.properties,Od.prototype.update_search_keyword=Od.prototype.update_search_keyword,Od.prototype.update_referrer_info=Od.prototype.update_referrer_info,Od.prototype.get_cross_subdomain=Od.prototype.get_cross_subdomain,Od.prototype.clear=Od.prototype.clear;var Wd={},Hd=(Ad=function(e,t){t()},md=0,(Nd=new $d).init=function(e,t,r){if(r)return Nd[r]||(Nd[r]=Wd[r]=zd(e,t,r),Nd[r]._loaded()),Nd[r];var i=Nd;Wd[Md]?i=Wd[Md]:e&&((i=zd(e,t,Md))._loaded(),Wd[Md]=i),Nd=i,1===md&&(n[Md]=Nd),Tu.each(Wd,function(e,t){t!==Md&&(Nd[t]=e)}),Nd._=Tu},Nd.init(),function(){function e(){e.done||(e.done=!0,Bd=!0,Dd=!1,Tu.each(Wd,function(e){e._dom_loaded()}))}if(Su.addEventListener)"complete"===Su.readyState?e():Su.addEventListener("DOMContentLoaded",e,!1);else if(Su.attachEvent){Su.attachEvent("onreadystatechange",e);var t=!1;try{t=null===n.frameElement}catch(e){}Su.documentElement.doScroll&&t&&function t(){try{Su.documentElement.doScroll("left")}catch(e){return void setTimeout(t,1)}e()}()}Tu.register_event(n,"load",e,!0)}(),Nd)},7008:(e,t,r)=>{"use strict";r.d(t,{Mh:()=>p,bi:()=>s,lL:()=>o,oe:()=>u,qt:()=>a});var n=r(6751);let i=!1;const o=()=>{try{if("undefined"==typeof window)return!1;if(i)return!0;const e=window.marketplaceConfig||{};if(!e.data_consent_status)return!1;const t=e.mixpanel||{},r=t.token;if(!r||""===r)return!1;n.A.init(r,{debug:t.debug||!1,track_pageview:!1,persistence:"localStorage",property_blacklist:["$initial_referrer","$initial_referring_domain","$current_url","$referrer","$referring_domain","mp_lib","$lib_version","$browser","$browser_version","$device","$screen_height","$screen_width","$os","$search_engine"]});const o=t.distinctId;return o&&""!==o&&n.A.identify(o),i=!0,!0}catch(e){return!1}},s=()=>{try{i&&void 0!==n.A&&(n.A.reset(),i=!1)}catch(e){console.error("[MixpanelTracking] Error disabling Mixpanel:",e)}},a=()=>{try{if("undefined"==typeof window)return!1;const e=((window.marketplaceConfig||{}).mixpanel||{}).token;return!(!e||""===e)&&(i=!1,o())}catch(e){return console.error("[MixpanelTracking] Error enabling Mixpanel:",e),!1}},c=()=>{try{if("undefined"==typeof window)return{};const e=((window.marketplaceConfig||{}).mixpanel||{}).globalProperties||{},t=new URLSearchParams(window.location.search).get("page")||"",r={...e,hit_type:"event",page:t||window.location.pathname,path:window.location.pathname+window.location.search,referrer:document.referrer.split("/").filter(Boolean).pop()||""};return Object.fromEntries(Object.entries(r).filter(([e,t])=>""!==t&&null!=t&&(!Array.isArray(t)||0!==t.length)))}catch(e){return{}}},l=(e,t={})=>{try{if(!(()=>{try{return i&&void 0!==n.A}catch(e){return!1}})())return;const r={...c(),...t};n.A.track(e,r)}catch(t){console.error("[MixpanelTracking] Error tracking event:",e,t)}},u=({pluginSlug:e,pluginName:t,category:r,itemName:n,isContentRendered:i=!0,contentReceivedAt:o=null,contentRenderedAt:s=null,isCached:a=!1}={})=>{try{const c=Date.now(),u={content_received_at:o||c,is_content_rendered:i,is_cached:a};i&&(u.content_rendered_at=s||c),n?u.item_name=n:e&&(u.item_name=e),e&&(u.product_slug=e),t&&(u.product_name=t),r&&(u.item_category=r),l("Page Viewed",u)}catch(e){console.error("[MixpanelTracking] Error tracking page view:",e)}},p=({buttonName:e,buttonAction:t,plugin:r=null,context:n={}}={})=>{try{const i={button_name:e||"",button_action:t||"",item_name:e||"",timestamp:Date.now()};r&&Object.assign(i,(e=>{if(!e)return{};const t={product_slug:e.slug||"",product_name:e.name||""};if(e.categories&&e.categories.length>0){const r="object"==typeof e.categories[0]?e.categories[0].slug||e.categories[0].title:e.categories[0];t.item_category=r}return e.licenseType&&(t.license_type=e.licenseType),void 0!==e.priceAmount&&(t.price_amount=e.priceAmount),e.priceCurrency&&(t.price_currency=e.priceCurrency),t})(r)),Object.assign(i,n),l("Button Clicked",i)}catch(e){console.error("[MixpanelTracking] Error tracking button click:",e)}}},7529:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Aggiorna pagina","ui.notifications.couldNotLoad":"Impossibile caricare la pagina","ui.notifications.refreshPage":"Aggiorna la pagina e contatta il nostro supporto se il problema persiste."}')},7565:(e,t,r)=>{"use strict";r.d(t,{P:()=>i,r:()=>o});let n={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:r(2875).x};const i=(e={})=>{n={...n,...e}},o=()=>n},7674:(e,t,r)=>{"use strict";r(1609),r(1352)},7823:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Refresh page","ui.notifications.couldNotLoad":"Couldn’t load the page","ui.notifications.refreshPage":"Please refresh the page and contact our support if the issue persists."}')},7829:(e,t,r)=>{"use strict";r(1609),r(4814),r(1352)},7979:(e,t,r)=>{"use strict";r.d(t,{D:()=>c,t:()=>a});var n=r(1609),i=r(7008),o=r(108);const s=(0,n.createContext)(null),a=({children:e,apiBaseUrl:t,useWPHandlers:r,wpConfig:a,enableDefaultStyles:c,assetsBaseUrl:l})=>{const[u,p]=(0,n.useState)({}),[h,d]=(0,n.useState)({}),[f,g]=(0,n.useState)({}),[m,v]=(0,n.useState)([]),[y,b]=(0,n.useState)({}),[_,w]=(0,n.useState)(""),[k,S]=(0,n.useState)(""),[x,C]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[E,I]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[O,N]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[A,R]=(0,n.useState)(!1),[M,T]=(0,n.useState)(!1),[L,P]=(0,n.useState)(!0),[D,F]=(0,n.useState)(()=>{const e="undefined"!=typeof window&&window.marketplaceConfig?.data_consent_status;return!0===e||"true"===e||"1"===e||1===e}),U=((0,n.useRef)({}),(0,n.useRef)(null)),j="onecom"===("undefined"!=typeof window&&window.marketplaceConfig?.brand),B="undefined"!=typeof window&&window.marketplaceConfig?.activePlugins?window.marketplaceConfig.activePlugins:[],$="undefined"!=typeof window&&window.marketplaceConfig?.activeThemeAuthor?window.marketplaceConfig.activeThemeAuthor:"",z="undefined"!=typeof window&&window.marketplaceConfig?.wpVersion?window.marketplaceConfig.wpVersion:"";(0,n.useEffect)(()=>{const e=sessionStorage.getItem("mp_success_notice");if(e)try{const t=JSON.parse(e);C({visible:t.visible,type:t.type,pluginSlug:t.pluginSlug}),N({visible:t.visible,type:t.successType,pluginSlug:t.pluginSlug}),setTimeout(()=>{sessionStorage.removeItem("mp_success_notice")},100)}catch(e){console.error("Error parsing persisted success notice",e)}},[]),(0,n.useEffect)(()=>{!0===D&&(0,i.lL)();const e=e=>{const t=void 0!==e.detail?.data_consent_status&&e.detail.data_consent_status;F(t),!0===t?("undefined"!=typeof window&&window.marketplaceConfig&&(window.marketplaceConfig.data_consent_status=!0),(0,i.qt)()):("undefined"!=typeof window&&window.marketplaceConfig&&(window.marketplaceConfig.data_consent_status=!1),(0,i.bi)())};window.addEventListener("onConsentStatusChanged",e);const t=t=>{if("onecom_data_consent_status"===t.key){const r="1"===t.newValue;e({detail:{data_consent_status:r}})}};return window.addEventListener("storage",t),()=>{window.removeEventListener("onConsentStatusChanged",e),window.removeEventListener("storage",t)}},[]);const q=(0,n.useCallback)(async e=>{if(j&&W(e)){g(t=>({...t,[e]:!0}));try{const t=void 0!==window.marketplaceConfig&&window.marketplaceConfig?.wpConfig?.ajaxUrl;if(!t)return void g(t=>({...t,[e]:!1}));const r=new FormData;r.append("action","get_addon_purchase_status"),r.append("addon_purchase_check","true"),r.append("addon_slug",e);const n=await fetch(t,{method:"POST",body:r}),i=await n.json();d(t=>({...t,[e]:i.is_purchased}))}catch(t){d(t=>({...t,[e]:!1}))}finally{g(t=>({...t,[e]:!1}))}}},[j]),V=(0,n.useCallback)(()=>{U.current&&(clearTimeout(U.current),U.current=null),sessionStorage.removeItem("mp_success_notice")},[]),W=(0,n.useCallback)(e=>"wp-rocket"===e||"seo-by-rank-math-pro"===e,[]),H=(0,n.useCallback)(e=>(0,o.u)(z,e),[z]),G=(0,n.useCallback)(e=>!(!e||!j)&&W(e.slug)&&!e.installed&&!0===h[e.slug],[j,h,W]),K=(0,n.useCallback)(e=>{if(!e.rules)return!0;if(e.rules.mustHavePlugins&&Array.isArray(e.rules.mustHavePlugins)){if(0===e.rules.mustHavePlugins.length)return!0;if(!e.rules.mustHavePlugins.some(e=>B.includes(e)))return!1}if(e.rules.mustHaveThemesByAuthor&&"string"==typeof e.rules.mustHaveThemesByAuthor){const t=e.rules.mustHaveThemesByAuthor;if($!==t)return!1}return!0},[B,$]),J=(0,n.useCallback)(async(e,n,o="")=>{const s="activate"===e&&"imagify"===n.slug;p(e=>({...e,[n.slug]:!0}));let c=!1;const l=n.name||n.slug;let u="";if(u="activate"===e?(y?.notifications?.activating||"Activating {0}").replace("{0}",l)+"...":"deactivate"===e?(y?.notifications?.deactivating||"Deactivating {0}").replace("{0}",l)+"...":"install"===e?(y?.notifications?.installing||"Installing {0}").replace("{0}",l)+"...":"delete"===e?(y?.notifications?.deleting||"Deleting {0}").replace("{0}",l)+"...":`${e.charAt(0).toUpperCase()+(e.endsWith("e")?e.slice(1,-1):e.slice(1))+"ing"} ${l}`,w(u),S(""),s){let s=`${t}${e}/${n.slug}`;const l=`download_url=${encodeURIComponent(n.download||"")}`;return s=r?`${a.ajaxUrl}?action=marketplace_${e}_plugin&_wpnonce=${a.nonce}&nonce=${a.nonce}&slug=${n.slug}&${l}`:s+(s.includes("?")?"&":"?")+l,void setTimeout(async()=>{try{await fetch(s,{method:"POST"})}catch(e){console.log("Imagify activation request initiated")}let r=0;const a=async()=>{try{const r=`${t}active/${n.slug}`,s=await fetch(r),a=await s.json();if(a&&a.activated)return(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"success",special_case:"imagify_redirect"}}),void("product_detail"===o?(sessionStorage.setItem("mp_skip_page_view","true"),sessionStorage.setItem("mp_success_notice",JSON.stringify({visible:!0,type:"activated",pluginSlug:n.slug,successType:"activate"})),U.current=setTimeout(()=>{window.location.reload()},500)):(N({visible:!0,type:"activate",pluginSlug:n.slug}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),S(""),c=!0))}catch(e){console.error("Error checking activation status",e)}r++,r<6?setTimeout(a,1e3):(I({visible:!0,type:"activate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"error",error_message:"Imagify activation timeout after polling"}}),w(""),S(""),p(e=>({...e,[n.slug]:!1})))};setTimeout(a,1e3)},100)}try{let s=`${t}/${e}/${n.slug}`;const l=`download_url=${encodeURIComponent(n.download||"")}`;s=r?`${a.ajaxUrl}?action=marketplace_${e}_plugin&_wpnonce=${a.nonce}&nonce=${a.nonce}&slug=${n.slug}&${l}`:s+(s.includes("?")?"&":"?")+l;const u=await fetch(s,{method:"POST"}),p=await u.json();if(p.success)if(v(t=>t.map(t=>t.slug===n.slug?{...t,installed:p.data.installed,activated:p.data.activated}:"deactivate"===e&&"seo-by-rank-math"===n.slug&&"seo-by-rank-math-pro"===t.slug?{...t,activated:!1}:"activate"===e&&"seo-by-rank-math-pro"===n.slug&&"seo-by-rank-math"===t.slug?{...t,activated:!0}:t)),"install"===e&&p.data.installed)C({visible:!0,type:"installed",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:n,context:{action:e,result:"success"}});else if("delete"!==e||p.data.installed){if("activate"===e&&p.data.activated)return c=!0,(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"success"}}),void("product_detail"===o?(sessionStorage.setItem("mp_skip_page_view","true"),sessionStorage.setItem("mp_success_notice",JSON.stringify({visible:!0,type:"activated",pluginSlug:n.slug,successType:"activate"})),U.current=setTimeout(()=>{window.location.reload()},500)):(N({visible:!0,type:"activate",pluginSlug:n.slug}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),S("")));if("deactivate"===e&&!p.data.activated)return c=!0,N({visible:!0,type:"deactivate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Deactivate",buttonAction:"product_deactivate",plugin:n,context:{action:e,result:"success"}}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),void S("")}else C({visible:!0,type:"deleted",pluginSlug:n.slug}),N({visible:!0,type:"delete",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Delete",buttonAction:"product_delete",plugin:n,context:{action:e,result:"success"}});else"activate"===e?(I({visible:!0,type:"activate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginActivationFailed||"Activation failed"}})):"deactivate"===e?(I({visible:!0,type:"deactivate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Deactivate",buttonAction:"product_deactivate",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginDeactivationFailed||"Deactivation failed"}})):"install"===e?(I({visible:!0,type:"install",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||"Installation failed"}})):"delete"===e?(I({visible:!0,type:"delete",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Delete",buttonAction:"product_delete",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginDeletionFailed||"Deletion failed"}})):alert(p.data?.message||"Failed to perform action")}catch(t){console.error("Plugin action failed",t),"activate"!==e&&"install"!==e&&"delete"!==e||(0,i.Mh)({buttonName:"activate"===e?"Activate":"install"===e?"Install":"Delete",buttonAction:"activate"===e?"product_activate":"install"===e?"product_install":"product_delete",plugin:n,context:{action:e,result:"error",error_message:t.message||"Network error"}})}finally{c||p(e=>({...e,[n.slug]:!1})),w(""),S("")}},[t,r,a,y]),Y={apiBaseUrl:t,useWPHandlers:r,wpConfig:a,enableDefaultStyles:c,assetsBaseUrl:l,pluginInAction:u,setPluginInAction:p,subscriptionStatus:h,isCheckingSubscription:f,fetchSubscriptionStatus:q,isOnecomBrand:j,plugins:m,setPlugins:v,uiI18n:y,setUiI18n:b,handlePluginAction:J,cancelReload:V,loadingAction:_,loadingPlugin:k,noticeState:x,setNoticeState:C,errorState:E,setErrorState:I,successState:O,setSuccessState:N,allPluginsActivated:A,setAllPluginsActivated:R,catalogError:M,setCatalogError:T,catalogLoading:L,setCatalogLoading:P,shouldShowProvision:G,isSpecialPlugin:W,shouldShowPlugin:K,isWpVersionSupported:H,wpVersion:z,activePlugins:B,activeThemeAuthor:$};return(0,n.createElement)(s.Provider,{value:Y},e)},c=()=>{const e=(0,n.useContext)(s);if(!e)throw new Error("useMarketplace must be used within MarketplaceProvider");return e}},8291:(e,t,r)=>{"use strict";r.d(t,{Bd:()=>n.B,r9:()=>i.r}),r(7829),r(4814);var n=r(8437),i=(r(2648),r(2176),r(3273),r(3227),r(7674),r(1831));r(7565),r(1352)},8300:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Uppdatera sidan","ui.notifications.couldNotLoad":"Det gick inte att ladda sidan","ui.notifications.refreshPage":"Uppdatera sidan och kontakta vår support om problemet kvarstår."}')},8437:(e,t,r)=>{"use strict";r.d(t,{B:()=>a});var n=r(1609),i=r(1352),o=r(9454);const s=(e,t,r,n)=>e.getFixedT(t,r,n),a=(e,t={})=>{const{i18n:r}=t,{i18n:a,defaultNS:c}=(0,n.useContext)(i.gJ)||{},l=r||a||(0,i.TO)();if(l&&!l.reportNamespaces&&(l.reportNamespaces=new i.hz),!l){(0,o.mc)(l,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const e=(e,t)=>(0,o.Kg)(t)?t:(0,o.Gv)(t)&&(0,o.Kg)(t.defaultValue)?t.defaultValue:Array.isArray(e)?e[e.length-1]:e,t=[e,{},!1];return t.t=e,t.i18n={},t.ready=!1,t}l.options.react?.wait&&(0,o.mc)(l,"DEPRECATED_OPTION","useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const u={...(0,i.rV)(),...l.options.react,...t},{useSuspense:p,keyPrefix:h}=u;let d=e||c||l.options?.defaultNS;d=(0,o.Kg)(d)?[d]:d||["translation"],l.reportNamespaces.addUsedNamespaces?.(d);const f=(l.isInitialized||l.initializedStoreOnce)&&d.every(e=>(0,o.NM)(e,l,u)),g=((e,t,r,i)=>(0,n.useCallback)(s(e,t,r,i),[e,t,r,i]))(l,t.lng||null,"fallback"===u.nsMode?d:d[0],h),m=()=>g,v=()=>s(l,t.lng||null,"fallback"===u.nsMode?d:d[0],h),[y,b]=(0,n.useState)(m);let _=d.join();t.lng&&(_=`${t.lng}${_}`);const w=((e,t)=>{const r=(0,n.useRef)();return(0,n.useEffect)(()=>{r.current=e},[e,t]),r.current})(_),k=(0,n.useRef)(!0);(0,n.useEffect)(()=>{const{bindI18n:e,bindI18nStore:r}=u;k.current=!0,f||p||(t.lng?(0,o.GA)(l,t.lng,d,()=>{k.current&&b(v)}):(0,o.dM)(l,d,()=>{k.current&&b(v)})),f&&w&&w!==_&&k.current&&b(v);const n=()=>{k.current&&b(v)};return e&&l?.on(e,n),r&&l?.store.on(r,n),()=>{k.current=!1,l&&e&&e?.split(" ").forEach(e=>l.off(e,n)),r&&l&&r.split(" ").forEach(e=>l.store.off(e,n))}},[l,_]),(0,n.useEffect)(()=>{k.current&&f&&b(m)},[l,h,f]);const S=[y,l,f];if(S.t=y,S.i18n=l,S.ready=f,f)return S;if(!f&&!p)return S;throw new Promise(e=>{t.lng?(0,o.GA)(l,t.lng,d,()=>e()):(0,o.dM)(l,d,()=>e())})}},8484:(e,t,r)=>{"use strict";let n;r.d(t,{T:()=>o,V:()=>i});const i=e=>{n=e},o=()=>n},8491:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Genindlæs side","ui.notifications.couldNotLoad":"Kunne ikke indlæse siden","ui.notifications.refreshPage":"Opdater venligst siden og kontakt vores support, hvis problemet fortsætter."}')},9454:(e,t,r)=>{"use strict";r.d(t,{GA:()=>a,Gv:()=>u,Kg:()=>l,NM:()=>c,dM:()=>s,mc:()=>i});const n={},i=(e,t,r,i)=>{l(r)&&n[r]||(l(r)&&(n[r]=new Date),((e,t,r,n)=>{const i=[r,{code:t,...n||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,"warn","react-i18next::",!0);l(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)})(e,t,r,i))},o=(e,t)=>()=>{if(e.isInitialized)t();else{const r=()=>{setTimeout(()=>{e.off("initialized",r)},0),t()};e.on("initialized",r)}},s=(e,t,r)=>{e.loadNamespaces(t,o(e,r))},a=(e,t,r,n)=>{if(l(r)&&(r=[r]),e.options.preload&&e.options.preload.indexOf(t)>-1)return s(e,r,n);r.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,o(e,n))},c=(e,t,r={})=>t.languages&&t.languages.length?t.hasLoadedNamespace(e,{lng:r.lng,precheck:(t,n)=>{if(r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!n(t.isLanguageChangingTo,e))return!1}}):(i(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0),l=e=>"string"==typeof e,u=e=>"object"==typeof e&&null!==e},9962:(e,t,r)=>{"use strict";r.d(t,{A:()=>u});var n=r(1609),i=r(5795),o=r(1338),s=r(4469),a=r(4677),c=r(7979),l=r(488);function u({plugin:e,onClose:t,usePortal:r=!0,loading:u=!1}){const{assetsBaseUrl:p,useWPHandlers:h,pluginInAction:d,plugins:f,uiI18n:g,subscriptionStatus:m,isCheckingSubscription:v,noticeState:y,setNoticeState:b,setErrorState:_}=(0,c.D)(),w=f.find(e=>"seo-by-rank-math"===e.slug)||null,k=f.find(e=>"seo-by-rank-math-pro"===e.slug)||null,S=p||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",x=S?`${S}assets/icons/`:"";if(u){const e=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-w-max-container gv-mx-auto"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-mb-lg"},(0,n.createElement)("a",{href:"#",onClick:e=>{if(e.preventDefault(),"undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}arrow_back.svg`}),(0,n.createElement)("span",null,g.backButton))),(0,n.createElement)("header",{className:"gv-area-header"},(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("header",{className:"gv-area-header gv-mt-fluid gv-mb-fluid"},(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid gv-mb-fluid"},(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"160px"}}),(0,n.createElement)("ul",{className:""},[...Array(3)].map((e,t)=>(0,n.createElement)("li",{key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})))))),(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md",style:{width:"160px",marginBottom:"28px"}}),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm",style:{width:"160px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-xs"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"}))))))));return r?(0,i.createPortal)(e,document.body):e}if(!e)return null;const C=(0,n.useRef)(null),E=(0,n.useRef)(null),I=(0,n.useRef)(null),O=(0,n.useRef)(null),N=(0,n.useRef)(null),[A,R]=((0,n.useRef)([]),(0,n.useState)(0));(0,n.useEffect)(()=>{window.scrollTo(0,0)},[e]),(0,n.useEffect)(()=>{b(e=>!e.visible||e.pluginSlug!==w?.slug&&e.pluginSlug!==k?.slug?{visible:!1,type:null,pluginSlug:null}:e),_(e=>!e.visible||e.pluginSlug!==w?.slug&&e.pluginSlug!==k?.slug?{visible:!1,type:null,pluginSlug:null}:e)},[w?.slug,k?.slug,b,_]),(0,n.useEffect)(()=>{const e=()=>{b({visible:!1,type:null,pluginSlug:null}),_({visible:!1,type:null,pluginSlug:null})};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[b,_]),(0,n.useEffect)(()=>{const e=C.current,t=E.current,r=I.current,n=O.current,i=N.current;if(!(e&&t&&r&&n&&i))return;const o=t.querySelector(".gv-previous"),s=t.querySelector(".gv-next");let a=!1,c="top",l=!1,u=!1,p=!1,h=null,d=!1;const f=()=>{const t=e.scrollLeft,r=e.offsetWidth,n=Math.round(t/r);R(n),o&&(0===n?o.classList.add("gv-disabled"):o.classList.remove("gv-disabled")),s&&(n>=Math.round(e.scrollWidth/r)-1?s.classList.add("gv-disabled"):s.classList.remove("gv-disabled"))},g=()=>{const e=parseFloat(getComputedStyle(r).paddingTop)||0,i=n.offsetHeight/2,o=i+e,s=window.innerHeight/2-o,a=2*i;return t.style.transform=`translateY(${o}px)`,t.style.top=`${s}px`,t.style.bottom=`${a}px`,{bottomValue:a,halfHeaderHeight:i}},m=e=>{const n=r.getBoundingClientRect(),i=window.innerHeight-e,o=n.bottom<=i;o!==a&&(a=o,a?t.classList.add("gv-state-bottom"):t.classList.remove("gv-state-bottom"))},v=()=>{if(p)return;let e;e=l?l&&!u?"overlay":"bottom":"top",e!==c&&(p=!0,c=e,"top"===c?(i.classList.add("gv-state-top"),i.classList.remove("gv-state-overlay")):"overlay"===c?(i.classList.remove("gv-state-top"),i.classList.add("gv-state-overlay")):(i.classList.remove("gv-state-top"),i.classList.remove("gv-state-overlay")),requestAnimationFrame(()=>{setTimeout(()=>{p=!1},50)}))},{bottomValue:y}=g();e.addEventListener("scroll",f);const b=new IntersectionObserver(e=>{e.forEach(e=>{!e.isIntersecting&&e.boundingClientRect.top<0?l=!0:(e.isIntersecting||e.boundingClientRect.top>=0)&&(l=!1),v()})},{threshold:[0,1],rootMargin:"0px"}),_=document.createElement("div");_.style.position="absolute",_.style.bottom="0",_.style.left="0",_.style.width="1px",_.style.height="1px",_.style.pointerEvents="none",r.style.position="relative",r.appendChild(_);const w=new IntersectionObserver(e=>{e.forEach(e=>{u=e.isIntersecting,v()})},{threshold:[0],rootMargin:"-100px 0px 0px 0px"});b.observe(i),w.observe(_);const k=()=>{d||(d=!0,requestAnimationFrame(()=>{m(y)}),h=setTimeout(()=>{d=!1},100))},S=()=>{const{bottomValue:e}=g();m(e)};return window.addEventListener("scroll",k),window.addEventListener("resize",S),f(),m(y),v(),()=>{h&&clearTimeout(h),e.removeEventListener("scroll",f),window.removeEventListener("scroll",k),window.removeEventListener("resize",S),b.disconnect(),w.disconnect(),_&&_.parentNode&&_.parentNode.removeChild(_)}},[]),void 0!==window.onecomWpVars&&window.onecomWpVars,e.thumbnail;const M=e.bannerUrl||e.image||e.thumbnail||"https://gravity.group.one/guide-images/product-image@2x.png",T=w?.name||e.name||"Product",L=w?.i18n?.description||w?.i18n?.subtitle,P=w?.i18n?.subtitle,D=k?.name||"Rank Math Pro",F=k?.i18n?.subtitle||k?.i18n?.description,U=k?(0,l.M)(k,g?.labels?.free||"Free",g):"",j=U===(g?.labels?.freeUntilRenewal||"Free until renewal"),B=(0,l.Tc)(k),$=(e,t)=>{if(!e||"object"!=typeof e)return[];const r=[];let n=1;for(;e[`${t}${n}`];){const i=e[`${t}${n}`];i&&""!==i.trim()&&r.push(i),n++}return r},z=w?.i18n||e.i18n,q=$(z,"keyBenefitContent"),V=$(w?.i18n,"keyFeatureContent"),W=$(k?.i18n,"keyFeatureContent"),H=Math.max(V.length,W.length),G=[];if(z&&"object"==typeof z){let e=1;for(;z[`coreFeatureTitle${e}`]||z[`coreFeatureContent${e}`];){const t=z[`coreFeatureTitle${e}`],r=z[`coreFeatureContent${e}`];t&&""!==t.trim()&&r&&""!==r.trim()&&G.push({name:t,desc:r}),e++}}const K=q,J=G,Y=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-w-max-container gv-mx-auto gv-p-fluid gv-p-0"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav"},(0,n.createElement)("a",{href:"#",onClick:r=>{if(r.preventDefault(),!d[e.slug])if("undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()},className:"gv-flex gv-items-center gv-gap-xs",role:"button","aria-label":"Go back",style:{opacity:d[e.slug]?.5:1,pointerEvents:d[e.slug]?"none":"auto",cursor:d[e.slug]?"not-allowed":"pointer"},"aria-disabled":d[e.slug]?"true":"false"},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}arrow_back.svg`}),(0,n.createElement)("span",null,g.backButton)),(0,n.createElement)(s.A,{plugin:y?.pluginSlug===k?.slug?k:w}),(0,n.createElement)(a.A,{plugin:w}),(0,n.createElement)(a.A,{plugin:k})),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-md gv-text-sm"},(0,n.createElement)("h3",{className:"gv-title gv-header-lg"},"Rank Math"),(0,n.createElement)("p",{className:"gv-text-sm"},L)),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:`${M} 2x, ${M} 1x`}),(0,n.createElement)("img",{src:M,srcSet:`${M} 2x, ${M} 1x`,alt:"Product image"})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-2 gv-recommended-2 gv-area-table"},(0,n.createElement)("div",{className:"gv-dots-scroll-area"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-slider-nav",ref:E},(0,n.createElement)("button",{type:"button",className:"gv-nav-button gv-previous gv-disabled",onClick:()=>{const e=C.current;if(!e)return;const t=e.offsetWidth;e.scrollTo({left:e.scrollLeft-t,behavior:"smooth"})}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}chevron_left.svg`})),(0,n.createElement)("button",{type:"button",className:"gv-nav-button gv-next",onClick:()=>{const e=C.current;if(!e)return;const t=e.offsetWidth;e.scrollTo({left:e.scrollLeft+t,behavior:"smooth"})}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}chevron_right.svg`}))),(0,n.createElement)("div",{className:"gv-table-slider",ref:C},(0,n.createElement)("div",{className:"gv-table",role:"table",ref:I},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup",ref:O},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},`${T} free`),(0,n.createElement)("p",null,P)),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},(0,n.createElement)("span",{className:"gv-price-text"},g?.labels?.free||"Free"))),h&&w?(0,n.createElement)(o.A,{plugin:w}):w?.download&&(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-secondary"},g?.installButton||w?.i18n?.installButton||"Install"))),(0,n.createElement)("div",{className:"gv-product gv-p-0",role:"columnheader"},(0,n.createElement)("div",{className:"gv-recommended-label"},"Recommended"),(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},D),(0,n.createElement)("p",null,F.substring(0,120),F.length>120?"…":"")),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},(0,n.createElement)("span",{className:"gv-price-text"},U,U&&!j&&",-"),U&&!j&&(0,n.createElement)("span",{className:"gv-period"},"/",g?.labels?.timeMonth)),U&&(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},g.labels.afterThat," [",B,"]/",g?.labels?.timeMonth))),h&&k?(0,n.createElement)(o.A,{plugin:k}):(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary"},"Select"))))),H>0&&(0,n.createElement)("div",{className:"gv-section",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},g?.keyFeatureHeading||w?.i18n?.keyFeatureHeading||"Key features")),(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},g?.keyFeatureHeading||k?.i18n?.keyFeatureHeading||"Key features"))),Array.from({length:H}).map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},V[t]||"")),(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},W[t]||"")))))))),(0,n.createElement)("div",{className:"gv-slider-pagination gv-state-top",ref:N},(0,n.createElement)("div",{className:"gv-dots",role:"tablist"},[0,1].map(e=>(0,n.createElement)("span",{key:e,className:"gv-dot "+(A===e?"gv-active":""),role:"tab","aria-selected":A===e?"true":"false","aria-label":`Go to slide ${e+1}`,onClick:()=>(e=>{const t=C.current;if(!t)return;const r=t.offsetWidth;t.scrollTo({left:r*e,behavior:"smooth"})})(e),style:{cursor:"pointer"}})))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},K.length>0&&(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},g?.benefitHeading||e.i18n?.benefitHeading||"Key benefits"),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},K.map((e,t)=>(0,n.createElement)("li",{key:t},e))))),J.length>0&&(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},g?.featureOverviewHeading||e.i18n?.featureOverviewHeading||"Core features overview"),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},J.map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("h3",{className:"gv-title gv-text-bold gv-text-lg"},e.name),(0,n.createElement)("p",{className:"gv-text-sm"},e.desc))))))));return r?(0,i.createPortal)(Y,document.body):Y}}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,r),o.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.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})};var n={};(()=>{"use strict";r.r(n);var e=r(1609),t=r(5795),i=r.n(t),o=r(6255),s=(r(5036),r(108));document.addEventListener("DOMContentLoaded",()=>{const t=document.getElementById("marketplace-addons-root");if(t){const n=window.marketplaceConfig||{};n.locale&&Promise.resolve().then(r.bind(r,2635)).then(({default:e})=>{e.changeLanguage(n.locale)});const a=(0,s.u)(n.wpVersion,"6.2");"function"==typeof i().createRoot&&a?i().createRoot(t).render((0,e.createElement)(o.A,{...n})):i().render((0,e.createElement)(o.A,{...n}),t)}})})(),window.MarketPlaceWP=n})(); -//# sourceMappingURL=addons.js.map \ No newline at end of file diff --git a/frontend/build/index.asset.php b/frontend/build/index.asset.php deleted file mode 100644 index b0d81b4..0000000 --- a/frontend/build/index.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('react', 'react-dom'), 'version' => 'c61183d4dbc36f524021'); diff --git a/frontend/build/index.js b/frontend/build/index.js deleted file mode 100644 index 64eb426..0000000 --- a/frontend/build/index.js +++ /dev/null @@ -1,2 +0,0 @@ -(()=>{var e={108:(e,t,r)=>{"use strict";r.d(t,{u:()=>n});const n=(e,t)=>{if(!e)return!0;const r=String(e).split("."),n=String(t).split(".");for(let e=0;ei)return!0;if(t{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Oppdater side","ui.notifications.couldNotLoad":"Kunne ikke laste inn siden","ui.notifications.refreshPage":"Oppdater siden og kontakt vår support hvis problemet vedvarer."}')},488:(e,t,r)=>{"use strict";r.d(t,{Dn:()=>c,M:()=>l,Tc:()=>a});const n={EUR:"€",USD:"$",GBP:"£",DKK:"kr",NOK:"kr",SEK:"kr"},i=["DKK","SEK","NOK"],o=e=>n[e]||e,s=(e,t,r)=>i.includes(r)?`${e} ${t}`:`${t} ${e}`,a=e=>{if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"full"===e.priceType);if(t&&t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return s(r,e,t.currency)}}return null},c=e=>{if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"rebate"===e.priceType);if(t&&void 0!==t.amount&&null!==t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return s(r,e,t.currency)}}return null},l=(e,t="Free",r=null)=>{if("free"===e.licenseType)return t;if(e.prices&&Array.isArray(e.prices)&&e.prices.length>0){const t=e.prices.find(e=>"rebate"===e.priceType);if(t&&"premium"===e.licenseType){if(0===t.amount)return r?.labels?.freeUntilRenewal||"Free until renewal";if(t.amount&&t.currency){const e=o(t.currency),r=Number(t.amount).toFixed(2);return`${s(r,e,t.currency)} `}}let n=e.prices.find(e=>"full"===e.priceType&&(!0===e.isActive||void 0===e.isActive));if(n||(n=e.prices.find(e=>!0===e.isActive)),n||(n=e.prices[0]),n&&n.amount&&n.currency){const e=o(n.currency),t=Number(n.amount).toFixed(2);return s(t,e,n.currency)}}if(e.priceCurrency&&e.priceAmount){const t=o(e.priceCurrency),r=Number(e.priceAmount).toFixed(2);return s(r,t,e.priceCurrency)}return""}},1174:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o(){const{uiI18n:e}=(0,i.D)(),t=e?.notifications?.updateWPText?.replace("{0}","6.2");return(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg gv-items-center gv-justify-center gv-p-fluid"},(0,n.createElement)("div",{className:"gv-text-center"},(0,n.createElement)("h5",{className:"gv-header-md gv-mb-sm"},e?.notifications?.updateWPTitle),(0,n.createElement)("p",{className:"gv-text-md gv-mb-lg"},t),(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary buttons-min-width",onClick:()=>{window.location.href="undefined"!=typeof window&&window.marketplaceConfig?.wpConfig?.adminUrl?`${window.marketplaceConfig.wpConfig.adminUrl}update-core.php`:"/wp-admin/update-core.php"}},(0,n.createElement)("span",null,e?.updateWPButton))))}},1199:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Pagina verversen","ui.notifications.couldNotLoad":"Kon de pagina niet laden","ui.notifications.refreshPage":"Ververs de pagina en neem contact op met onze (Engelstalige) support als het probleem zich blijft voordoen."}')},1338:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(1609),i=r(7979),o=r(7008),s=r(3220);function a({plugin:e}){const{assetsBaseUrl:t,pluginInAction:r,subscriptionStatus:a,isCheckingSubscription:c,isOnecomBrand:l,handlePluginAction:u,uiI18n:p,isSpecialPlugin:h}=(0,i.D)(),d=a[e.slug],f=c[e.slug],g=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",m=g?`${g}assets/`:"",v=t=>{const r=!e.installed;if(l&&h(e.slug)&&r&&"install"===t){(0,o.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:e,context:{action:t,result:"initiated"}});const r=new CustomEvent("onecom-plugin-provision",{detail:{slug:e.slug},bubbles:!0,cancelable:!0,composed:!0});return void document.dispatchEvent(r)}u(t,e,"product_detail")},y=(e,t)=>e?e.replace("{0}",t||""):"",b=e?.name||"",_=l&&h(e.slug)&&!e.installed&&!1===d,w=l&&h(e.slug)&&!e.installed&&(f||void 0===d);return(0,n.createElement)("div",{className:"plugin-actions gv-mt-md"},w?(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md"}):_?(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary",onClick:()=>{(0,o.Mh)({buttonName:"Select",buttonAction:"subscribe_addon",plugin:e});const t=new CustomEvent("onecom-subscribe-addon",{detail:{slug:e.slug},bubbles:!0,cancelable:!0,composed:!0});document.dispatchEvent(t)},disabled:f},"Select"):e.installed?e.activated?(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary",onClick:()=>{(0,o.Mh)({buttonName:"Manage",buttonAction:"manage_product",context:{product_slug:e.slug,product_name:e.name,has_redirect_url:!(!e.redirectUrl||""===e.redirectUrl.trim()),has_onboarding_url:!(!e.onboardingUrl||""===e.onboardingUrl.trim())}});const t=(0,s.v)(e,!1);(0,s.J)(t)}},(0,n.createElement)("span",null,p?.labels?.manage||"Manage"),(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${m}icons/arrow_right.svg`})):(0,n.createElement)("button",{className:"gv-button gv-button-primary",disabled:r[e.slug],onClick:()=>v("activate")},r[e.slug]?y(p?.notifications?.activating||"Activating {0}",b):p?.activateButton||e.i18n?.activateButton||"Activate"):(0,n.createElement)("button",{className:"gv-button "+("seo-by-rank-math"===e.slug?"gv-button-secondary":"gv-button-primary"),disabled:r[e.slug],onClick:()=>v("install")},r[e.slug]?y(p?.notifications?.installing||"Installing {0}",b):p?.installButton||e.i18n?.installButton||"Install"))}},1352:(e,t,r)=>{"use strict";r.d(t,{TO:()=>o.T,gJ:()=>s,hz:()=>a,rV:()=>i.r});var n=r(1609),i=r(7565),o=r(8484);r(1831);const s=(0,n.createContext)();class a{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}},1609:e=>{"use strict";e.exports=window.React},1755:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(1609),i=r(7979),o=r(8291);function s(){const{assetsBaseUrl:e}=(0,i.D)(),{t}=(0,o.Bd)();return e||void 0!==window.marketplaceConfig&&window.marketplaceConfig,(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg gv-items-center gv-justify-center gv-p-fluid"},(0,n.createElement)("div",{className:"gv-text-center"},(0,n.createElement)("h5",{className:"gv-header-md gv-mb-sm"},t("ui.notifications.couldNotLoad")),(0,n.createElement)("p",{className:"gv-text-md gv-mb-lg"},t("ui.notifications.refreshPage")),(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary buttons-min-width",onClick:()=>{window.location.reload()}},(0,n.createElement)("span",null,t("ui.button.refreshPage")))))}},1831:(e,t,r)=>{"use strict";r.d(t,{r:()=>o});var n=r(7565),i=r(8484);const o={type:"3rdParty",init(e){(0,n.P)(e.options.react),(0,i.V)(e)}}},2176:(e,t,r)=>{"use strict";r(8437)},2635:(e,t,r)=>{"use strict";r.r(t),r.d(t,{changeLanguage:()=>Q,createInstance:()=>G,default:()=>H,dir:()=>K,exists:()=>re,getFixedT:()=>ee,hasLoadedNamespace:()=>ie,init:()=>J,keyFromSelector:()=>I,loadLanguages:()=>se,loadNamespaces:()=>oe,loadResources:()=>Y,reloadResources:()=>Z,setDefaultNamespace:()=>ne,t:()=>te,use:()=>X});const n=e=>"string"==typeof e,i=()=>{let e,t;const r=new Promise((r,n)=>{e=r,t=n});return r.resolve=e,r.reject=t,r},o=e=>null==e?"":""+e,s=/###/g,a=e=>e&&e.indexOf("###")>-1?e.replace(s,"."):e,c=e=>!e||n(e),l=(e,t,r)=>{const i=n(t)?t.split("."):t;let o=0;for(;o{const{obj:n,k:i}=l(e,t,Object);if(void 0!==n||1===t.length)return void(n[i]=r);let o=t[t.length-1],s=t.slice(0,t.length-1),a=l(e,s,Object);for(;void 0===a.obj&&s.length;)o=`${s[s.length-1]}.${o}`,s=s.slice(0,s.length-1),a=l(e,s,Object),a?.obj&&void 0!==a.obj[`${a.k}.${o}`]&&(a.obj=void 0);a.obj[`${a.k}.${o}`]=r},p=(e,t)=>{const{obj:r,k:n}=l(e,t);if(r&&Object.prototype.hasOwnProperty.call(r,n))return r[n]},h=(e,t,r)=>{for(const i in t)"__proto__"!==i&&"constructor"!==i&&(i in e?n(e[i])||e[i]instanceof String||n(t[i])||t[i]instanceof String?r&&(e[i]=t[i]):h(e[i],t[i],r):e[i]=t[i]);return e},d=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var f={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const g=e=>n(e)?e.replace(/[&<>"'\/]/g,e=>f[e]):e,m=[" ",",","?","!",";"],v=new class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){const t=this.regExpMap.get(e);if(void 0!==t)return t;const r=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,r),this.regExpQueue.push(e),r}}(20),y=(e,t,r=".")=>{if(!e)return;if(e[t]){if(!Object.prototype.hasOwnProperty.call(e,t))return;return e[t]}const n=t.split(r);let i=e;for(let e=0;e-1&&se?.replace("_","-"),_={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){console?.[e]?.apply?.(console,t)}};class w{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||"i18next:",this.logger=e||_,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,"log","",!0)}warn(...e){return this.forward(e,"warn","",!0)}error(...e){return this.forward(e,"error","")}deprecate(...e){return this.forward(e,"warn","WARNING DEPRECATED: ",!0)}forward(e,t,r,i){return i&&!this.debug?null:(n(e[0])&&(e[0]=`${r}${this.prefix} ${e[0]}`),this.logger[t](e))}create(e){return new w(this.logger,{prefix:`${this.prefix}:${e}:`,...this.options})}clone(e){return(e=e||this.options).prefix=e.prefix||this.prefix,new w(this.logger,e)}}var k=new w;class S{constructor(){this.observers={}}on(e,t){return e.split(" ").forEach(e=>{this.observers[e]||(this.observers[e]=new Map);const r=this.observers[e].get(t)||0;this.observers[e].set(t,r+1)}),this}off(e,t){this.observers[e]&&(t?this.observers[e].delete(t):delete this.observers[e])}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,r])=>{for(let n=0;n{for(let i=0;i-1&&this.options.ns.splice(t,1)}getResource(e,t,r,i={}){const o=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,s=void 0!==i.ignoreJSONStructure?i.ignoreJSONStructure:this.options.ignoreJSONStructure;let a;e.indexOf(".")>-1?a=e.split("."):(a=[e,t],r&&(Array.isArray(r)?a.push(...r):n(r)&&o?a.push(...r.split(o)):a.push(r)));const c=p(this.data,a);return!c&&!t&&!r&&e.indexOf(".")>-1&&(e=a[0],t=a[1],r=a.slice(2).join(".")),!c&&s&&n(r)?y(this.data?.[e]?.[t],r,o):c}addResource(e,t,r,n,i={silent:!1}){const o=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator;let s=[e,t];r&&(s=s.concat(o?r.split(o):r)),e.indexOf(".")>-1&&(s=e.split("."),n=t,t=s[1]),this.addNamespaces(t),u(this.data,s,n),i.silent||this.emit("added",e,t,r,n)}addResources(e,t,r,i={silent:!1}){for(const i in r)(n(r[i])||Array.isArray(r[i]))&&this.addResource(e,t,i,r[i],{silent:!0});i.silent||this.emit("added",e,t,r)}addResourceBundle(e,t,r,n,i,o={silent:!1,skipCopy:!1}){let s=[e,t];e.indexOf(".")>-1&&(s=e.split("."),n=r,r=t,t=s[1]),this.addNamespaces(t);let a=p(this.data,s)||{};o.skipCopy||(r=JSON.parse(JSON.stringify(r))),n?h(a,r,i):a={...a,...r},u(this.data,s,a),o.silent||this.emit("added",e,t,r)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}hasResourceBundle(e,t){return void 0!==this.getResource(e,t)}getResourceBundle(e,t){return t||(t=this.options.defaultNS),this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){const t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}}var C={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,r,n,i){return e.forEach(e=>{t=this.processors[e]?.process(t,r,n,i)??t}),t}};const E=Symbol("i18next/PATH_KEY");function I(e,t){const{[E]:r}=e(function(){const e=[],t=Object.create(null);let r;return t.get=(n,i)=>(r?.revoke?.(),i===E?e:(e.push(i),r=Proxy.revocable(n,t),r.proxy)),Proxy.revocable(Object.create(null),t).proxy}());return r.join(t?.keySeparator??".")}const O={},N=e=>!n(e)&&"boolean"!=typeof e&&"number"!=typeof e;class A extends S{constructor(e,t={}){super(),((e,t,r)=>{["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"].forEach(e=>{t[e]&&(r[e]=t[e])})})(0,e,this),this.options=t,void 0===this.options.keySeparator&&(this.options.keySeparator="."),this.logger=k.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){const r={...t};if(null==e)return!1;const n=this.resolve(e,r);return void 0!==n?.res}extractFromKey(e,t){let r=void 0!==t.nsSeparator?t.nsSeparator:this.options.nsSeparator;void 0===r&&(r=":");const i=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator;let o=t.ns||this.options.defaultNS||[];const s=r&&e.indexOf(r)>-1,a=!(this.options.userDefinedKeySeparator||t.keySeparator||this.options.userDefinedNsSeparator||t.nsSeparator||((e,t,r)=>{t=t||"",r=r||"";const n=m.filter(e=>t.indexOf(e)<0&&r.indexOf(e)<0);if(0===n.length)return!0;const i=v.getRegExp(`(${n.map(e=>"?"===e?"\\?":e).join("|")})`);let o=!i.test(e);if(!o){const t=e.indexOf(r);t>0&&!i.test(e.substring(0,t))&&(o=!0)}return o})(e,r,i));if(s&&!a){const t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:n(o)?[o]:o};const s=e.split(r);(r!==i||r===i&&this.options.ns.indexOf(s[0])>-1)&&(o=s.shift()),e=s.join(i)}return{key:e,namespaces:n(o)?[o]:o}}translate(e,t,r){let i="object"==typeof t?{...t}:t;if("object"!=typeof i&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),"object"==typeof i&&(i={...i}),i||(i={}),null==e)return"";"function"==typeof e&&(e=I(e,{...this.options,...i})),Array.isArray(e)||(e=[String(e)]);const o=void 0!==i.returnDetails?i.returnDetails:this.options.returnDetails,s=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,{key:a,namespaces:c}=this.extractFromKey(e[e.length-1],i),l=c[c.length-1];let u=void 0!==i.nsSeparator?i.nsSeparator:this.options.nsSeparator;void 0===u&&(u=":");const p=i.lng||this.language,h=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if("cimode"===p?.toLowerCase())return h?o?{res:`${l}${u}${a}`,usedKey:a,exactUsedKey:a,usedLng:p,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:`${l}${u}${a}`:o?{res:a,usedKey:a,exactUsedKey:a,usedLng:p,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:a;const d=this.resolve(e,i);let f=d?.res;const g=d?.usedKey||a,m=d?.exactUsedKey||a,v=void 0!==i.joinArrays?i.joinArrays:this.options.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,b=void 0!==i.count&&!n(i.count),_=A.hasDefaultValue(i),w=b?this.pluralResolver.getSuffix(p,i.count,i):"",k=i.ordinal&&b?this.pluralResolver.getSuffix(p,i.count,{ordinal:!1}):"",S=b&&!i.ordinal&&0===i.count,x=S&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${w}`]||i[`defaultValue${k}`]||i.defaultValue;let C=f;y&&!f&&_&&(C=x);const E=N(C),O=Object.prototype.toString.apply(C);if(!(y&&C&&E&&["[object Number]","[object Function]","[object RegExp]"].indexOf(O)<0)||n(v)&&Array.isArray(C))if(y&&n(v)&&Array.isArray(f))f=f.join(v),f&&(f=this.extendTranslation(f,e,i,r));else{let t=!1,n=!1;!this.isValidLookup(f)&&_&&(t=!0,f=x),this.isValidLookup(f)||(n=!0,f=a);const o=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:f,c=_&&x!==f&&this.options.updateMissing;if(n||t||c){if(this.logger.log(c?"updateKey":"missingKey",p,l,a,c?x:f),s){const e=this.resolve(a,{...i,keySeparator:!1});e&&e.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let e=[];const t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if("fallback"===this.options.saveMissingTo&&t&&t[0])for(let r=0;r{const n=_&&r!==f?r:o;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,n,c,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,l,t,n,c,i),this.emit("missingKey",e,l,t,f)};this.options.saveMissing&&(this.options.saveMissingPlurals&&b?e.forEach(e=>{const t=this.pluralResolver.getSuffixes(e,i);S&&i[`defaultValue${this.options.pluralSeparator}zero`]&&t.indexOf(`${this.options.pluralSeparator}zero`)<0&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{r([e],a+t,i[`defaultValue${t}`]||x)})}):r(e,a,x))}f=this.extendTranslation(f,e,i,d,r),n&&f===a&&this.options.appendNamespaceToMissingKey&&(f=`${l}${u}${a}`),(n||t)&&this.options.parseMissingKeyHandler&&(f=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${u}${a}`:a,t?f:void 0,i))}else{if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(g,C,{...i,ns:c}):`key '${a} (${this.language})' returned an object instead of string.`;return o?(d.res=e,d.usedParams=this.getUsedParamsDetails(i),d):e}if(s){const e=Array.isArray(C),t=e?[]:{},r=e?m:g;for(const e in C)if(Object.prototype.hasOwnProperty.call(C,e)){const n=`${r}${s}${e}`;t[e]=_&&!f?this.translate(n,{...i,defaultValue:N(x)?x[e]:void 0,joinArrays:!1,ns:c}):this.translate(n,{...i,joinArrays:!1,ns:c}),t[e]===n&&(t[e]=C[e])}f=t}}return o?(d.res=f,d.usedParams=this.getUsedParamsDetails(i),d):f}extendTranslation(e,t,r,i,o){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...r},r.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});const s=n(e)&&(void 0!==r?.interpolation?.skipOnVariables?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let a;if(s){const t=e.match(this.interpolator.nestingRegexp);a=t&&t.length}let c=r.replace&&!n(r.replace)?r.replace:r;if(this.options.interpolation.defaultVariables&&(c={...this.options.interpolation.defaultVariables,...c}),e=this.interpolator.interpolate(e,c,r.lng||this.language||i.usedLng,r),s){const t=e.match(this.interpolator.nestingRegexp);a<(t&&t.length)&&(r.nest=!1)}!r.lng&&i&&i.res&&(r.lng=this.language||i.usedLng),!1!==r.nest&&(e=this.interpolator.nest(e,(...e)=>o?.[0]!==e[0]||r.context?this.translate(...e,t):(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null),r)),r.interpolation&&this.interpolator.reset()}const s=r.postProcess||this.options.postProcess,a=n(s)?[s]:s;return null!=e&&a?.length&&!1!==r.applyPostProcessor&&(e=C.handle(a,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...i,usedParams:this.getUsedParamsDetails(r)},...r}:r,this)),e}resolve(e,t={}){let r,i,o,s,a;return n(e)&&(e=[e]),e.forEach(e=>{if(this.isValidLookup(r))return;const c=this.extractFromKey(e,t),l=c.key;i=l;let u=c.namespaces;this.options.fallbackNS&&(u=u.concat(this.options.fallbackNS));const p=void 0!==t.count&&!n(t.count),h=p&&!t.ordinal&&0===t.count,d=void 0!==t.context&&(n(t.context)||"number"==typeof t.context)&&""!==t.context,f=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);u.forEach(e=>{this.isValidLookup(r)||(a=e,O[`${f[0]}-${e}`]||!this.utils?.hasLoadedNamespace||this.utils?.hasLoadedNamespace(a)||(O[`${f[0]}-${e}`]=!0,this.logger.warn(`key "${i}" for languages "${f.join(", ")}" won't get resolved as namespace "${a}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),f.forEach(n=>{if(this.isValidLookup(r))return;s=n;const i=[l];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(i,l,n,e,t);else{let e;p&&(e=this.pluralResolver.getSuffix(n,t.count,t));const r=`${this.options.pluralSeparator}zero`,o=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(p&&(t.ordinal&&0===e.indexOf(o)&&i.push(l+e.replace(o,this.options.pluralSeparator)),i.push(l+e),h&&i.push(l+r)),d){const n=`${l}${this.options.contextSeparator||"_"}${t.context}`;i.push(n),p&&(t.ordinal&&0===e.indexOf(o)&&i.push(n+e.replace(o,this.options.pluralSeparator)),i.push(n+e),h&&i.push(n+r))}}let a;for(;a=i.pop();)this.isValidLookup(r)||(o=a,r=this.getResource(n,e,a,t))}))})}),{res:r,usedKey:i,exactUsedKey:o,usedLng:s,usedNS:a}}isValidLookup(e){return!(void 0===e||!this.options.returnNull&&null===e||!this.options.returnEmptyString&&""===e)}getResource(e,t,r,n={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,r,n):this.resourceStore.getResource(e,t,r,n)}getUsedParamsDetails(e={}){const t=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],r=e.replace&&!n(e.replace);let i=r?e.replace:e;if(r&&void 0!==e.count&&(i.count=e.count),this.options.interpolation.defaultVariables&&(i={...this.options.interpolation.defaultVariables,...i}),!r){i={...i};for(const e of t)delete i[e]}return i}static hasDefaultValue(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&"defaultValue"===t.substring(0,12)&&void 0!==e[t])return!0;return!1}}class R{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=k.create("languageUtils")}getScriptPartFromCode(e){if(!(e=b(e))||e.indexOf("-")<0)return null;const t=e.split("-");return 2===t.length?null:(t.pop(),"x"===t[t.length-1].toLowerCase()?null:this.formatLanguageCode(t.join("-")))}getLanguagePartFromCode(e){if(!(e=b(e))||e.indexOf("-")<0)return e;const t=e.split("-");return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(n(e)&&e.indexOf("-")>-1){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch(e){}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;const r=this.formatLanguageCode(e);this.options.supportedLngs&&!this.isSupportedCode(r)||(t=r)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;const r=this.getScriptPartFromCode(e);if(this.isSupportedCode(r))return t=r;const n=this.getLanguagePartFromCode(e);if(this.isSupportedCode(n))return t=n;t=this.options.supportedLngs.find(e=>e===n?e:e.indexOf("-")<0&&n.indexOf("-")<0?void 0:e.indexOf("-")>0&&n.indexOf("-")<0&&e.substring(0,e.indexOf("-"))===n||0===e.indexOf(n)&&n.length>1?e:void 0)}),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t}getFallbackCodes(e,t){if(!e)return[];if("function"==typeof e&&(e=e(t)),n(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let r=e[t];return r||(r=e[this.getScriptPartFromCode(t)]),r||(r=e[this.formatLanguageCode(t)]),r||(r=e[this.getLanguagePartFromCode(t)]),r||(r=e.default),r||[]}toResolveHierarchy(e,t){const r=this.getFallbackCodes((!1===t?[]:t)||this.options.fallbackLng||[],e),i=[],o=e=>{e&&(this.isSupportedCode(e)?i.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return n(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?("languageOnly"!==this.options.load&&o(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&o(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&o(this.getLanguagePartFromCode(e))):n(e)&&o(this.formatLanguageCode(e)),r.forEach(e=>{i.indexOf(e)<0&&o(this.formatLanguageCode(e))}),i}}const M={zero:0,one:1,two:2,few:3,many:4,other:5},T={select:e=>1===e?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class P{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=k.create("pluralResolver"),this.pluralRulesCache={}}addRule(e,t){this.rules[e]=t}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){const r=b("dev"===e?"en":e),n=t.ordinal?"ordinal":"cardinal",i=JSON.stringify({cleanedCode:r,type:n});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let o;try{o=new Intl.PluralRules(r,{type:n})}catch(r){if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),T;if(!e.match(/-|_/))return T;const n=this.languageUtils.getLanguagePartFromCode(e);o=this.getRule(n,t)}return this.pluralRulesCache[i]=o,o}needsPlural(e,t={}){let r=this.getRule(e,t);return r||(r=this.getRule("dev",t)),r?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,r={}){return this.getSuffixes(e,r).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let r=this.getRule(e,t);return r||(r=this.getRule("dev",t)),r?r.resolvedOptions().pluralCategories.sort((e,t)=>M[e]-M[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:""}${e}`):[]}getSuffix(e,t,r={}){const n=this.getRule(e,r);return n?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${n.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix("dev",t,r))}}const L=(e,t,r,i=".",o=!0)=>{let s=((e,t,r)=>{const n=p(e,r);return void 0!==n?n:p(t,r)})(e,t,r);return!s&&o&&n(r)&&(s=y(e,r,i),void 0===s&&(s=y(t,r,i))),s},D=e=>e.replace(/\$/g,"$$$$");class F{constructor(e={}){this.logger=k.create("interpolator"),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||(e.interpolation={escapeValue:!0});const{escape:t,escapeValue:r,useRawValueToEscape:n,prefix:i,prefixEscaped:o,suffix:s,suffixEscaped:a,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:p,nestingPrefixEscaped:h,nestingSuffix:f,nestingSuffixEscaped:m,nestingOptionsSeparator:v,maxReplaces:y,alwaysFormat:b}=e.interpolation;this.escape=void 0!==t?t:g,this.escapeValue=void 0===r||r,this.useRawValueToEscape=void 0!==n&&n,this.prefix=i?d(i):o||"{{",this.suffix=s?d(s):a||"}}",this.formatSeparator=c||",",this.unescapePrefix=l?"":u||"-",this.unescapeSuffix=this.unescapePrefix?"":l||"",this.nestingPrefix=p?d(p):h||d("$t("),this.nestingSuffix=f?d(f):m||d(")"),this.nestingOptionsSeparator=v||",",this.maxReplaces=y||1e3,this.alwaysFormat=void 0!==b&&b,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,r,i){let s,a,c;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},u=e=>{if(e.indexOf(this.formatSeparator)<0){const n=L(t,l,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(n,void 0,r,{...i,...t,interpolationkey:e}):n}const n=e.split(this.formatSeparator),o=n.shift().trim(),s=n.join(this.formatSeparator).trim();return this.format(L(t,l,o,this.options.keySeparator,this.options.ignoreJSONStructure),s,r,{...i,...t,interpolationkey:o})};this.resetRegExp();const p=i?.missingInterpolationHandler||this.options.missingInterpolationHandler,h=void 0!==i?.interpolation?.skipOnVariables?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>D(e)},{regex:this.regexp,safeValue:e=>this.escapeValue?D(this.escape(e)):D(e)}].forEach(t=>{for(c=0;s=t.regex.exec(e);){const r=s[1].trim();if(a=u(r),void 0===a)if("function"==typeof p){const t=p(e,s,i);a=n(t)?t:""}else if(i&&Object.prototype.hasOwnProperty.call(i,r))a="";else{if(h){a=s[0];continue}this.logger.warn(`missed to pass in variable ${r} for interpolating ${e}`),a=""}else n(a)||this.useRawValueToEscape||(a=o(a));const l=t.safeValue(a);if(e=e.replace(s[0],l),h?(t.regex.lastIndex+=a.length,t.regex.lastIndex-=s[0].length):t.regex.lastIndex=0,c++,c>=this.maxReplaces)break}}),e}nest(e,t,r={}){let i,s,a;const c=(e,t)=>{const r=this.nestingOptionsSeparator;if(e.indexOf(r)<0)return e;const n=e.split(new RegExp(`${r}[ ]*{`));let i=`{${n[1]}`;e=n[0],i=this.interpolate(i,a);const o=i.match(/'/g),s=i.match(/"/g);((o?.length??0)%2==0&&!s||s.length%2!=0)&&(i=i.replace(/'/g,'"'));try{a=JSON.parse(i),t&&(a={...t,...a})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${r}${i}`}return a.defaultValue&&a.defaultValue.indexOf(this.prefix)>-1&&delete a.defaultValue,e};for(;i=this.nestingRegexp.exec(e);){let l=[];a={...r},a=a.replace&&!n(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;const u=/{.*}/.test(i[1])?i[1].lastIndexOf("}")+1:i[1].indexOf(this.formatSeparator);if(-1!==u&&(l=i[1].slice(u).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),i[1]=i[1].slice(0,u)),s=t(c.call(this,i[1].trim(),a),a),s&&i[0]===e&&!n(s))return s;n(s)||(s=o(s)),s||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${e}`),s=""),l.length&&(s=l.reduce((e,t)=>this.format(e,t,r.lng,{...r,interpolationkey:i[1].trim()}),s.trim())),e=e.replace(i[0],s),this.regexp.lastIndex=0}return e}}const U=e=>{const t={};return(r,n,i)=>{let o=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(o={...o,[i.interpolationkey]:void 0});const s=n+JSON.stringify(o);let a=t[s];return a||(a=e(b(n),i),t[s]=a),a(r)}},j=e=>(t,r,n)=>e(b(r),n)(t);class B{constructor(e={}){this.logger=k.create("formatter"),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||",";const r=t.cacheInBuiltFormats?U:j;this.formats={number:r((e,t)=>{const r=new Intl.NumberFormat(e,{...t});return e=>r.format(e)}),currency:r((e,t)=>{const r=new Intl.NumberFormat(e,{...t,style:"currency"});return e=>r.format(e)}),datetime:r((e,t)=>{const r=new Intl.DateTimeFormat(e,{...t});return e=>r.format(e)}),relativetime:r((e,t)=>{const r=new Intl.RelativeTimeFormat(e,{...t});return e=>r.format(e,t.range||"day")}),list:r((e,t)=>{const r=new Intl.ListFormat(e,{...t});return e=>r.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=U(t)}format(e,t,r,n={}){const i=t.split(this.formatSeparator);if(i.length>1&&i[0].indexOf("(")>1&&i[0].indexOf(")")<0&&i.find(e=>e.indexOf(")")>-1)){const e=i.findIndex(e=>e.indexOf(")")>-1);i[0]=[i[0],...i.splice(1,e)].join(this.formatSeparator)}return i.reduce((e,t)=>{const{formatName:i,formatOptions:o}=(e=>{let t=e.toLowerCase().trim();const r={};if(e.indexOf("(")>-1){const n=e.split("(");t=n[0].toLowerCase().trim();const i=n[1].substring(0,n[1].length-1);"currency"===t&&i.indexOf(":")<0?r.currency||(r.currency=i.trim()):"relativetime"===t&&i.indexOf(":")<0?r.range||(r.range=i.trim()):i.split(";").forEach(e=>{if(e){const[t,...n]=e.split(":"),i=n.join(":").trim().replace(/^'+|'+$/g,""),o=t.trim();r[o]||(r[o]=i),"false"===i&&(r[o]=!1),"true"===i&&(r[o]=!0),isNaN(i)||(r[o]=parseInt(i,10))}})}return{formatName:t,formatOptions:r}})(t);if(this.formats[i]){let t=e;try{const s=n?.formatParams?.[n.interpolationkey]||{},a=s.locale||s.lng||n.locale||n.lng||r;t=this.formats[i](e,a,{...o,...n,...s})}catch(e){this.logger.warn(e)}return t}return this.logger.warn(`there was no format function for ${i}`),e},e)}}class $ extends S{constructor(e,t,r,n={}){super(),this.backend=e,this.store=t,this.services=r,this.languageUtils=r.languageUtils,this.options=n,this.logger=k.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=n.maxParallelReads||10,this.readingCalls=0,this.maxRetries=n.maxRetries>=0?n.maxRetries:5,this.retryTimeout=n.retryTimeout>=1?n.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(r,n.backend,n)}queueLoad(e,t,r,n){const i={},o={},s={},a={};return e.forEach(e=>{let n=!0;t.forEach(t=>{const s=`${e}|${t}`;!r.reload&&this.store.hasResourceBundle(e,t)?this.state[s]=2:this.state[s]<0||(1===this.state[s]?void 0===o[s]&&(o[s]=!0):(this.state[s]=1,n=!1,void 0===o[s]&&(o[s]=!0),void 0===i[s]&&(i[s]=!0),void 0===a[t]&&(a[t]=!0)))}),n||(s[e]=!0)}),(Object.keys(i).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:n}),{toLoad:Object.keys(i),pending:Object.keys(o),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(a)}}loaded(e,t,r){const n=e.split("|"),i=n[0],o=n[1];t&&this.emit("failedLoading",i,o,t),!t&&r&&this.store.addResourceBundle(i,o,r,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&r&&(this.state[e]=0);const s={};this.queue.forEach(r=>{((e,t,r)=>{const{obj:n,k:i}=l(e,t,Object);n[i]=n[i]||[],n[i].push(r)})(r.loaded,[i],o),((e,t)=>{void 0!==e.pending[t]&&(delete e.pending[t],e.pendingCount--)})(r,e),t&&r.errors.push(t),0!==r.pendingCount||r.done||(Object.keys(r.loaded).forEach(e=>{s[e]||(s[e]={});const t=r.loaded[e];t.length&&t.forEach(t=>{void 0===s[e][t]&&(s[e][t]=!0)})}),r.done=!0,r.errors.length?r.callback(r.errors):r.callback())}),this.emit("loaded",s),this.queue=this.queue.filter(e=>!e.done)}read(e,t,r,n=0,i=this.retryTimeout,o){if(!e.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads)return void this.waitingReads.push({lng:e,ns:t,fcName:r,tried:n,wait:i,callback:o});this.readingCalls++;const s=(s,a)=>{if(this.readingCalls--,this.waitingReads.length>0){const e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}s&&a&&n{this.read.call(this,e,t,r,n+1,2*i,o)},i):o(s,a)},a=this.backend[r].bind(this.backend);if(2!==a.length)return a(e,t,s);try{const r=a(e,t);r&&"function"==typeof r.then?r.then(e=>s(null,e)).catch(s):s(null,r)}catch(e){s(e)}}prepareLoading(e,t,r={},i){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();n(e)&&(e=this.languageUtils.toResolveHierarchy(e)),n(t)&&(t=[t]);const o=this.queueLoad(e,t,r,i);if(!o.toLoad.length)return o.pending.length||i(),null;o.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,r){this.prepareLoading(e,t,{},r)}reload(e,t,r){this.prepareLoading(e,t,{reload:!0},r)}loadOne(e,t=""){const r=e.split("|"),n=r[0],i=r[1];this.read(n,i,"read",void 0,void 0,(r,o)=>{r&&this.logger.warn(`${t}loading namespace ${i} for language ${n} failed`,r),!r&&o&&this.logger.log(`${t}loaded namespace ${i} for language ${n}`,o),this.loaded(e,r,o)})}saveMissing(e,t,r,n,i,o={},s=()=>{}){if(!this.services?.utils?.hasLoadedNamespace||this.services?.utils?.hasLoadedNamespace(t)){if(null!=r&&""!==r){if(this.backend?.create){const a={...o,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=5===c.length?c(e,t,r,n,a):c(e,t,r,n),i&&"function"==typeof i.then?i.then(e=>s(null,e)).catch(s):s(null,i)}catch(e){s(e)}else c(e,t,r,n,s,a)}e&&e[0]&&this.store.addResource(e[0],t,r,n)}}else this.logger.warn(`did not save key "${r}" as the namespace "${t}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")}}const z=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if("object"==typeof e[1]&&(t=e[1]),n(e[1])&&(t.defaultValue=e[1]),n(e[2])&&(t.tDescription=e[2]),"object"==typeof e[2]||"object"==typeof e[3]){const r=e[3]||e[2];Object.keys(r).forEach(e=>{t[e]=r[e]})}return t},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),q=e=>(n(e.ns)&&(e.ns=[e.ns]),n(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),n(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs?.indexOf?.("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),"boolean"==typeof e.initImmediate&&(e.initAsync=e.initImmediate),e),V=()=>{};class W extends S{constructor(e={},t){var r;if(super(),this.options=q(e),this.services={},this.logger=k,this.modules={external:[]},r=this,Object.getOwnPropertyNames(Object.getPrototypeOf(r)).forEach(e=>{"function"==typeof r[e]&&(r[e]=r[e].bind(r))}),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,"function"==typeof e&&(t=e,e={}),null==e.defaultNS&&e.ns&&(n(e.ns)?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));const r=z();this.options={...r,...this.options,...q(e)},this.options.interpolation={...r.interpolation,...this.options.interpolation},void 0!==e.keySeparator&&(this.options.userDefinedKeySeparator=e.keySeparator),void 0!==e.nsSeparator&&(this.options.userDefinedNsSeparator=e.nsSeparator);const o=e=>e?"function"==typeof e?new e:e:null;if(!this.options.isClone){let e;this.modules.logger?k.init(o(this.modules.logger),this.options):k.init(null,this.options),e=this.modules.formatter?this.modules.formatter:B;const t=new R(this.options);this.store=new x(this.options.resources,this.options);const n=this.services;n.logger=k,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new P(t,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==r.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),!e||this.options.interpolation.format&&this.options.interpolation.format!==r.interpolation.format||(n.formatter=o(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new F(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new $(o(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on("*",(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=o(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=o(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new A(this.services,this.options),this.translator.on("*",(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||(t=V),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&"dev"!==e[0]&&(this.options.lng=e[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(e=>{this[e]=(...t)=>this.store[e](...t)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});const s=i(),a=()=>{const e=(e,r)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),s.resolve(r),t(e,r)};if(this.languages&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?a():setTimeout(a,0),s}loadResources(e,t=V){let r=t;const i=n(e)?e:this.language;if("function"==typeof e&&(r=e),!this.options.resources||this.options.partialBundledLanguages){if("cimode"===i?.toLowerCase()&&(!this.options.preload||0===this.options.preload.length))return r();const e=[],t=t=>{t&&"cimode"!==t&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{"cimode"!==t&&e.indexOf(t)<0&&e.push(t)})};i?t(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{e||this.resolvedLanguage||!this.language||this.setResolvedLanguage(this.language),r(e)})}else r(null)}reloadResources(e,t,r){const n=i();return"function"==typeof e&&(r=e,e=void 0),"function"==typeof t&&(r=t,t=void 0),e||(e=this.languages),t||(t=this.options.ns),r||(r=V),this.services.backendConnector.reload(e,t,e=>{n.resolve(),r(e)}),n}use(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&C.addPostProcessor(e),"formatter"===e.type&&(this.modules.formatter=e),"3rdParty"===e.type&&this.modules.external.push(e),this}setResolvedLanguage(e){if(e&&this.languages&&!(["cimode","dev"].indexOf(e)>-1)){for(let e=0;e-1)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&this.languages.indexOf(e)<0&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;const r=i();this.emit("languageChanging",e);const o=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},s=(n,i)=>{i?this.isLanguageChangingTo===e&&(o(i),this.translator.changeLanguage(i),this.isLanguageChangingTo=void 0,this.emit("languageChanged",i),this.logger.log("languageChanged",i)):this.isLanguageChangingTo=void 0,r.resolve((...e)=>this.t(...e)),t&&t(n,(...e)=>this.t(...e))},a=t=>{e||t||!this.services.languageDetector||(t=[]);const r=n(t)?t:t&&t[0],i=this.store.hasLanguageSomeTranslations(r)?r:this.services.languageUtils.getBestMatchFromCodes(n(t)?[t]:t);i&&(this.language||o(i),this.translator.language||this.translator.changeLanguage(i),this.services.languageDetector?.cacheUserLanguage?.(i)),this.loadResources(i,e=>{s(e,i)})};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?0===this.services.languageDetector.detect.length?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e):a(this.services.languageDetector.detect()),r}getFixedT(e,t,r){const i=(e,t,...n)=>{let o;o="object"!=typeof t?this.options.overloadTranslationOptionHandler([e,t].concat(n)):{...t},o.lng=o.lng||i.lng,o.lngs=o.lngs||i.lngs,o.ns=o.ns||i.ns,""!==o.keyPrefix&&(o.keyPrefix=o.keyPrefix||r||i.keyPrefix);const s=this.options.keySeparator||".";let a;return o.keyPrefix&&Array.isArray(e)?a=e.map(e=>("function"==typeof e&&(e=I(e,{...this.options,...t})),`${o.keyPrefix}${s}${e}`)):("function"==typeof e&&(e=I(e,{...this.options,...t})),a=o.keyPrefix?`${o.keyPrefix}${s}${e}`:e),this.t(a,o)};return n(e)?i.lng=e:i.lngs=e,i.ns=t,i.keyPrefix=r,i}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=t.lng||this.resolvedLanguage||this.languages[0],n=!!this.options&&this.options.fallbackLng,i=this.languages[this.languages.length-1];if("cimode"===r.toLowerCase())return!0;const o=(e,t)=>{const r=this.services.backendConnector.state[`${e}|${t}`];return-1===r||0===r||2===r};if(t.precheck){const e=t.precheck(this,o);if(void 0!==e)return e}return!(!this.hasResourceBundle(r,e)&&this.services.backendConnector.backend&&(!this.options.resources||this.options.partialBundledLanguages)&&(!o(r,e)||n&&!o(i,e)))}loadNamespaces(e,t){const r=i();return this.options.ns?(n(e)&&(e=[e]),e.forEach(e=>{this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}),this.loadResources(e=>{r.resolve(),t&&t(e)}),r):(t&&t(),Promise.resolve())}loadLanguages(e,t){const r=i();n(e)&&(e=[e]);const o=this.options.preload||[],s=e.filter(e=>o.indexOf(e)<0&&this.services.languageUtils.isSupportedCode(e));return s.length?(this.options.preload=o.concat(s),this.loadResources(e=>{r.resolve(),t&&t(e)}),r):(t&&t(),Promise.resolve())}dir(e){if(e||(e=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!e)return"rtl";try{const t=new Intl.Locale(e);if(t&&t.getTextInfo){const e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch(e){}const t=this.services?.languageUtils||new R(z());return e.toLowerCase().indexOf("-latn")>1?"ltr":["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"].indexOf(t.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(e={},t){return new W(e,t)}cloneInstance(e={},t=V){const r=e.forkResourceStore;r&&delete e.forkResourceStore;const n={...this.options,...e,isClone:!0},i=new W(n);if(void 0===e.debug&&void 0===e.prefix||(i.logger=i.logger.clone(e)),["store","services","language"].forEach(e=>{i[e]=this[e]}),i.services={...this.services},i.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},r){const e=Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((r,n)=>(r[n]={...e[t][n]},r),e[t]),e),{});i.store=new x(e,n),i.services.resourceStore=i.store}return i.translator=new A(i.services,n),i.translator.on("*",(e,...t)=>{i.emit(e,...t)}),i.init(n,t),i.translator.options=n,i.translator.backendConnector.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},i}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const H=W.createInstance();H.createInstance=W.createInstance;const G=H.createInstance,K=H.dir,J=H.init,Y=H.loadResources,Z=H.reloadResources,X=H.use,Q=H.changeLanguage,ee=H.getFixedT,te=H.t,re=H.exists,ne=H.setDefaultNamespace,ie=H.hasLoadedNamespace,oe=H.loadNamespaces,se=H.loadLanguages},2648:(e,t,r)=>{"use strict";r(1609),r(8437),r(9454)},2875:(e,t,r)=>{"use strict";r.d(t,{x:()=>s});const n=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,i={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},o=e=>i[e],s=e=>e.replace(n,o)},3220:(e,t,r)=>{"use strict";r.d(t,{J:()=>i,v:()=>n});const n=(e,t=!1)=>{let r=e.redirectUrl;const n="seo-by-rank-math"===e.slug||"seo-by-rank-math-pro"===e.slug,i=e.onboardingUrl&&"string"==typeof e.onboardingUrl&&""!==e.onboardingUrl.trim();if(n){const t=window.marketplaceConfig?.wpConfig;(!t||!0!==t.rankMathRegistrationSkip)&&i&&(r=e.onboardingUrl)}else t&&i&&(r=e.onboardingUrl);return r},i=e=>{if(e&&""!==e.trim()){const t=void 0!==window.marketplaceConfig&&window.marketplaceConfig?.wpConfig?.adminUrl;if(t){let r=e;r.startsWith("wp-admin/")&&(r=r.substring(9));const n=`${t}${r}`;window.location.href=n}else{const t=`${window.location.origin}/${e}`;window.location.href=t}return}window.location.href="/wp-admin/plugins.php"}},3227:(e,t,r)=>{"use strict";r(1609),r(7674),r(1352),r(9454)},3258:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(1609),i=r(7979),o=r(488);function s({loading:e=!1}){const{plugins:t,assetsBaseUrl:r,uiI18n:s}=(0,i.D)(),[a,c]=(0,n.useState)(0),[l,u]=(0,n.useState)(2),p="undefined"!=typeof window&&window.marketplaceConfig?.activePlugins?window.marketplaceConfig.activePlugins:[],h="undefined"!=typeof window&&window.marketplaceConfig?.activeThemeAuthor?window.marketplaceConfig.activeThemeAuthor:"";(0,n.useEffect)(()=>{const e=()=>{window.innerWidth>1024?u(2):(window.innerWidth,u(1))};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const d=e=>{if(!e.rules)return!0;if(e.rules.mustHavePlugins&&Array.isArray(e.rules.mustHavePlugins)){if(0===e.rules.mustHavePlugins.length)return!0;if(!e.rules.mustHavePlugins.some(e=>p.includes(e)))return!1}if(e.rules.mustHaveThemesByAuthor&&"string"==typeof e.rules.mustHaveThemesByAuthor){const t=e.rules.mustHaveThemesByAuthor;if(h!==t)return!1}return!0},f=!0===t.find(e=>"seo-by-rank-math"===e.slug)?.activated,g=!0===t.find(e=>"seo-by-rank-math-pro"===e.slug)?.activated,m=t.filter(e=>!0!==e.activated&&!0===e.featured&&("seo-by-rank-math"===e.slug?!f&&!g&&d(e):"seo-by-rank-math-pro"===e.slug?f&&d(e):d(e))).sort((e,t)=>(void 0!==e.displayOrder?parseInt(e.displayOrder):1/0)-(void 0!==t.displayOrder?parseInt(t.displayOrder):1/0)),v=r||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",y=v?`${v}assets/icons/`:"",b=m.length,_=Math.max(0,b-l);return e?(0,n.createElement)("section",{className:"gv-featured-carousel gv-w-full"},(0,n.createElement)("div",{className:"gv-carousel-header gv-mb-lg gv-tab-mt-md gv-max-mob-mt-0"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md",style:{width:"200px"}})),(0,n.createElement)("div",{className:"gv-carousel-container",style:{position:"relative",overflow:"hidden"}},(0,n.createElement)("div",{className:"gv-carousel-track",style:{display:"flex",gap:"1rem"}},[...Array(l)].map((e,t)=>(0,n.createElement)("div",{key:`skeleton-slide-${t}`,className:"gv-carousel-slide gv-border-alt",style:{minWidth:`calc((100% - ${l-1}rem) / ${l})`,maxWidth:`calc((100% - ${l-1}rem) / ${l})`,flex:"0 0 auto",backgroundColor:"#D9EBF7",borderRadius:"6px",display:"flex",justifyContent:"space-between",maxHeight:"456px"}},(0,n.createElement)("header",{className:"gv-product-header gv-area-header gv-w-full",style:{border:"none",background:"#D9EBF7"}},(0,n.createElement)("div",{className:"gv-content gv-stack-space-sm gv-text-sm gv-flex gv-flex-col gv-items-start"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"80px",marginBottom:"24px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-w-full"}),(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-w-full"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm",style:{width:"90%"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm",style:{width:"80%"}}),(0,n.createElement)("div",{className:"gv-slide-footer gv-flex gv-align-center gv-flex-wrap gv-items-center",style:{marginTop:"24px"}},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"100px",height:"40px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-ml-md",style:{width:"60px",height:"24px"}}))),(0,n.createElement)("div",{className:"gv-image gv-max-mob-pl-md"},(0,n.createElement)("div",{className:"gv-card-image",style:{width:"100%",height:"100%",marginTop:"74px"}},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full"}))))))))):m&&0!==m.length?(0,n.createElement)("section",{className:"gv-featured-carousel gv-w-full"},(0,n.createElement)("div",{className:"gv-carousel-header gv-mb-lg gv-tab-mt-md gv-max-mob-mt-0"},(0,n.createElement)("h5",{className:"gv-title gv-heading-sm gv-recommended-heading"},s?.headings?.recommendedHeading)),(0,n.createElement)("div",{className:"gv-carousel-container",style:{position:"relative",overflow:"hidden"}},(0,n.createElement)("div",{className:"gv-carousel-track",style:{display:"flex",transition:"transform 0.3s ease-in-out",transform:`translateX(calc(-${a} * ((100% - ${l-1}rem) / ${l} + 1rem)))`,gap:"1rem"}},m.map((e,t)=>{const r=e?.i18n?.featuredTitle,i=e?.i18n?.featuredContent,a=e.i18n.freeTrialPeriod&&""!==e.i18n.freeTrialPeriod.trim()?e.i18n.freeTrialPeriod:s?.labels?.free||"Free",c=(0,o.M)(e,a,s),u=e.bannerUrl||e.image||e.thumbnail||"https://gravity.group.one/guide-images/product-image@2x.png",p=Array.isArray(e.categories)&&e.categories.length?"object"==typeof e.categories[0]?e.categories[0]:{slug:String(e.categories[0]),title:String(e.categories[0]),description:null}:{slug:"Others",title:"Others",description:null};return p.title||p.slug,(0,n.createElement)("div",{key:`slide-${t}`,className:"gv-carousel-slide gv-border-alt",style:{minWidth:`calc((100% - ${l-1}rem) / ${l})`,maxWidth:`calc((100% - ${l-1}rem) / ${l})`,flex:"0 0 auto",backgroundColor:"#D9EBF7",borderRadius:"6px",display:"flex",justifyContent:"space-between",maxHeight:"456px"}},(0,n.createElement)("header",{className:"gv-product-header gv-area-header",style:{border:"none",background:"#D9EBF7"}},(0,n.createElement)("div",{className:"gv-content gv-stack-space-lg gv-text-sm gv-flex gv-flex-col gv-items-start gv-h-full gv-justify-between"},(0,n.createElement)("div",{className:"gv-badge gv-badge-info"},e?.name),(0,n.createElement)("h5",{className:"gv-title gv-header-sm",style:{overflow:"hidden",display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",textOverflow:"ellipsis"}},r),(0,n.createElement)("p",{className:"gv-text-sm gv-flex-1",style:{overflow:"hidden",display:"-webkit-box",WebkitBoxOrient:"vertical",textOverflow:"ellipsis"}},i),(0,n.createElement)("div",{className:"gv-slide-footer gv-flex gv-align-center gv-items-center"},(0,n.createElement)("button",{onClick:()=>(e=>{if("undefined"!=typeof window){const t=new URL(window.location.href);t.searchParams.set("plugin",e.slug),window.history.pushState({},"",t.toString()),window.dispatchEvent(new PopStateEvent("popstate"))}})(e),className:"gv-button gv-button-secondary gv-w-auto gv-flex-shrink-0"},s?.featuredCta),(0,n.createElement)("span",{className:"gv-price gv-text-bold gv-text-md gv-ml-md gv-flex-1"},c,"free"!==e.licenseType&&c&&c!==a&&c!==(s?.labels?.freeUntilRenewal||"Free until renewal")&&(0,n.createElement)("span",{className:"gv-period"},"/",s?.labels?.timeMonth)))),(0,n.createElement)("div",{className:"gv-image gv-max-mob-pl-md"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:`${u} 1x, ${u} 2x`}),(0,n.createElement)("img",{src:u,srcSet:`${u} 1x, ${u} 2x`,alt:`${r} image`})))))}))),b>l&&(0,n.createElement)("div",{className:"gv-carousel-nav-wrapper gv-flex gv-justify-center gv-align-center gv-mt-sm gv-gap-fluid"},(0,n.createElement)("button",{onClick:()=>{a>0&&c(e=>e-1)},disabled:0===a,className:"gv-carousel-nav gv-carousel-nav-prev",style:{display:"flex",alignItems:"center",justifyContent:"center",cursor:0===a?"not-allowed":"pointer",opacity:0===a?.5:1},"aria-label":"Previous slide"},(0,n.createElement)("img",{src:`${y}chevron_left.svg`,alt:"Previous",style:{width:"24px",height:"24px"}})),(0,n.createElement)("div",{className:"gv-carousel-dots gv-flex-wrap gv-items-center gv-flex gv-justify-center gv-gap-sm"},Array.from({length:_+1}).map((e,t)=>(0,n.createElement)("button",{key:t,onClick:()=>(e=>{c(Math.min(e,_))})(t),className:"gv-carousel-dot",style:{width:"8px",height:"8px",borderRadius:"50%",border:"none",background:a===t?"#0066CC":"#D0D0D0",cursor:"pointer",padding:0},"aria-label":`Go to slide ${t+1}`}))),(0,n.createElement)("button",{onClick:()=>{a<_&&c(e=>e+1)},disabled:a>=_,className:"gv-carousel-nav gv-carousel-nav-next",style:{display:"flex",alignItems:"center",justifyContent:"center",cursor:a>=_?"not-allowed":"pointer",opacity:a>=_?.5:1},"aria-label":"Next slide"},(0,n.createElement)("img",{src:`${y}chevron_right.svg`,alt:"Next",style:{width:"24px",height:"24px"}})))):null}},3273:(e,t,r)=>{"use strict";r(1609),r(1352)},3461:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Päivitä sivu","ui.notifications.couldNotLoad":"Sivua ei voitu ladata","ui.notifications.refreshPage":"Päivitä sivu ja ota yhteyttä asiakaspalveluumme, jos ongelma jatkuu."}')},3526:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o(){const{loadingAction:e,loadingPlugin:t,assetsBaseUrl:r}=(0,i.D)();if(!e)return null;const o=`${r||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||""}assets/images/spinner.svg`;return(0,n.createElement)("div",{className:"loading-overlay show"},(0,n.createElement)("div",{className:"gv-loader-container gv-pos-center gv-pos-absolute"},(0,n.createElement)("gv-loader",{src:o}),(0,n.createElement)("p",null,e)))}},3591:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Actualizar página","ui.notifications.couldNotLoad":"No se puede cargar la página","ui.notifications.refreshPage":"Actualice la página y póngase en contacto con nuestro servicio de asistencia si el problema persiste."}')},3804:(e,t,r)=>{"use strict";r(4915),Object.create(null)},4103:(e,t,r)=>{"use strict";function n(e){if(!e||!e.data||!Array.isArray(e.data.catalog))return console.error("Unsupported marketplace response shape. Expected { data: { catalog: [...] } }.",e),{plugins:[],uiI18n:{},locale:null};const t=e.data.catalog,r=e.data.uiI18n||{},n=e.data.locale||null;if(0===t.length)return{plugins:[],uiI18n:r,locale:n};const i=t.map(e=>{var t,r;const n=e?.i18n?.description,i="string"==typeof n&&n?n:"object"==typeof e?.description&&null!==e.description?e.description["en-gb"]||Object.values(e.description)[0]||"":e?.description||"",o=e?.download||e?.download_url||e?.downloadUrl||"",s="object"==typeof e?.author&&null!==e.author?e.author.name||"":e?.author||"",a="object"==typeof e?.author&&null!==e.author&&e.author.url||"",c="object"==typeof e?.price&&null!==e.price?e.price.amount:void 0,l="object"==typeof e?.price&&null!==e.price?e.price.currency:void 0;return{...e,name:e?.name||"Unknown",slug:e?.slug||"",thumbnail:e?.thumbnail||"",description:i,download:o,author:s,authorUrl:a,priceAmount:c,priceCurrency:l,installed:null!==(t=e?.installed)&&void 0!==t&&t,activated:null!==(r=e?.activated)&&void 0!==r&&r,i18n:e?.i18n||{}}}),o=new Set;return{plugins:i.filter(e=>{const t=e.slug||e.name||JSON.stringify(e);return!o.has(t)&&(o.add(t),!0)}),uiI18n:r,locale:n}}r.d(t,{i:()=>n})},4469:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(1609),i=r(7979),o=r(7008),s=r(3220);function a({plugin:e}){const{assetsBaseUrl:t,noticeState:r,setNoticeState:a,handlePluginAction:c,cancelReload:l,uiI18n:u}=(0,i.D)();if(!r||!r.visible||r.pluginSlug!==e?.slug)return null;const p=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",h=p?`${p}assets/`:"",d="installed"===r.type,f="activated"===r.type,g=(e,t)=>e?e.replace("{0}",t||""):"",m=e?.name||"";return(0,n.createElement)("div",{className:"gv-notice gv-notice-success gv-p-lg gv-max-mob-pt-lg gv-mb-0 gv-mt-lg",style:{gridColumn:"1 / -1",width:"100%"}},(0,n.createElement)("img",{className:"gv-notice-icon",src:`${h}icons/success.svg`,alt:"Success"}),(0,n.createElement)("div",{className:"gv-notice-content"},(0,n.createElement)("div",{className:"gv-notice-title"},d&&g(u?.notifications?.pluginInstalled||"Plugin was installed.",m),f&&g(u?.notifications?.pluginActivated||"Plugin was activated.",m)),(0,n.createElement)("p",{className:"gv-text-sm"},d&&(u?.notifications?.activateNow||"Activate it now to start using it."),f&&g(u?.notifications?.manageInMyProducts||"{0} plugin was activated for this site. You can manage it on the My products page.",m))),d&&(0,n.createElement)("button",{type:"button",className:"gv-action gv-button gv-button-neutral",onClick:()=>{c("activate",e,"product_detail")}},u?.activatePluginButton),f&&(0,n.createElement)("button",{type:"button",className:"gv-action gv-button gv-button-neutral",onClick:()=>{(0,o.Mh)({buttonName:"Get started",buttonAction:"manage_product",plugin:e,context:{product_slug:e.slug,product_name:e.name,has_redirect_url:!(!e.redirectUrl||""===e.redirectUrl.trim()),has_onboarding_url:!(!e.onboardingUrl||""===e.onboardingUrl.trim())}}),l();const t=(0,s.v)(e,!0);(0,s.J)(t)}},(0,n.createElement)("span",null,u?.featuredCta||"Get Started"),(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${h}icons/arrow_forward.svg`})),(0,n.createElement)("button",{type:"button",className:"gv-notice-close","aria-label":"Close",onClick:()=>{a({visible:!1,type:null,pluginSlug:null}),sessionStorage.removeItem("mp_success_notice")}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${h}icons/close.svg`})))}},4598:(e,t,r)=>{"use strict";r.d(t,{A:()=>u});var n=r(1609),i=r(5795),o=r(1338),s=r(4469),a=r(4677),c=r(7979),l=r(488);function u({plugin:e,onClose:t,usePortal:r=!0,loading:u=!1}){const{assetsBaseUrl:p,useWPHandlers:h,pluginInAction:d,uiI18n:f,subscriptionStatus:g,isCheckingSubscription:m,setNoticeState:v,setErrorState:y}=(0,c.D)(),b=p||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",_=b?`${b}assets/icons/`:"";if(u){const e=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-p-0 gv-product-single gv-w-max-container gv-mx-auto gv-p-fluid"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-flex-col gv-items-start"},(0,n.createElement)("div",{className:"gv-flex gv-items-center gv-gap-xs"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"60px"}}))),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-sm gv-text-sm"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-lg gv-mb-sm",style:{marginBottom:"24px"}}),(0,n.createElement)("div",{className:"gv-skeleton"}),(0,n.createElement)("div",{className:"gv-skeleton"}),(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"80%"}})),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full",style:{marginTop:"75px"}},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-1 gv-area-table"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-table",role:"table"},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0 oc-border-none",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"70%"}})),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"120px",height:"32px"}})),(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mt-md"}))))),(0,n.createElement)("div",{className:"gv-section oc-left-border-0",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md",style:{width:"150px"}}))),[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-w-full"})))))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"180px"}}),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},[...Array(3)].map((e,t)=>(0,n.createElement)("li",{key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})))))),(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"250px"}}),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-xs"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"}))))))));return r?(0,i.createPortal)(e,document.body):e}if(!e)return null;(0,n.useEffect)(()=>{window.scrollTo(0,0)},[e]),(0,n.useEffect)(()=>{v(t=>t.visible&&t.pluginSlug===e.slug?t:{visible:!1,type:null,pluginSlug:null}),y(t=>t.visible&&t.pluginSlug===e.slug?t:{visible:!1,type:null,pluginSlug:null})},[e.slug,v,y]),(0,n.useEffect)(()=>{const e=()=>{v({visible:!1,type:null,pluginSlug:null}),y({visible:!1,type:null,pluginSlug:null})};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[v,y]),void 0!==window.onecomWpVars&&window.onecomWpVars,e.thumbnail;const w=e.bannerUrl||e.image||e.thumbnail||"https://gravity.group.one/guide-images/product-image@2x.png",k=e.name||"Product",S=e.i18n?.description||e.i18n?.subtitle||e.description||e.shortDescription||"No description available.",x=e.i18n?.subtitle,C="free"===e.licenseType,E=e.i18n?.freeTrialText||"",I=E&&""!==E.trim(),O=e.i18n?.freeTrialPeriod||"",N=O&&""!==O.trim(),A=N||I?f?.headings?.freeTrial||"Free trial*":(0,l.M)(e,f?.labels?.free||"Free",f),R=A===(f?.labels?.freeUntilRenewal||"Free until renewal"),M=(0,l.Tc)(e),T=(0,l.Dn)(e),P=(e,t)=>{if(!e||"object"!=typeof e)return[];const r=[];let n=1;for(;e[`${t}${n}`];){const i=e[`${t}${n}`];i&&""!==i.trim()&&r.push(i),n++}return r},L=P(e.i18n,"keyBenefitContent"),D=P(e.i18n,"keyFeatureContent"),F=[];if(e.i18n&&"object"==typeof e.i18n){let t=1;for(;e.i18n[`coreFeatureTitle${t}`]||e.i18n[`coreFeatureContent${t}`];){const r=e.i18n[`coreFeatureTitle${t}`],n=e.i18n[`coreFeatureContent${t}`];r&&""!==r.trim()&&n&&""!==n.trim()&&F.push({name:r,desc:n}),t++}}const U=D,j=L,B=F,$=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-p-0 gv-product-single gv-w-max-container gv-mx-auto gv-p-fluid"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-flex-col gv-items-start"},(0,n.createElement)("a",{href:"#",onClick:r=>{if(r.preventDefault(),!d[e.slug])if("undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()},className:"gv-flex gv-items-center gv-gap-xs",role:"button","aria-label":"Go back",style:{opacity:d[e.slug]?.5:1,pointerEvents:d[e.slug]?"none":"auto",cursor:d[e.slug]?"not-allowed":"pointer"},"aria-disabled":d[e.slug]?"true":"false"},(0,n.createElement)("img",{style:{minWidth:"24px"},className:"gv-tile",src:`${_}arrow_back.svg`,alt:"Back to plugins"}),(0,n.createElement)("span",null,f.backButton)),(0,n.createElement)(s.A,{plugin:e}),(0,n.createElement)(a.A,{plugin:e})),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-md gv-text-sm"},(0,n.createElement)("h3",{className:"gv-title gv-header-lg"},k),(0,n.createElement)("p",{className:"gv-text-sm"},S)),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:`${w} 1x, ${w} 2x`}),(0,n.createElement)("img",{src:w,srcSet:`${w} 1x, ${w} 2x`,alt:`${k} image`})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-1 gv-area-table"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-table",role:"table"},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0 oc-border-none",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},k),(0,n.createElement)("p",null,x)),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},N||I?(0,n.createElement)("span",{className:"gv-price-text"},A):(0,n.createElement)(n.Fragment,null,(0,n.createElement)("span",{className:"gv-price-text"},"premium"===e.licenseType&&null!==T?null!==T?T:M:A),!C&&!R&&A&&(0,n.createElement)("span",{className:"gv-period"},"/",f?.labels?.timeMonth))),N||I?(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},E)):!C&&A&&M&&null!==T&&(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},f.labels.untilRenewal," [",T,"]/",f?.labels?.timeMonth),(0,n.createElement)("div",{className:"gv-info"},f.labels.afterThat," [",M,"]/",f?.labels?.timeMonth))),h?(0,n.createElement)(o.A,{plugin:e}):e.download&&(0,n.createElement)("a",{href:e.download,download:!0,className:"gv-button gv-button-secondary"},"Download"))))),U.length>0&&(0,n.createElement)("div",{className:"gv-section oc-left-border-0",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},f?.keyFeatureHeading||e.i18n?.keyFeatureHeading))),U.map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},e)))))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},j.length>0&&(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},f?.benefitHeading||e.i18n?.benefitHeading||"Key benefits"),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},j.map((e,t)=>(0,n.createElement)("li",{key:t},e))))),B.length>0&&(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},f?.featureOverviewHeading||e.i18n?.featureOverviewHeading||"Core features overview"),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},B.map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("h3",{className:"gv-title gv-text-bold gv-text-lg"},e.name),(0,n.createElement)("p",{className:"gv-text-sm"},e.desc))))))));return r?(0,i.createPortal)($,document.body):$}},4677:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);function o({plugin:e}){const{assetsBaseUrl:t,errorState:r,setErrorState:o,uiI18n:s,plugins:a}=(0,i.D)(),c=e||a.find(e=>e.slug===r.pluginSlug),l=r&&r.visible&&r.pluginSlug===c?.slug;if((0,n.useEffect)(()=>{if(l){const e=setTimeout(()=>{h()},5e3);return()=>clearTimeout(e)}},[l]),!l)return null;const u=t||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",p=u?`${u}assets/`:"",h=()=>{o({visible:!1,type:null,pluginSlug:null})},d="activate"===r.type,f="deactivate"===r.type,g="install"===r.type,m="delete"===r.type,v=(e,t)=>e?e.replace("{0}",t||""):"",y=c?.name||"";return(0,n.createElement)("div",{className:"gv-toast-container"},(0,n.createElement)("div",{className:"gv-toast gv-toast-alert gv-visible"},(0,n.createElement)("gv-icon",{className:"gv-notice-icon","aria-hidden":"true",src:`${p}icons/error.svg`}),(0,n.createElement)("div",{className:"gv-toast-content"},d&&v(s?.notifications?.pluginActivationFailed||"Couldn't activate plugin.",y),f&&v(s?.notifications?.pluginDeactivationFailed||"Couldn't deactivate plugin.",y),g&&v(s?.notifications?.pluginInstallationFailed||"Couldn't install plugin.",y),m&&v(s?.notifications?.pluginDeletionFailed||"Couldn't delete plugin.",y)),(0,n.createElement)("button",{type:"button",className:"gv-toast-close","aria-label":"Close",onClick:h},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${p}icons/close.svg`}))))}},4811:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Actualiser la page","ui.notifications.couldNotLoad":"Impossible de charger la page","ui.notifications.refreshPage":"Veuillez rafraîchir la page et contact notre support si le problème persiste."}')},4814:(e,t,r)=>{"use strict";r(1609),r(3804),r(9454),r(7565)},4889:(e,t,r)=>{"use strict";r.d(t,{A:()=>f});var n=r(1609),i=r.n(n),o=r(4103),s=(r(6530),r(8291)),a=r(4598),c=r(9962),l=r(1755),u=r(1174),p=r(7979),h=r(488),d=r(7008);function f(){const{apiBaseUrl:e,useWPHandlers:t,wpConfig:r,enableDefaultStyles:f,assetsBaseUrl:g,pluginInAction:m,setPluginInAction:v,fetchSubscriptionStatus:y,isOnecomBrand:b,plugins:_,setPlugins:w,uiI18n:k,setUiI18n:S,handlePluginAction:x,allPluginsActivated:C,setAllPluginsActivated:E,catalogError:I,setCatalogError:O,catalogLoading:N,setCatalogLoading:A,shouldShowProvision:R,isSpecialPlugin:M,shouldShowPlugin:T,isWpVersionSupported:P}=(0,p.D)(),[L,D]=("undefined"!=typeof window&&window.marketplaceConfig?.activePlugins&&window.marketplaceConfig.activePlugins,"undefined"!=typeof window&&window.marketplaceConfig?.activeThemeAuthor&&window.marketplaceConfig.activeThemeAuthor,(0,n.useState)({})),[F,U]=(0,n.useState)(null),j=(0,n.useRef)(!1),B=(0,n.useRef)(!1),$=(0,n.useRef)(null),z=(0,n.useRef)(null),q=(0,n.useRef)(null),V=(0,n.useRef)(!1),W=g||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",H=W?`${W}assets/icons/`:"",G="undefined"!=typeof window?new URLSearchParams(window.location.search).get("plugin"):null,K=()=>{if("undefined"==typeof window)return"";const e=new URL(window.location.href);return e.searchParams.delete("plugin"),e.toString()};(0,n.useEffect)(()=>{if(G&&_.length){const e=_.find(e=>e.slug===G);e&&U(e)}else G||U(null)},[G,_]),(0,n.useEffect)(()=>{const e=()=>{const e=new URLSearchParams(window.location.search).get("plugin");if(e){if(_.length){const t=_.find(t=>t.slug===e);t&&U(t)}}else U(null)};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[_]);const{t:J}=(0,s.Bd)();(0,n.useEffect)(()=>{j.current||async function(){try{j.current=!0;const t=await fetch(`${e}`),r=await t.json();if(z.current=Date.now(),V.current=r.is_cached||!1,r&&!1===r.success)return(0,d.oe)({category:"marketplace_home",isContentRendered:!1}),O(!0),void A(!1);if(!r||!r.data||!r.data.catalog||Array.isArray(r.data.catalog)&&0===r.data.catalog.length)return console.error("API returned empty or blank response"),(0,d.oe)({category:"marketplace_home",isContentRendered:!1}),O(!0),void A(!1);const{plugins:n,uiI18n:i}=(0,o.i)(r);w(n),S(i),b&&n.filter(e=>M(e.slug)).forEach(e=>{y(e.slug)})}catch(e){(0,d.oe)({category:"marketplace_home",isContentRendered:!1}),O(!0)}finally{A(!1)}}()},[e,b,y,w]);const Y=i().useMemo(()=>{if(!_.length)return[];const e=new Map,t=!0===_.find(e=>"seo-by-rank-math"===e.slug)?.activated,r=!0===_.find(e=>"seo-by-rank-math-pro"===e.slug)?.activated;return _.forEach(n=>{e.has(n.slug)||!0===n.activated||("seo-by-rank-math"!==n.slug?"seo-by-rank-math-pro"!==n.slug?T(n)&&e.set(n.slug,n):t&&T(n)&&e.set(n.slug,n):t||r||!T(n)||e.set(n.slug,n))}),Array.from(e.values())},[_,T]);(0,n.useEffect)(()=>{if(_.length>0){const e=0===Y.length;E(e)}},[_,Y,E]),(0,n.useEffect)(()=>{N||I||!(_.length>0)||G||B.current||(q.current=Date.now(),"true"===sessionStorage.getItem("mp_skip_page_view")?sessionStorage.removeItem("mp_skip_page_view"):(0,d.Yk)(z.current,q.current,V.current),B.current=!0)},[N,I,_.length,G]),(0,n.useEffect)(()=>{F&&G&&$.current!==F.slug&&(q.current=Date.now(),"true"===sessionStorage.getItem("mp_skip_page_view")?sessionStorage.removeItem("mp_skip_page_view"):(0,d.$B)(F,z.current,q.current,V.current),$.current=F.slug),G||($.current=null)},[F,G]);const Z=e=>{if(!e)return!1;const t="onecom"===("undefined"!=typeof window&&window.marketplaceConfig?.brand),r="seo-by-rank-math-pro"===e.slug||"seo-by-rank-math"===e.slug;return t&&r};if(N){if(G){const e="onecom"!==("undefined"!=typeof window&&window.marketplaceConfig?.brand)||"seo-by-rank-math-pro"!==G&&"seo-by-rank-math"!==G?a.A:c.A;return(0,n.createElement)(e,{plugin:null,onClose:()=>{},usePortal:!1,loading:!0})}return(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg"},(0,n.createElement)("section",{className:"category-section"},(0,n.createElement)("div",{className:"gv-skeleton gv-mb-sm",style:{width:"160px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm",style:{width:"400px"}}),(0,n.createElement)("div",{className:"product-grid gv-grid gv-gap-lg gv-mob-grid-cols-1 gv-tab-grid-cols-2 gv-mb-md gv-desk-lg-grid-cols-3 gv-mt-md"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{key:t,className:"gv-card gv-gap-md gv-content-container gv-p-lg gv-grid gv-grid-cols-12 gv-radius"},(0,n.createElement)("div",{className:"gv-desk-span-2 gv-span-3 gv-tab-span-3"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"48px",height:"48px"}})),(0,n.createElement)("div",{className:"gv-desk-span-8 gv-tab-span-7 gv-span-7"},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm",style:{width:"80px"}})),(0,n.createElement)("div",{className:"gv-span-2 gv-content-center gv-text-right"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"24px"}}))))),(0,n.createElement)("div",{className:"gv-skeleton gv-mb-sm",style:{width:"160px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm",style:{width:"400px"}}),(0,n.createElement)("div",{className:"product-grid gv-grid gv-gap-lg gv-mob-grid-cols-1 gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3 gv-mt-md"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{key:t+3,className:"gv-card gv-gap-md gv-content-container gv-p-lg gv-grid gv-grid-cols-12 gv-radius"},(0,n.createElement)("div",{className:"gv-desk-span-2 gv-span-3 gv-tab-span-3"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"48px",height:"48px"}})),(0,n.createElement)("div",{className:"gv-desk-span-8 gv-tab-span-7 gv-span-7"},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm",style:{width:"80px"}})),(0,n.createElement)("div",{className:"gv-span-2 gv-content-center gv-text-right"},(0,n.createElement)("div",{className:"gv-skeleton",style:{width:"24px"}})))))))}if(I)return(0,n.createElement)(l.A,null);if(!P("6.2"))return(0,n.createElement)(u.A,null);if(F&&G){const e=Z(F)?c.A:a.A;return(0,n.createElement)(e,{plugin:F,onClose:()=>{if(U(null),"undefined"!=typeof window&&window.history&&window.history.length>1)window.history.back();else{const e=new URL(window.location.href);e.searchParams.delete("plugin"),window.history.replaceState({},"",e.toString())}},usePortal:!1,loading:N})}const X=new Map;Y.forEach(e=>{const t=Array.isArray(e.categories)&&e.categories.length?"object"==typeof e.categories[0]?e.categories[0]:{slug:String(e.categories[0]),title:String(e.categories[0]),description:null}:{slug:"Others",title:"Others",description:null},r=t.slug||t.title||"Others";X.has(r)||X.set(r,{info:t,plugins:[]}),X.get(r).plugins.push(e)});const Q=Array.from(X.entries()).filter(([e,{plugins:t}])=>t.length>0);return C?(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg gv-items-center gv-justify-center gv-p-fluid"},(0,n.createElement)("div",{className:"gv-text-center"},(0,n.createElement)("h5",{className:"gv-header-md gv-mb-sm"},k?.notifications?.allPluginsOwned),(0,n.createElement)("p",{className:"gv-text-md gv-mb-lg"},k?.text?.managePlugins),(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary buttons-min-width",onClick:()=>{window.location.href="/wp-admin/plugins.php"}},(0,n.createElement)("span",null,k.viewProductsButton),(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${H}/arrow_right.svg`})))):(0,n.createElement)("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg"},Q.map(([e,{info:t,plugins:r}])=>(0,n.createElement)("section",{key:e,className:"category-section"},(0,n.createElement)("p",{className:"gv-text-bold gv-text-lg gv-mb-xs"},t.title||e),t.description&&(0,n.createElement)("p",{className:"gv-text-sm"},t.description),(0,n.createElement)("div",{className:"product-grid gv-grid gv-gap-lg gv-mob-grid-cols-1 gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3 gv-mt-md"},r.map(e=>{R(e);const t=e.i18n.freeTrialPeriod&&""!==e.i18n.freeTrialPeriod.trim()?e.i18n.freeTrialPeriod:k?.labels?.free||"Free",r=(0,h.M)(e,t,k),i=(0,h.Tc)(e),o=(0,h.Dn)(e);return(0,n.createElement)("div",{key:e.slug,className:"gv-card gv-gap-md gv-content-container gv-p-lg gv-grid gv-grid-cols-12 gv-radius ocmp-plugin-cards"},(0,n.createElement)("div",{className:"gv-desk-span-2 gv-span-3 gv-tab-span-3"},(0,n.createElement)("img",{className:"gv-icon-tile",src:e.iconUrl||`${H}add_box.svg`,alt:e.name})),(0,n.createElement)("div",{className:"gv-desk-span-8 gv-tab-span-7 gv-span-7"},(0,n.createElement)("div",{className:"gv-flex gv-flex-col gv-justify-between gv-h-full"},(0,n.createElement)("p",{className:"gv-text-sm gv-text-bold gv-mb-xs"},e.name),(0,n.createElement)("p",{className:"oc-card-content gv-text-on-alternative gv-mb-sm gv-text-sm gv-flex-1"}," ",e.i18n.listingDescription||e.i18n.subtitle," "),(0,n.createElement)("span",{className:"gv-caption-lg gv-text-bold"},(0,n.createElement)(n.Fragment,null,"premium"===e.licenseType&&o>0?null!==o?o:i:r,"free"!==e.licenseType&&r&&r!==t&&r!==(k?.labels?.freeUntilRenewal||"Free until renewal")&&(0,n.createElement)("span",{className:"gv-period"},"/",k?.labels?.timeMonth))))),(0,n.createElement)("div",{className:"gv-span-2 gv-content-center gv-text-right"},(0,n.createElement)("a",{href:`${K()}&plugin=${e.slug}`,className:"gv-reset-button",style:{display:"inline-block"},"aria-label":`View details for ${e.name}`,onClick:t=>{t.preventDefault(),U(e);const r=new URL(window.location.href);r.searchParams.set("plugin",e.slug),window.history.pushState({},"",r.toString())}},(0,n.createElement)("img",{className:"gv-tile",src:`${H}arrow_forward.svg`,alt:`View ${e.name} details`,style:{minWidth:"24px"}}))))})))),F&&!G&&(()=>{const e=Z(F)?c.A:a.A;return(0,n.createElement)(e,{plugin:F,onClose:()=>U(null),loading:N})})())}},4915:e=>{e.exports={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}},5036:(e,t,r)=>{"use strict";var n=r(2635),i=r(8291),o=r(7823),s=r(8491),a=r(5205),c=r(3591),l=r(3461),u=r(4811),p=r(7529),h=r(1199),d=r(333);const f={en_GB:{translation:o},da_DK:{translation:s},de_DE:{translation:a},es_ES:{translation:c},fi_FI:{translation:l},fr_FR:{translation:u},it_IT:{translation:p},nl_NL:{translation:h},no_NO:{translation:d},nb_NO:{translation:d},pt_PT:{translation:r(5383)},sv_SE:{translation:r(8300)},fi:{translation:l}};n.default.use(i.r9).init({resources:f,lng:"en_GB",fallbackLng:"en_GB",interpolation:{escapeValue:!1}})},5205:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Seite aktualisieren","ui.notifications.couldNotLoad":"Die Seite konnte nicht geladen werden","ui.notifications.refreshPage":"Bitte aktualisieren Sie die Seite und Kontakt Sie unser Support, falls das Problem weiterhin besteht."}')},5383:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Atualizar página","ui.notifications.couldNotLoad":"Não foi possível carregar a página","ui.notifications.refreshPage":"Atualize a página e contacte a nossa equipa de suporte se o problema persistir."}')},5771:(e,t,r)=>{"use strict";r.d(t,{A:()=>u});var n=r(1609),i=r(4889),o=r(6027),s=r(3258),a=r(3526),c=r(7979);const l=()=>{const{allPluginsActivated:e,catalogError:t,catalogLoading:r,isWpVersionSupported:l}=(0,c.D)(),u=l("6.2"),[p,h]=(0,n.useState)("undefined"!=typeof window&&new URLSearchParams(window.location.search).get("plugin"));return(0,n.useEffect)(()=>{const e=()=>{const e="undefined"!=typeof window&&new URLSearchParams(window.location.search).get("plugin");h(!!e)};window.addEventListener("popstate",e);const t=window.history.pushState;window.history.pushState=function(...r){t.apply(this,r),e()};const r=window.history.replaceState;return window.history.replaceState=function(...t){r.apply(this,t),e()},()=>{window.removeEventListener("popstate",e),window.history.pushState=t,window.history.replaceState=r}},[]),(0,n.createElement)(n.Fragment,null,(0,n.createElement)(a.A,null),(0,n.createElement)("div",{className:"gv-activated"},(0,n.createElement)("div",{className:"marketplace-container gv-layout-product gv-surface-dim gv-w-max-container gv-mx-auto gv-p-fluid "},!p&&!t&&u&&(0,n.createElement)(o.A,{loading:r}),!p&&!e&&u&&(0,n.createElement)(s.A,{loading:r}),(0,n.createElement)(i.A,null))))},u=({apiBaseUrl:e,useWPHandlers:t,wpConfig:r,enableDefaultStyles:i,assetsBaseUrl:o})=>(0,n.createElement)(c.t,{apiBaseUrl:e,useWPHandlers:t,wpConfig:r,enableDefaultStyles:i,assetsBaseUrl:o},(0,n.createElement)(l,null))},5795:e=>{"use strict";e.exports=window.ReactDOM},6027:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(1609),i=r(7979);const o=({loading:e=!1})=>{const{assetsBaseUrl:t,uiI18n:r}=(0,i.D)(),o="https://wpaddon-static.group-cdn.one/images/wp/marketplace/banners/top-header-left-banner.png",s="https://wpaddon-static.group-cdn.one/images/wp/marketplace/banners/top-header-right-banner.png";return(0,n.createElement)("header",{className:"gv-product-header gv-product-banner gv-pt-fluid gv-items-stretch gv-justify-between gv-gap-lg gv-max-mob-pt-md"},(0,n.createElement)("div",{className:"gv-left-banner "+(e?"gv-h-full gv-w-full":"")},e?(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full"})):(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:o}),(0,n.createElement)("img",{src:o,alt:"Left banner"})))),(0,n.createElement)("div",{className:"gv-content gv-banner-content gv-max-mob-pt-0 gv-max-mob-pb-0 gv-desk-lg-text-center gv-tab-text-left gv-flex gv-flex-col gv-align-center gv-justify-center gv-pt-0"},e?(0,n.createElement)(n.Fragment,null,(0,n.createElement)("div",{className:"gv-skeleton gv-heading-lg gv-mt-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-heading-lg gv-mt-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-mt-sm"}),(0,n.createElement)("div",{className:"gv-skeleton gv-mt-sm"})):(0,n.createElement)(n.Fragment,null,(0,n.createElement)("h2",{className:"gv-banner-title"},r?.headings?.pageTitle),(0,n.createElement)("p",{className:"gv-banner-text gv-text-sm gv-mt-sm"},r?.text?.pageContent))),(0,n.createElement)("div",{className:"gv-right-banner gv-max-mob-pl-md "+(e?"gv-h-full gv-mt-0 gv-w-full":""),...e?{style:{transform:"translate(70px,5px)"}}:{}},e?(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full"})):(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:s}),(0,n.createElement)("img",{src:s,alt:"Product image"})))))}},6530:()=>{var e=Object.defineProperty,t=(t,r,n)=>(((t,r,n)=>{r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n})(t,"symbol"!=typeof r?r+"":r,n),n);const r={};async function n(e){if(r.hasOwnProperty(e))return r[e];let t;return t=e.startsWith("data:")||!("caches"in self)?fetch(e).then(e=>e.text()):caches.open("gravity").then(async t=>{let r=await t.match(e);return r||(r=await fetch(e),r.ok&&await t.put(e,r.clone())),r.text()}),r[e]=t,t}class i extends HTMLElement{static get observedAttributes(){return["src"]}fetchFlag(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchFlag(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchFlag(r)}}t(i,"TAG_NAME","gv-flag");class o extends HTMLElement{static get observedAttributes(){return["src"]}fetchIcon(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIcon(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIcon(r)}}t(o,"TAG_NAME","gv-icon");class s extends HTMLElement{static get observedAttributes(){return["src"]}fetchIllustration(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIllustration(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIllustration(r)}}t(s,"TAG_NAME","gv-illustration");class a extends HTMLElement{static get observedAttributes(){return["src"]}fetchIndicator(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchIndicator(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchIndicator(r)}}t(a,"TAG_NAME","gv-indicator");class c extends HTMLElement{static get observedAttributes(){return["src"]}fetchLoader(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchLoader(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchLoader(r)}}t(c,"TAG_NAME","gv-loader");class l extends HTMLElement{static get observedAttributes(){return["src"]}fetchLogo(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchLogo(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchLogo(r)}}t(l,"TAG_NAME","gv-logo");class u extends HTMLElement{static get observedAttributes(){return["src"]}fetchPayIcon(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchPayIcon(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchPayIcon(r)}}t(u,"TAG_NAME","gv-pay-icon");class p extends HTMLElement{static get observedAttributes(){return["src"]}fetchTile(e){e&&n(e).then(e=>this.innerHTML=e)}connectedCallback(){this.fetchTile(this.getAttribute("src"))}attributeChangedCallback(e,t,r){"src"===e&&t!==r&&this.fetchTile(r)}}function h(e,t){customElements.get(e)||customElements.define(e,t)}t(p,"TAG_NAME","gv-tile"),h(i.TAG_NAME,i),h(o.TAG_NAME,o),h(s.TAG_NAME,s),h(a.TAG_NAME,a),h(c.TAG_NAME,c),h(l.TAG_NAME,l),h(u.TAG_NAME,u),h(p.TAG_NAME,p)},6751:(e,t,r)=>{"use strict";var n;if(r.d(t,{A:()=>Hd}),"undefined"==typeof window){var i={hostname:""};n={crypto:{randomUUID:function(){throw Error("unsupported")}},navigator:{userAgent:"",onLine:!0},document:{createElement:function(){return{}},location:i,referrer:""},screen:{width:0,height:0},location:i,addEventListener:function(){},removeEventListener:function(){}}}else n=window;function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(i[r]=e[r]);return i}function g(e,t){return g=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},g(e,t)}function m(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function v(e){var t="function"==typeof Map?new Map:void 0;return v=function(e){if(null===e||(r=e,-1===Function.toString.call(r).indexOf("[native code]")))return e;var r;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,n)}function n(){return c(e,arguments,p(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),g(n,e)},v(e)}function y(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(y=function(){return!!e})()}function b(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(r):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,t):void 0}}(e))||t){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _(e,t){var r,n,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;s;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,n=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}var k,S=Object.defineProperty,x=function(e,t,r){return function(e,t,r){return t in e?S(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},C=Object.defineProperty,E=function(e,t,r){return function(e,t,r){return t in e?C(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},I=function(e){return e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e}(I||{}),O={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},N={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},A={};function R(e){if(A[e])return A[e];var t=globalThis[e],r=t.prototype,n=e in O?O[e]:void 0,i=Boolean(n&&n.every(function(e){var t,n;return Boolean(null==(n=null==(t=Object.getOwnPropertyDescriptor(r,e))?void 0:t.get)?void 0:n.toString().includes("[native code]"))})),o=e in N?N[e]:void 0,s=Boolean(o&&o.every(function(e){var t;return"function"==typeof r[e]&&(null==(t=r[e])?void 0:t.toString().includes("[native code]"))}));if(i&&s&&!globalThis.Zone)return A[e]=t.prototype,t.prototype;try{var a=document.createElement("iframe");document.body.appendChild(a);var c=a.contentWindow;if(!c)return t.prototype;var l=c[e].prototype;return document.body.removeChild(a),l?A[e]=l:r}catch(e){return r}}var M={};function T(e,t,r){var n,i=e+"."+String(r);if(M[i])return M[i].call(t);var o=R(e),s=null==(n=Object.getOwnPropertyDescriptor(o,r))?void 0:n.get;return s?(M[i]=s,s.call(t)):t[r]}var P=function(e){return T("Node",e,"childNodes")},L=function(e){return T("Node",e,"parentNode")},D=function(e){return T("Node",e,"parentElement")},F=function(e){return T("Node",e,"textContent")},U=function(e){return e&&"host"in e?T("ShadowRoot",e,"host"):null},j=function(e){return e&&"shadowRoot"in e?T("Element",e,"shadowRoot"):null};function B(e){return e.nodeType===e.ELEMENT_NODE}function $(e){var t=e&&"host"in e&&"mode"in e&&U(e)||null;return Boolean(t&&"shadowRoot"in t&&j(t)===e)}function z(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function q(e){try{var t=e.rules||e.cssRules;if(!t)return null;var r=e.href;return!r&&e.ownerNode&&e.ownerNode.ownerDocument&&(r=e.ownerNode.ownerDocument.location.href),(n=Array.from(t,function(e){return V(e,r)}).join("")).includes(" background-clip: text;")&&!n.includes(" -webkit-background-clip: text;")&&(n=n.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),n}catch(e){return null}var n}function V(e,t){if(function(e){return"styleSheet"in e}(e)){var r;try{r=q(e.styleSheet)||function(e){var t=e.cssText;if(t.split('"').length<3)return t;var r=["@import","url("+JSON.stringify(e.href)+")"];return""===e.layerName?r.push("layer"):e.layerName&&r.push("layer("+e.layerName+")"),e.supportsText&&r.push("supports("+e.supportsText+")"),e.media.length&&r.push(e.media.mediaText),r.join(" ")+";"}(e)}catch(t){r=e.cssText}return e.styleSheet.href?te(r,e.styleSheet.href):r}var n,i=e.cssText;return function(e){return"selectorText"in e}(e)&&e.selectorText.includes(":")&&(n=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm,i=i.replace(n,"$1\\$2")),t?te(i,t):i}var W=function(){function e(){E(this,"idNodeMap",new Map),E(this,"nodeMetaMap",new WeakMap)}var t=e.prototype;return t.getId=function(e){var t;if(!e)return-1;var r=null==(t=this.getMeta(e))?void 0:t.id;return null!=r?r:-1},t.getNode=function(e){return this.idNodeMap.get(e)||null},t.getIds=function(){return Array.from(this.idNodeMap.keys())},t.getMeta=function(e){return this.nodeMetaMap.get(e)||null},t.removeNodeFromMap=function(e){var t=this,r=this.getId(e);this.idNodeMap.delete(r),e.childNodes&&e.childNodes.forEach(function(e){return t.removeNodeFromMap(e)})},t.has=function(e){return this.idNodeMap.has(e)},t.hasNode=function(e){return this.nodeMetaMap.has(e)},t.add=function(e,t){var r=t.id;this.idNodeMap.set(r,e),this.nodeMetaMap.set(e,t)},t.replace=function(e,t){var r=this.getNode(e);if(r){var n=this.nodeMetaMap.get(r);n&&this.nodeMetaMap.set(t,n)}this.idNodeMap.set(e,t)},t.reset=function(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap},e}();function H(e){var t=e.element,r=e.maskInputOptions,n=e.tagName,i=e.type,o=e.value,s=e.maskInputFn,a=o||"",c=i&&G(i);return(r[n.toLowerCase()]||c&&r[c])&&(a=s?s(a,t):"*".repeat(a.length)),a}function G(e){return e.toLowerCase()}var K="__rrweb_original__";function J(e){var t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?G(t):null}function Y(e,t){var r;try{r=new URL(e,null!=t?t:window.location.href)}catch(e){return null}var n,i=r.pathname.match(/\.([0-9a-z]+)(?:$)/i);return null!=(n=null==i?void 0:i[1])?n:null}var Z=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,X=/^(?:[a-z+]+:)?\/\//i,Q=/^www\..*/i,ee=/^(data:)([^,]*),(.*)/i;function te(e,t){return(e||"").replace(Z,function(e,r,n,i,o,s){var a,c=n||o||s,l=r||i||"";if(!c)return e;if(X.test(c)||Q.test(c))return"url("+l+c+l+")";if(ee.test(c))return"url("+l+c+l+")";if("/"===c[0])return"url("+l+(((a=t).indexOf("//")>-1?a.split("/").slice(0,3).join("/"):a.split("/")[0]).split("?")[0]+c)+l+")";var u=t.split("/"),p=c.split("/");u.pop();for(var h,d=b(p);!(h=d()).done;){var f=h.value;"."!==f&&(".."===f?u.pop():u.push(f))}return"url("+l+u.join("/")+l+")"})}function re(e,t){return void 0===t&&(t=!1),t?e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,""):e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,"").replace(/0px/g,"0")}var ne,ie,oe=1,se=new RegExp("[^a-z0-9-_:]");function ae(){return oe++}var ce=/^[^ \t\n\r\u000c]+/,le=/^[, \t\n\r\u000c]+/,ue=new WeakMap;function pe(e,t){return t&&""!==t.trim()?he(e,t):t}function he(e,t){var r=ue.get(e);if(r||(r=e.createElement("a"),ue.set(e,r)),t){if(t.startsWith("blob:")||t.startsWith("data:"))return t}else t="";return r.setAttribute("href",t),r.href}function de(e,t,r,n){return n?"src"===r||"href"===r&&("use"!==t||"#"!==n[0])||"xlink:href"===r&&"#"!==n[0]?pe(e,n):"background"!==r||"table"!==t&&"td"!==t&&"th"!==t?"srcset"===r?function(e,t){if(""===t.trim())return t;var r=0;function n(e){var n,i=e.exec(t.substring(r));return i?(n=i[0],r+=n.length,n):""}for(var i=[];n(le),!(r>=t.length);){var o=n(ce);if(","===o.slice(-1))o=pe(e,o.substring(0,o.length-1)),i.push(o);else{var s="";o=pe(e,o);for(var a=!1;;){var c=t.charAt(r);if(""===c){i.push((o+s).trim());break}if(a)")"===c&&(a=!1);else{if(","===c){r+=1,i.push((o+s).trim());break}"("===c&&(a=!0)}s+=c,r+=1}}}return i.join(", ")}(e,n):"style"===r?te(n,he(e)):"object"===t&&"data"===r?pe(e,n):n:pe(e,n):n}function fe(e,t,r){return("video"===e||"audio"===e)&&"autoplay"===t}function ge(e,t,r){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return!!r&&ge(L(e),t,r);for(var n=e.classList.length;n--;){var i=e.classList[n];if(t.test(i))return!0}return!!r&&ge(L(e),t,r)}function me(e,t,r,n){var i;if(B(e)){if(!P(i=e).length)return!1}else{if(null===D(e))return!1;i=D(e)}try{if("string"==typeof t){if(n){if(i.closest("."+t))return!0}else if(i.classList.contains(t))return!0}else if(ge(i,t,n))return!0;if(r)if(n){if(i.closest(r))return!0}else if(i.matches(r))return!0}catch(e){}return!1}function ve(e,t){var r=t.doc,n=t.mirror,i=t.blockClass,o=t.blockSelector,s=t.needsMask,a=t.inlineStylesheet,c=t.maskInputOptions,l=void 0===c?{}:c,u=t.maskTextFn,p=t.maskInputFn,h=t.dataURLOptions,f=void 0===h?{}:h,g=t.inlineImages,m=t.recordCanvas,v=t.keepIframeSrcFn,y=t.newlyAddedElement,b=void 0!==y&&y,_=t.cssCaptured,w=void 0!==_&&_,k=function(e,t){if(t.hasNode(e)){var r=t.getId(e);return 1===r?void 0:r}}(r,n);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:I.Document,childNodes:[],compatMode:e.compatMode}:{type:I.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:I.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:k};case e.ELEMENT_NODE:return function(e,t){for(var r,n=t.doc,i=t.inlineStylesheet,o=t.maskInputOptions,s=void 0===o?{}:o,a=t.maskInputFn,c=t.dataURLOptions,l=void 0===c?{}:c,u=t.inlineImages,p=t.recordCanvas,h=t.keepIframeSrcFn,f=t.newlyAddedElement,g=void 0!==f&&f,m=t.rootId,v=function(e,t,r){try{if("string"==typeof t){if(e.classList.contains(t))return!0}else for(var n=e.classList.length;n--;){var i=e.classList[n];if(t.test(i))return!0}if(r)return e.matches(r)}catch(e){}return!1}(e,t.blockClass,t.blockSelector),y=function(e){if(d(e,HTMLFormElement))return"form";var t=G(e.tagName);return se.test(t)?"div":t}(e),b={},_=e.attributes.length,w=0;w<_;w++){var k=e.attributes[w];fe(y,k.name,k.value)||(b[k.name]=de(n,y,G(k.name),k.value))}if("link"===y&&i){var S=Array.from(n.styleSheets).find(function(t){return t.href===e.href}),x=null;S&&(x=q(S)),x&&(delete b.rel,delete b.href,b._cssText=x)}if("style"===y&&e.sheet){var C=q(e.sheet);C&&(e.childNodes.length>1&&(C=function(e,t){return function(e,t,r){void 0===r&&(r=!1);var n=Array.from(t.childNodes),i=[],o=0;if(n.length>1&&e&&"string"==typeof e)for(var s=re(e,r),a=s.length/e.length,c=1;c2&&""===h[0]&&""!==n[c-1].textContent)d=s.indexOf(p,1);else if(1===h.length){if(p=p.substring(0,p.length-1),(h=s.split(p)).length<=1)return i.push(e),i;u=101}else u===l.length-1&&(d=s.indexOf(p));if(h.length>=2&&u>100){var f=n[c-1].textContent;if(f&&"string"==typeof f){var g=re(f).length;d=s.indexOf(p,g)}-1===d&&(d=h[0].length)}if(-1!==d){for(var m=Math.floor(d/a);m>0&&m50*n.length)return i.push(e),i;var v=re(e.substring(0,m),r);if(v.length===d){i.push(e.substring(0,m)),e=e.substring(m),s=s.substring(d);break}v.length",T=R.crossOrigin,P=function(){R.removeEventListener("load",P);try{ne.width=R.naturalWidth,ne.height=R.naturalHeight,ie.drawImage(R,0,0),b.rr_dataURL=ne.toDataURL(l.type,l.quality)}catch(e){if("anonymous"!==R.crossOrigin)return R.crossOrigin="anonymous",void(R.complete&&0!==R.naturalWidth?P():R.addEventListener("load",P));console.warn("Cannot inline img src="+M+"! Error: "+e)}"anonymous"===R.crossOrigin&&(T?b.crossOrigin=T:R.removeAttribute("crossorigin"))};R.complete&&0!==R.naturalWidth?P():R.addEventListener("load",P)}if("audio"===y||"video"===y){var L=b;L.rr_mediaState=e.paused?"paused":"played",L.rr_mediaCurrentTime=e.currentTime,L.rr_mediaPlaybackRate=e.playbackRate,L.rr_mediaMuted=e.muted,L.rr_mediaLoop=e.loop,L.rr_mediaVolume=e.volume}if(g||(e.scrollLeft&&(b.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(b.rr_scrollTop=e.scrollTop)),v){var D=e.getBoundingClientRect(),F=D.width,U=D.height;b={class:b.class,rr_width:F+"px",rr_height:U+"px"}}"iframe"!==y||h(b.src)||(e.contentDocument||(b.rr_src=b.src),delete b.src);try{customElements.get(y)&&(r=!0)}catch(e){}return{type:I.Element,tagName:y,attributes:b,childNodes:[],isSVG:(j=e,Boolean("svg"===j.tagName||j.ownerSVGElement)||void 0),needBlock:v,rootId:m,isCustom:r};var j}(e,{doc:r,blockClass:i,blockSelector:o,inlineStylesheet:a,maskInputOptions:l,maskInputFn:p,dataURLOptions:f,inlineImages:g,recordCanvas:m,keepIframeSrcFn:v,newlyAddedElement:b,rootId:k});case e.TEXT_NODE:return function(e,t){var r=t.needsMask,n=t.maskTextFn,i=t.rootId,o=t.cssCaptured,s=L(e),a=s&&s.tagName,c="",l="STYLE"===a||void 0,u="SCRIPT"===a||void 0;return u?c="SCRIPT_PLACEHOLDER":o||(c=F(e),l&&c&&(c=te(c,he(t.doc)))),!l&&!u&&c&&r&&(c=n?n(c,D(e)):c.replace(/[\S]/g,"*")),{type:I.Text,textContent:c||"",rootId:i}}(e,{doc:r,needsMask:s,maskTextFn:u,rootId:k,cssCaptured:w});case e.CDATA_SECTION_NODE:return{type:I.CDATA,textContent:"",rootId:k};case e.COMMENT_NODE:return{type:I.Comment,textContent:F(e)||"",rootId:k};default:return!1}}function ye(e){return null==e?"":e.toLowerCase()}function be(e,t){var r=t.doc,n=t.mirror,i=t.blockClass,o=t.blockSelector,s=t.maskTextClass,a=t.maskTextSelector,c=t.skipChild,l=void 0!==c&&c,u=t.inlineStylesheet,p=void 0===u||u,h=t.maskInputOptions,d=void 0===h?{}:h,f=t.maskTextFn,g=t.maskInputFn,m=t.slimDOMOptions,v=t.dataURLOptions,y=void 0===v?{}:v,_=t.inlineImages,w=void 0!==_&&_,k=t.recordCanvas,S=void 0!==k&&k,x=t.onSerialize,C=t.onIframeLoad,E=t.iframeLoadTimeout,O=void 0===E?5e3:E,N=t.onStylesheetLoad,A=t.stylesheetLoadTimeout,R=void 0===A?5e3:A,M=t.keepIframeSrcFn,T=void 0===M?function(){return!1}:M,D=t.newlyAddedElement,F=void 0!==D&&D,U=t.cssCaptured,q=void 0!==U&&U,V=t.needsMask,W=t.preserveWhiteSpace,H=void 0===W||W;V||(V=me(e,s,a,void 0===V));var G,K=ve(e,{doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,dataURLOptions:y,inlineImages:w,recordCanvas:S,keepIframeSrcFn:T,newlyAddedElement:F,cssCaptured:q});if(!K)return console.warn(e,"not serialized"),null;G=n.hasNode(e)?n.getId(e):function(e,t){if(t.comment&&e.type===I.Comment)return!0;if(e.type===I.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel&&"script"===e.attributes.as||"modulepreload"===e.attributes.rel)||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===Y(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(ye(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===ye(e.attributes.name)||"icon"===ye(e.attributes.rel)||"apple-touch-icon"===ye(e.attributes.rel)||"shortcut icon"===ye(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&ye(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(ye(e.attributes.property).match(/^(og|twitter|fb):/)||ye(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===ye(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===ye(e.attributes.name)||"googlebot"===ye(e.attributes.name)||"bingbot"===ye(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===ye(e.attributes.name)||"generator"===ye(e.attributes.name)||"framework"===ye(e.attributes.name)||"publisher"===ye(e.attributes.name)||"progid"===ye(e.attributes.name)||ye(e.attributes.property).match(/^article:/)||ye(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===ye(e.attributes.name)||"yandex-verification"===ye(e.attributes.name)||"csrf-token"===ye(e.attributes.name)||"p:domain_verify"===ye(e.attributes.name)||"verify-v1"===ye(e.attributes.name)||"verification"===ye(e.attributes.name)||"shopify-checkout-api-token"===ye(e.attributes.name)))return!0}}return!1}(K,m)||!H&&K.type===I.Text&&!K.textContent.replace(/^\s+|\s+$/gm,"").length?-2:ae();var J=Object.assign(K,{id:G});if(n.add(e,J),-2===G)return null;x&&x(e);var Z=!l;if(J.type===I.Element){Z=Z&&!J.needBlock,delete J.needBlock;var X=j(e);X&&z(X)&&(J.isShadowHost=!0)}if((J.type===I.Document||J.type===I.Element)&&Z){m.headWhitespace&&J.type===I.Element&&"head"===J.tagName&&(H=!1);var Q={doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:l,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T,cssCaptured:!1};if(J.type===I.Element&&"textarea"===J.tagName&&void 0!==J.attributes.value);else{J.type===I.Element&&void 0!==J.attributes._cssText&&"string"==typeof J.attributes._cssText&&(Q.cssCaptured=!0);for(var ee,te=b(Array.from(P(e)));!(ee=te()).done;){var re=be(ee.value,Q);re&&J.childNodes.push(re)}}var ne=null;if(B(e)&&(ne=j(e)))for(var ie,oe=b(Array.from(P(ne)));!(ie=oe()).done;){var se=be(ie.value,Q);se&&(z(ne)&&(se.isShadow=!0),J.childNodes.push(se))}}var ce=L(e);return ce&&$(ce)&&z(ce)&&(J.isShadow=!0),J.type===I.Element&&"iframe"===J.tagName&&function(e,t,r){var n=e.contentWindow;if(n){var i,o=!1;try{i=n.document.readyState}catch(e){return}if("complete"===i){var s="about:blank";if(n.location.href!==s||e.src===s||""===e.src)return setTimeout(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}else{var a=setTimeout(function(){o||(t(),o=!0)},r);e.addEventListener("load",function(){clearTimeout(a),o=!0,t()})}}}(e,function(){var t=e.contentDocument;if(t&&C){var r=be(t,{doc:t,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:!1,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T});r&&C(e,r)}},O),J.type===I.Element&&"link"===J.tagName&&"string"==typeof J.attributes.rel&&("stylesheet"===J.attributes.rel||"preload"===J.attributes.rel&&"string"==typeof J.attributes.href&&"css"===Y(J.attributes.href))&&function(e,t,r){var n,i=!1;try{n=e.sheet}catch(e){return}if(!n){var o=setTimeout(function(){i||(t(),i=!0)},r);e.addEventListener("load",function(){clearTimeout(o),i=!0,t()})}}(e,function(){if(N){var t=be(e,{doc:r,mirror:n,blockClass:i,blockSelector:o,needsMask:V,maskTextClass:s,maskTextSelector:a,skipChild:!1,inlineStylesheet:p,maskInputOptions:d,maskTextFn:f,maskInputFn:g,slimDOMOptions:m,dataURLOptions:y,inlineImages:w,recordCanvas:S,preserveWhiteSpace:H,onSerialize:x,onIframeLoad:C,iframeLoadTimeout:O,onStylesheetLoad:N,stylesheetLoadTimeout:R,keepIframeSrcFn:T});t&&N(e,t)}},R),J}function _e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function we(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){return d(this,e)?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}),r}var ke={exports:{}},Se=String,xe=function(){return{isColorSupported:!1,reset:Se,bold:Se,dim:Se,italic:Se,underline:Se,inverse:Se,hidden:Se,strikethrough:Se,black:Se,red:Se,green:Se,yellow:Se,blue:Se,magenta:Se,cyan:Se,white:Se,gray:Se,bgBlack:Se,bgRed:Se,bgGreen:Se,bgYellow:Se,bgBlue:Se,bgMagenta:Se,bgCyan:Se,bgWhite:Se}};ke.exports=xe(),ke.exports.createColors=xe;var Ce=ke.exports,Ee=we(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"}))),Ie=Ce,Oe=Ee,Ne=function(e){function t(r,n,i,o,s,a){var c;return(c=e.call(this,r)||this).name="CssSyntaxError",c.reason=r,s&&(c.file=s),o&&(c.source=o),a&&(c.plugin=a),void 0!==n&&void 0!==i&&("number"==typeof n?(c.line=n,c.column=i):(c.line=n.line,c.column=n.column,c.endLine=i.line,c.endColumn=i.column)),c.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(c,t),c}h(t,e);var r=t.prototype;return r.setMessage=function(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},r.showSourceCode=function(e){var t=this;if(!this.source)return"";var r=this.source;null==e&&(e=Ie.isColorSupported),Oe&&e&&(r=Oe(r));var n,i,o=r.split(/\r?\n/),s=Math.max(this.line-3,0),a=Math.min(this.line+2,o.length),c=String(a).length;if(e){var l=Ie.createColors(!0),u=l.bold,p=l.gray,h=l.red;n=function(e){return u(h(e))},i=function(e){return p(e)}}else n=i=function(e){return e};return o.slice(s,a).map(function(e,r){var o=s+1+r,a=" "+(" "+o).slice(-c)+" | ";if(o===t.line){var l=i(a.replace(/\d/g," "))+e.slice(0,t.column-1).replace(/[^\t]/g," ");return n(">")+i(a)+e+"\n "+l+n("^")}return" "+i(a)+e}).join("\n")},r.toString=function(){var e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e},t}(v(Error)),Ae=Ne;Ne.default=Ne;var Re={};Re.isClean=Symbol("isClean"),Re.my=Symbol("my");var Me={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1},Te=function(){function e(e){this.builder=e}var t=e.prototype;return t.atrule=function(e,t){var r="@"+e.name,n=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?r+=e.raws.afterName:n&&(r+=" "),e.nodes)this.block(e,r+n);else{var i=(e.raws.between||"")+(t?";":"");this.builder(r+n+i,e)}},t.beforeAfter=function(e,t){var r;r="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");for(var n=e.parent,i=0;n&&"root"!==n.type;)i+=1,n=n.parent;if(r.includes("\n")){var o=this.raw(e,null,"indent");if(o.length)for(var s=0;s0&&"comment"===e.nodes[t].type;)t-=1;for(var r=this.raw(e,"semicolon"),n=0;n0&&void 0!==e.raws.after)return(t=e.raws.after).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawBeforeComment=function(e,t){var r;return e.walkComments(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeDecl=function(e,t){var r;return e.walkDecls(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeOpen=function(e){var t;return e.walk(function(e){if("decl"!==e.type&&void 0!==(t=e.raws.between))return!1}),t},t.rawBeforeRule=function(e){var t;return e.walk(function(r){if(r.nodes&&(r.parent!==e||e.first!==r)&&void 0!==r.raws.before)return(t=r.raws.before).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawColon=function(e){var t;return e.walkDecls(function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1}),t},t.rawEmptyBody=function(e){var t;return e.walk(function(e){if(e.nodes&&0===e.nodes.length&&void 0!==(t=e.raws.after))return!1}),t},t.rawIndent=function(e){return e.raws.indent?e.raws.indent:(e.walk(function(r){var n=r.parent;if(n&&n!==e&&n.parent&&n.parent===e&&void 0!==r.raws.before){var i=r.raws.before.split("\n");return t=(t=i[i.length-1]).replace(/\S/g,""),!1}}),t);var t},t.rawSemicolon=function(e){var t;return e.walk(function(e){if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&void 0!==(t=e.raws.semicolon))return!1}),t},t.rawValue=function(e,t){var r=e[t],n=e.raws[t];return n&&n.value===r?n.raw:r},t.root=function(e){this.body(e),e.raws.after&&this.builder(e.raws.after)},t.rule=function(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")},t.stringify=function(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)},e}(),Pe=Te;Te.default=Te;var Le=Pe;function De(e,t){new Le(t).stringify(e)}var Fe=De;De.default=De;var Ue=Re.isClean,je=Re.my,Be=Ae,$e=Pe,ze=Fe;function qe(e,t){var r=new e.constructor;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&"proxyCache"!==n){var i=e[n],o=void 0===i?"undefined":m(i);"parent"===n&&"object"===o?t&&(r[n]=t):"source"===n?r[n]=i:Array.isArray(i)?r[n]=i.map(function(e){return qe(e,r)}):("object"===o&&null!==i&&(i=qe(i)),r[n]=i)}return r}var Ve=function(){function e(e){for(var t in void 0===e&&(e={}),this.raws={},this[Ue]=!1,this[je]=!0,e)if("nodes"===t){this.nodes=[];for(var r,n=b(e[t]);!(r=n()).done;){var i=r.value;"function"==typeof i.clone?this.append(i.clone()):this.append(i)}}else this[t]=e[t]}var t=e.prototype;return t.addToError=function(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){var t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,"$&"+t.input.from+":"+t.start.line+":"+t.start.column+"$&")}return e},t.after=function(e){return this.parent.insertAfter(this,e),this},t.assign=function(e){for(var t in void 0===e&&(e={}),e)this[t]=e[t];return this},t.before=function(e){return this.parent.insertBefore(this,e),this},t.cleanRaws=function(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between},t.clone=function(e){void 0===e&&(e={});var t=qe(this);for(var r in e)t[r]=e[r];return t},t.cloneAfter=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertAfter(this,t),t},t.cloneBefore=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertBefore(this,t),t},t.error=function(e,t){if(void 0===t&&(t={}),this.source){var r=this.rangeBy(t),n=r.end,i=r.start;return this.source.input.error(e,{column:i.column,line:i.line},{column:n.column,line:n.line},t)}return new Be(e)},t.getProxyProcessor=function(){return{get:function(e,t){return"proxyOf"===t?e:"root"===t?function(){return e.root().toProxy()}:e[t]},set:function(e,t,r){return e[t]===r||(e[t]=r,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0}}},t.markDirty=function(){if(this[Ue]){this[Ue]=!1;for(var e=this;e=e.parent;)e[Ue]=!1}},t.next=function(){if(this.parent){var e=this.parent.index(this);return this.parent.nodes[e+1]}},t.positionBy=function(e,t){var r=this.source.start;if(e.index)r=this.positionInside(e.index,t);else if(e.word){var n=(t=this.toString()).indexOf(e.word);-1!==n&&(r=this.positionInside(n,t))}return r},t.positionInside=function(e,t){for(var r=t||this.toString(),n=this.source.start.column,i=this.source.start.line,o=0;o-1&&n>-1&&(this.annotation=this.getAnnotationURL(e.substring(r,n)))}},t.loadFile=function(e){if(this.root=Xe(e),Ye(e))return this.mapFile=e,Ze(e,"utf-8").toString().trim()},t.loadMap=function(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(d(t,Ke))return Je.fromSourceMap(t).toString();if(d(t,Je))return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}var r=t(e);if(r){var n=this.loadFile(r);if(!n)throw new Error("Unable to load previous source map: "+r.toString());return n}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var i=this.annotation;return e&&(i=Qe(Xe(e),i)),this.loadFile(i)}}},t.startWith=function(e,t){return!!e&&e.substr(0,t.length)===t},t.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},e}(),tt=et;et.default=et;var rt=Ee.SourceMapConsumer,nt=Ee.SourceMapGenerator,it=Ee.fileURLToPath,ot=Ee.pathToFileURL,st=Ee.isAbsolute,at=Ee.resolve,ct=function(e){void 0===e&&(e=21);for(var t="",r=e;r--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},lt=Ee,ut=Ae,pt=tt,ht=Symbol("fromOffsetCache"),dt=Boolean(rt&&nt),ft=Boolean(at&&st),gt=function(){function e(e,t){if(void 0===t&&(t={}),null==e||"object"===(void 0===e?"undefined":m(e))&&!e.toString)throw new Error("PostCSS received "+e+" instead of CSS string");if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!ft||/^\w+:\/\//.test(t.from)||st(t.from)?this.file=t.from:this.file=at(t.from)),ft&&dt){var r=new pt(this.css,t);if(r.text){this.map=r;var n=r.consumer().file;!this.file&&n&&(this.file=this.mapResolve(n))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}var t=e.prototype;return t.error=function(e,t,r,n){var i,o,s;if(void 0===n&&(n={}),t&&"object"===(void 0===t?"undefined":m(t))){var a=t,c=r;if("number"==typeof a.offset){var l=this.fromOffset(a.offset);t=l.line,r=l.col}else t=a.line,r=a.column;if("number"==typeof c.offset){var u=this.fromOffset(c.offset);o=u.line,s=u.col}else o=c.line,s=c.column}else if(!r){var p=this.fromOffset(t);t=p.line,r=p.col}var h=this.origin(t,r,o,s);return(i=h?new ut(e,void 0===h.endLine?h.line:{column:h.column,line:h.line},void 0===h.endLine?h.column:{column:h.endColumn,line:h.endLine},h.source,h.file,n.plugin):new ut(e,void 0===o?t:{column:r,line:t},void 0===o?r:{column:s,line:o},this.css,this.file,n.plugin)).input={column:r,endColumn:s,endLine:o,line:t,source:this.css},this.file&&(ot&&(i.input.url=ot(this.file).toString()),i.input.file=this.file),i},t.fromOffset=function(e){var t;if(this[ht])t=this[ht];else{var r=this.css.split("\n");t=new Array(r.length);for(var n=0,i=0,o=r.length;i=t[t.length-1])s=t.length-1;else for(var a,c=t.length-2;s>1)])c=a-1;else{if(!(e>=t[a+1])){s=a;break}s=a+1}return{col:e-t[s]+1,line:s+1}},t.mapResolve=function(e){return/^\w+:\/\//.test(e)?e:at(this.map.consumer().sourceRoot||this.map.root||".",e)},t.origin=function(e,t,r,n){if(!this.map)return!1;var i,o,s=this.map.consumer(),a=s.originalPositionFor({column:t,line:e});if(!a.source)return!1;"number"==typeof r&&(i=s.originalPositionFor({column:n,line:r})),o=st(a.source)?ot(a.source):new URL(a.source,this.map.consumer().sourceRoot||ot(this.map.mapFile));var c={column:a.column,endColumn:i&&i.column,endLine:i&&i.line,line:a.line,url:o.toString()};if("file:"===o.protocol){if(!it)throw new Error("file: protocol is not available in this PostCSS build");c.file=it(o)}var l=s.sourceContentFor(a.source);return l&&(c.source=l),c},t.toJSON=function(){for(var e={},t=0,r=["hasBOM","css","file","id"];t=0;t--)"comment"===(e=this.root.nodes[t]).type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t);else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))},t.generate=function(){if(this.clearAnnotation(),Et&&Ct&&this.isMap())return this.generateMap();var e="";return this.stringify(this.root,function(t){e+=t}),[e]},t.generateMap=function(){if(this.root)this.generateString();else if(1===this.previous().length){var e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=yt.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new yt({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},t.generateString=function(){var e=this;this.css="",this.map=new yt({file:this.outputFile(),ignoreInvalidMapping:!0});var t,r,n=1,i=1,o="",s={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,function(a,c,l){if(e.css+=a,c&&"end"!==l&&(s.generated.line=n,s.generated.column=i-1,c.source&&c.source.start?(s.source=e.sourcePath(c),s.original.line=c.source.start.line,s.original.column=c.source.start.column-1,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,e.map.addMapping(s))),(t=a.match(/\n/g))?(n+=t.length,r=a.lastIndexOf("\n"),i=a.length-r):i+=a.length,c&&"start"!==l){var u=c.parent||{raws:{}};("decl"===c.type||"atrule"===c.type&&!c.nodes)&&c===u.last&&!u.raws.semicolon||(c.source&&c.source.end?(s.source=e.sourcePath(c),s.original.line=c.source.end.line,s.original.column=c.source.end.column-1,s.generated.line=n,s.generated.column=i-2,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,s.generated.line=n,s.generated.column=i-1,e.map.addMapping(s)))}})},t.isAnnotation=function(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some(function(e){return e.annotation}))},t.isInline=function(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;var e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some(function(e){return e.inline}))},t.isMap=function(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0},t.isSourcesContent=function(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some(function(e){return e.withContent()})},t.outputFile=function(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"},t.path=function(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;var t=this.memoizedPaths.get(e);if(t)return t;var r=this.opts.to?bt(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(r=bt(wt(r,this.mapOpts.annotation)));var n=_t(r,e);return this.memoizedPaths.set(e,n),n},t.previous=function(){var e=this;if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(function(t){if(t.source&&t.source.input.map){var r=t.source.input.map;e.previousMaps.includes(r)||e.previousMaps.push(r)}});else{var t=new xt(this.originalCSS,this.opts);t.map&&this.previousMaps.push(t.map)}return this.previousMaps},t.setSourcesContent=function(){var e=this,t={};if(this.root)this.root.walk(function(r){if(r.source){var n=r.source.input.from;if(n&&!t[n]){t[n]=!0;var i=e.usesFileUrls?e.toFileUrl(n):e.toUrl(e.path(n));e.map.setSourceContent(i,r.source.input.css)}}});else if(this.css){var r=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(r,this.css)}},t.sourcePath=function(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))},t.toBase64=function(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))},t.toFileUrl=function(e){var t=this.memoizedFileURLs.get(e);if(t)return t;if(St){var r=St(e).toString();return this.memoizedFileURLs.set(e,r),r}throw new Error("`map.absolute` option is not available in this PostCSS build")},t.toUrl=function(e){var t=this.memoizedURLs.get(e);if(t)return t;"\\"===kt&&(e=e.replace(/\\/g,"/"));var r=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,r),r},e}(),Ot=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="comment",r}return h(t,e),t}(We),Nt=Ot;Ot.default=Ot;var At,Rt,Mt,Tt,Pt=Re.isClean,Lt=Re.my,Dt=Ge,Ft=Nt;function Ut(e){return e.map(function(e){return e.nodes&&(e.nodes=Ut(e.nodes)),delete e.source,e})}function jt(e){if(e[Pt]=!1,e.proxyOf.nodes)for(var t,r=b(e.proxyOf.nodes);!(t=r()).done;)jt(t.value)}var Bt=function(e){function t(){return e.apply(this,arguments)||this}h(t,e);var r=t.prototype;return r.append=function(){for(var e=arguments.length,t=new Array(e),r=0;r1?t-1:0),i=1;i=e&&(this.indexes[r]=t-1);return this.markDirty(),this},r.replaceValues=function(e,t,r){return r||(r=t,t={}),this.walkDecls(function(n){t.props&&!t.props.includes(n.prop)||t.fast&&!n.value.includes(t.fast)||(n.value=n.value.replace(e,r))}),this.markDirty(),this},r.some=function(e){return this.nodes.some(e)},r.walk=function(e){return this.each(function(t,r){var n;try{n=e(t,r)}catch(e){throw t.addToError(e)}return!1!==n&&t.walk&&(n=t.walk(e)),n})},r.walkAtRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("atrule"===r.type&&e.test(r.name))return t(r,n)}):this.walk(function(r,n){if("atrule"===r.type&&r.name===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("atrule"===e.type)return t(e,r)}))},r.walkComments=function(e){return this.walk(function(t,r){if("comment"===t.type)return e(t,r)})},r.walkDecls=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("decl"===r.type&&e.test(r.prop))return t(r,n)}):this.walk(function(r,n){if("decl"===r.type&&r.prop===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("decl"===e.type)return t(e,r)}))},r.walkRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("rule"===r.type&&e.test(r.selector))return t(r,n)}):this.walk(function(r,n){if("rule"===r.type&&r.selector===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("rule"===e.type)return t(e,r)}))},l(t,[{key:"first",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}},{key:"last",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}]),t}(We);Bt.registerParse=function(e){At=e},Bt.registerRule=function(e){Rt=e},Bt.registerAtRule=function(e){Mt=e},Bt.registerRoot=function(e){Tt=e};var $t=Bt;Bt.default=Bt,Bt.rebuild=function(e){"atrule"===e.type?Object.setPrototypeOf(e,Mt.prototype):"rule"===e.type?Object.setPrototypeOf(e,Rt.prototype):"decl"===e.type?Object.setPrototypeOf(e,Dt.prototype):"comment"===e.type?Object.setPrototypeOf(e,Ft.prototype):"root"===e.type&&Object.setPrototypeOf(e,Tt.prototype),e[Lt]=!0,e.nodes&&e.nodes.forEach(function(e){Bt.rebuild(e)})};var zt,qt,Vt=function(e){function t(t){var r;return(r=e.call(this,u({type:"document"},t))||this).nodes||(r.nodes=[]),r}return h(t,e),t.prototype.toResult=function(e){return void 0===e&&(e={}),new zt(new qt,this,e).stringify()},t}($t);Vt.registerLazyResult=function(e){zt=e},Vt.registerProcessor=function(e){qt=e};var Wt=Vt;Vt.default=Vt;var Ht=function(){function e(e,t){if(void 0===t&&(t={}),this.type="warning",this.text=e,t.node&&t.node.source){var r=t.node.rangeBy(t);this.line=r.start.line,this.column=r.start.column,this.endLine=r.end.line,this.endColumn=r.end.column}for(var n in t)this[n]=t[n]}return e.prototype.toString=function(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},e}(),Gt=Ht;Ht.default=Ht;var Kt=Gt,Jt=function(){function e(e,t,r){this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}var t=e.prototype;return t.toString=function(){return this.css},t.warn=function(e,t){void 0===t&&(t={}),t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);var r=new Kt(e,t);return this.messages.push(r),r},t.warnings=function(){return this.messages.filter(function(e){return"warning"===e.type})},l(e,[{key:"content",get:function(){return this.css}}]),e}(),Yt=Jt;Jt.default=Jt;var Zt="'".charCodeAt(0),Xt='"'.charCodeAt(0),Qt="\\".charCodeAt(0),er="/".charCodeAt(0),tr="\n".charCodeAt(0),rr=" ".charCodeAt(0),nr="\f".charCodeAt(0),ir="\t".charCodeAt(0),or="\r".charCodeAt(0),sr="[".charCodeAt(0),ar="]".charCodeAt(0),cr="(".charCodeAt(0),lr=")".charCodeAt(0),ur="{".charCodeAt(0),pr="}".charCodeAt(0),hr=";".charCodeAt(0),dr="*".charCodeAt(0),fr=":".charCodeAt(0),gr="@".charCodeAt(0),mr=/[\t\n\f\r "#'()/;[\\\]{}]/g,vr=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,yr=/.[\r\n"'(/\\]/,br=/[\da-f]/i,_r=$t,wr=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="atrule",r}h(t,e);var r=t.prototype;return r.append=function(){for(var t=arguments.length,r=new Array(t),n=0;n1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before;else if(this.first!==r)for(var o,s=b(i);!(o=s()).done;)o.value.raws.before=r.raws.before;return i},r.removeChild=function(t,r){var n=this.index(t);return!r&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),e.prototype.removeChild.call(this,t)},r.toResult=function(e){return void 0===e&&(e={}),new Sr(new xr,this,e).stringify()},t}(Cr);Er.registerLazyResult=function(e){Sr=e},Er.registerProcessor=function(e){xr=e};var Ir=Er;Er.default=Er,Cr.registerRoot(Er);var Or={comma:function(e){return Or.split(e,[","],!0)},space:function(e){return Or.split(e,[" ","\n","\t"])},split:function(e,t,r){for(var n,i=[],o="",s=!1,a=0,c=!1,l="",u=!1,p=b(e);!(n=p()).done;){var h=n.value;u?u=!1:"\\"===h?u=!0:c?h===l&&(c=!1):'"'===h||"'"===h?(c=!0,l=h):"("===h?a+=1:")"===h?a>0&&(a-=1):0===a&&t.includes(h)&&(s=!0),s?(""!==o&&i.push(o.trim()),o="",s=!1):o+=h}return(r||""!==o)&&i.push(o.trim()),i}},Nr=Or;Or.default=Or;var Ar=$t,Rr=Nr,Mr=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="rule",r.nodes||(r.nodes=[]),r}return h(t,e),l(t,[{key:"selectors",get:function(){return Rr.comma(this.selector)},set:function(e){var t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}}]),t}(Ar),Tr=Mr;Mr.default=Mr,Ar.registerRule(Mr);var Pr=Ge,Lr=Nt,Dr=kr,Fr=Ir,Ur=Tr,jr={empty:!0,space:!0},Br=function(){function e(e){this.input=e,this.root=new Fr,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}var t=e.prototype;return t.atrule=function(e){var t,r,n,i=new Dr;i.name=e[1].slice(1),""===i.name&&this.unnamedAtrule(i,e),this.init(i,e[2]);for(var o=!1,s=!1,a=[],c=[];!this.tokenizer.endOfFile();){if("("===(t=(e=this.tokenizer.nextToken())[0])||"["===t?c.push("("===t?")":"]"):"{"===t&&c.length>0?c.push("}"):t===c[c.length-1]&&c.pop(),0===c.length){if(";"===t){i.source.end=this.getPosition(e[2]),i.source.end.offset++,this.semicolon=!0;break}if("{"===t){s=!0;break}if("}"===t){if(a.length>0){for(r=a[n=a.length-1];r&&"space"===r[0];)r=a[--n];r&&(i.source.end=this.getPosition(r[3]||r[2]),i.source.end.offset++)}this.end(e);break}a.push(e)}else a.push(e);if(this.tokenizer.endOfFile()){o=!0;break}}i.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(i.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(i,"params",a),o&&(e=a[a.length-1],i.source.end=this.getPosition(e[3]||e[2]),i.source.end.offset++,this.spaces=i.raws.between,i.raws.between="")):(i.raws.afterName="",i.params=""),s&&(i.nodes=[],this.current=i)},t.checkMissedSemicolon=function(e){var t=this.colon(e);if(!1!==t){for(var r,n=0,i=t-1;i>=0&&("space"===(r=e[i])[0]||2!==(n+=1));i--);throw this.input.error("Missed semicolon","word"===r[0]?r[3]+1:r[2])}},t.colon=function(e){for(var t,r,n,i,o=0,s=b(e.entries());!(i=s()).done;){var a=i.value,c=a[0];if("("===(r=(t=a[1])[0])&&(o+=1),")"===r&&(o-=1),0===o&&":"===r){if(n){if("word"===n[0]&&"progid"===n[1])continue;return c}this.doubleColon(t)}n=t}return!1},t.comment=function(e){var t=new Lr;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;var r=e[1].slice(2,-2);if(/^\s*$/.test(r))t.text="",t.raws.left=r,t.raws.right="";else{var n=r.match(/^(\s*)([^]*\S)(\s*)$/);t.text=n[2],t.raws.left=n[1],t.raws.right=n[3]}},t.createTokenizer=function(){this.tokenizer=function(e,t){void 0===t&&(t={});var r,n,i,o,s,a,c,l,u,p,h=e.css.valueOf(),d=t.ignoreErrors,f=h.length,g=0,m=[],v=[];function y(t){throw e.error("Unclosed "+t,g)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&g>=f},nextToken:function(e){if(v.length)return v.pop();if(!(g>=f)){var t=!!e&&e.ignoreUnclosed;switch(r=h.charCodeAt(g)){case tr:case rr:case ir:case or:case nr:n=g;do{n+=1,r=h.charCodeAt(n)}while(r===rr||r===tr||r===ir||r===or||r===nr);p=["space",h.slice(g,n)],g=n-1;break;case sr:case ar:case ur:case pr:case fr:case hr:case lr:var b=String.fromCharCode(r);p=[b,b,g];break;case cr:if(l=m.length?m.pop()[1]:"",u=h.charCodeAt(g+1),"url"===l&&u!==Zt&&u!==Xt&&u!==rr&&u!==tr&&u!==ir&&u!==nr&&u!==or){n=g;do{if(a=!1,-1===(n=h.indexOf(")",n+1))){if(d||t){n=g;break}y("bracket")}for(c=n;h.charCodeAt(c-1)===Qt;)c-=1,a=!a}while(a);p=["brackets",h.slice(g,n+1),g,n],g=n}else n=h.indexOf(")",g+1),o=h.slice(g,n+1),-1===n||yr.test(o)?p=["(","(",g]:(p=["brackets",o,g,n],g=n);break;case Zt:case Xt:i=r===Zt?"'":'"',n=g;do{if(a=!1,-1===(n=h.indexOf(i,n+1))){if(d||t){n=g+1;break}y("string")}for(c=n;h.charCodeAt(c-1)===Qt;)c-=1,a=!a}while(a);p=["string",h.slice(g,n+1),g,n],g=n;break;case gr:mr.lastIndex=g+1,mr.test(h),n=0===mr.lastIndex?h.length-1:mr.lastIndex-2,p=["at-word",h.slice(g,n+1),g,n],g=n;break;case Qt:for(n=g,s=!0;h.charCodeAt(n+1)===Qt;)n+=1,s=!s;if(r=h.charCodeAt(n+1),s&&r!==er&&r!==rr&&r!==tr&&r!==ir&&r!==or&&r!==nr&&(n+=1,br.test(h.charAt(n)))){for(;br.test(h.charAt(n+1));)n+=1;h.charCodeAt(n+1)===rr&&(n+=1)}p=["word",h.slice(g,n+1),g,n],g=n;break;default:r===er&&h.charCodeAt(g+1)===dr?(0===(n=h.indexOf("*/",g+2)+1)&&(d||t?n=h.length:y("comment")),p=["comment",h.slice(g,n+1),g,n],g=n):(vr.lastIndex=g+1,vr.test(h),n=0===vr.lastIndex?h.length-1:vr.lastIndex-2,p=["word",h.slice(g,n+1),g,n],m.push(p),g=n)}return g++,p}},position:function(){return g}}}(this.input)},t.decl=function(e,t){var r=new Pr;this.init(r,e[0][2]);var n,i=e[e.length-1];for(";"===i[0]&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(i[3]||i[2]||function(e){for(var t=e.length-1;t>=0;t--){var r=e[t],n=r[3]||r[2];if(n)return n}}(e)),r.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop="";e.length;){var o=e[0][0];if(":"===o||"space"===o||"comment"===o)break;r.prop+=e.shift()[1]}for(r.raws.between="";e.length;){if(":"===(n=e.shift())[0]){r.raws.between+=n[1];break}"word"===n[0]&&/\w/.test(n[1])&&this.unknownWord([n]),r.raws.between+=n[1]}"_"!==r.prop[0]&&"*"!==r.prop[0]||(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));for(var s,a=[];e.length&&("space"===(s=e[0][0])||"comment"===s);)a.push(e.shift());this.precheckMissedSemicolon(e);for(var c=e.length-1;c>=0;c--){if("!important"===(n=e[c])[1].toLowerCase()){r.important=!0;var l=this.stringFrom(e,c);" !important"!==(l=this.spacesFromEnd(e)+l)&&(r.raws.important=l);break}if("important"===n[1].toLowerCase()){for(var u=e.slice(0),p="",h=c;h>0;h--){var d=u[h][0];if(0===p.trim().indexOf("!")&&"space"!==d)break;p=u.pop()[1]+p}0===p.trim().indexOf("!")&&(r.important=!0,r.raws.important=p,e=u)}if("space"!==n[0]&&"comment"!==n[0])break}var f=e.some(function(e){return"space"!==e[0]&&"comment"!==e[0]});f&&(r.raws.between+=a.map(function(e){return e[1]}).join(""),a=[]),this.raw(r,"value",a.concat(e),t),r.value.includes(":")&&!t&&this.checkMissedSemicolon(e)},t.doubleColon=function(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})},t.emptyRule=function(e){var t=new Ur;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t},t.end=function(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)},t.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())},t.freeSemicolon=function(e){if(this.spaces+=e[1],this.current.nodes){var t=this.current.nodes[this.current.nodes.length-1];t&&"rule"===t.type&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}},t.getPosition=function(e){var t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}},t.init=function(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)},t.other=function(e){for(var t=!1,r=null,n=!1,i=null,o=[],s=e[1].startsWith("--"),a=[],c=e;c;){if(r=c[0],a.push(c),"("===r||"["===r)i||(i=c),o.push("("===r?")":"]");else if(s&&n&&"{"===r)i||(i=c),o.push("}");else if(0===o.length){if(";"===r){if(n)return void this.decl(a,s);break}if("{"===r)return void this.rule(a);if("}"===r){this.tokenizer.back(a.pop()),t=!0;break}":"===r&&(n=!0)}else r===o[o.length-1]&&(o.pop(),0===o.length&&(i=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),o.length>0&&this.unclosedBracket(i),t&&n){if(!s)for(;a.length&&("space"===(c=a[a.length-1][0])||"comment"===c);)this.tokenizer.back(a.pop());this.decl(a,s)}else this.unknownWord(a)},t.parse=function(){for(var e;!this.tokenizer.endOfFile();)switch((e=this.tokenizer.nextToken())[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()},t.precheckMissedSemicolon=function(){},t.raw=function(e,t,r,n){for(var i,o,s,a,c=r.length,l="",u=!0,p=0;p0},t.runAsync=function(){var e=this;return a(function(){var t,r,n,i,o,s,a,c,l,u,p,h;return _(this,function(d){switch(d.label){case 0:e.plugin=0,t=0,d.label=1;case 1:if(!(t0))return[3,13];if(!on(a=e.visitTick(s)))return[3,12];d.label=9;case 9:return d.trys.push([9,11,,12]),[4,a];case 10:return d.sent(),[3,12];case 11:throw c=d.sent(),l=s[s.length-1].node,e.handleError(c,l);case 12:return[3,8];case 13:return[3,7];case 14:if(!e.listeners.OnceExit)return[3,18];u=function(){var t,r,n,i,s;return _(this,function(a){switch(a.label){case 0:t=h.value,r=t[0],n=t[1],e.result.lastPlugin=r,a.label=1;case 1:return a.trys.push([1,6,,7]),"document"!==o.type?[3,3]:(i=o.nodes.map(function(t){return n(t,e.helpers)}),[4,Promise.all(i)]);case 2:return a.sent(),[3,5];case 3:return[4,n(o,e.helpers)];case 4:a.sent(),a.label=5;case 5:return[3,7];case 6:throw s=a.sent(),e.handleError(s);case 7:return[2]}})},p=b(e.listeners.OnceExit),d.label=15;case 15:return(h=p()).done?[3,18]:[5,w(u())];case 16:d.sent(),d.label=17;case 17:return[3,15];case 18:return e.processed=!0,[2,e.stringify()]}})})()},t.runOnRoot=function(e){var t=this;this.result.lastPlugin=e;try{if("object"===(void 0===e?"undefined":m(e))&&e.Once){if("document"===this.result.root.type){var r=this.result.root.nodes.map(function(r){return e.Once(r,t.helpers)});return on(r[0])?Promise.all(r):r}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(e){throw this.handleError(e)}},t.stringify=function(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=Jr;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var r=new Kr(t,this.result.root,this.result.opts).generate();return this.result.css=r[0],this.result.map=r[1],this.result},t.sync=function(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(var e,t=b(this.plugins);!(e=t()).done;){var r=e.value;if(on(this.runOnRoot(r)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){for(var n=this.result.root;!n[Hr];)n[Hr]=!0,this.walkSync(n);if(this.listeners.OnceExit)if("document"===n.type)for(var i,o=b(n.nodes);!(i=o()).done;){var s=i.value;this.visitSync(this.listeners.OnceExit,s)}else this.visitSync(this.listeners.OnceExit,n)}return this.result},t.then=function(e,t){return this.async().then(e,t)},t.toString=function(){return this.css},t.visitSync=function(e,t){for(var r,n=b(e);!(r=n()).done;){var i=r.value,o=i[0],s=i[1];this.result.lastPlugin=o;var a=void 0;try{a=s(t,this.helpers)}catch(e){throw this.handleError(e,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(on(a))throw this.getAsyncError()}},t.visitTick=function(e){var t=e[e.length-1],r=t.node,n=t.visitors;if("root"===r.type||"document"===r.type||r.parent){if(n.length>0&&t.visitorIndex",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},r.showSourceCode=function(e){var t=this;if(!this.source)return"";var r=this.source;null==e&&(e=ui.isColorSupported),pi&&e&&(r=pi(r));var n,i,o=r.split(/\r?\n/),s=Math.max(this.line-3,0),a=Math.min(this.line+2,o.length),c=String(a).length;if(e){var l=ui.createColors(!0),u=l.bold,p=l.gray,h=l.red;n=function(e){return u(h(e))},i=function(e){return p(e)}}else n=i=function(e){return e};return o.slice(s,a).map(function(e,r){var o=s+1+r,a=" "+(" "+o).slice(-c)+" | ";if(o===t.line){var l=i(a.replace(/\d/g," "))+e.slice(0,t.column-1).replace(/[^\t]/g," ");return n(">")+i(a)+e+"\n "+l+n("^")}return" "+i(a)+e}).join("\n")},r.toString=function(){var e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e},t}(v(Error)),di=hi;hi.default=hi;var fi={};fi.isClean=Symbol("isClean"),fi.my=Symbol("my");var gi={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1},mi=function(){function e(e){this.builder=e}var t=e.prototype;return t.atrule=function(e,t){var r="@"+e.name,n=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?r+=e.raws.afterName:n&&(r+=" "),e.nodes)this.block(e,r+n);else{var i=(e.raws.between||"")+(t?";":"");this.builder(r+n+i,e)}},t.beforeAfter=function(e,t){var r;r="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");for(var n=e.parent,i=0;n&&"root"!==n.type;)i+=1,n=n.parent;if(r.includes("\n")){var o=this.raw(e,null,"indent");if(o.length)for(var s=0;s0&&"comment"===e.nodes[t].type;)t-=1;for(var r=this.raw(e,"semicolon"),n=0;n0&&void 0!==e.raws.after)return(t=e.raws.after).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawBeforeComment=function(e,t){var r;return e.walkComments(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeDecl=function(e,t){var r;return e.walkDecls(function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1}),void 0===r?r=this.raw(t,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r},t.rawBeforeOpen=function(e){var t;return e.walk(function(e){if("decl"!==e.type&&void 0!==(t=e.raws.between))return!1}),t},t.rawBeforeRule=function(e){var t;return e.walk(function(r){if(r.nodes&&(r.parent!==e||e.first!==r)&&void 0!==r.raws.before)return(t=r.raws.before).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t},t.rawColon=function(e){var t;return e.walkDecls(function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1}),t},t.rawEmptyBody=function(e){var t;return e.walk(function(e){if(e.nodes&&0===e.nodes.length&&void 0!==(t=e.raws.after))return!1}),t},t.rawIndent=function(e){return e.raws.indent?e.raws.indent:(e.walk(function(r){var n=r.parent;if(n&&n!==e&&n.parent&&n.parent===e&&void 0!==r.raws.before){var i=r.raws.before.split("\n");return t=(t=i[i.length-1]).replace(/\S/g,""),!1}}),t);var t},t.rawSemicolon=function(e){var t;return e.walk(function(e){if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&void 0!==(t=e.raws.semicolon))return!1}),t},t.rawValue=function(e,t){var r=e[t],n=e.raws[t];return n&&n.value===r?n.raw:r},t.root=function(e){this.body(e),e.raws.after&&this.builder(e.raws.after)},t.rule=function(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")},t.stringify=function(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)},e}(),vi=mi;mi.default=mi;var yi=vi;function bi(e,t){new yi(t).stringify(e)}var _i=bi;bi.default=bi;var wi=fi.isClean,ki=fi.my,Si=di,xi=vi,Ci=_i;function Ei(e,t){var r=new e.constructor;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&"proxyCache"!==n){var i=e[n],o=void 0===i?"undefined":m(i);"parent"===n&&"object"===o?t&&(r[n]=t):"source"===n?r[n]=i:Array.isArray(i)?r[n]=i.map(function(e){return Ei(e,r)}):("object"===o&&null!==i&&(i=Ei(i)),r[n]=i)}return r}var Ii=function(){function e(e){for(var t in void 0===e&&(e={}),this.raws={},this[wi]=!1,this[ki]=!0,e)if("nodes"===t){this.nodes=[];for(var r,n=b(e[t]);!(r=n()).done;){var i=r.value;"function"==typeof i.clone?this.append(i.clone()):this.append(i)}}else this[t]=e[t]}var t=e.prototype;return t.addToError=function(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){var t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,"$&"+t.input.from+":"+t.start.line+":"+t.start.column+"$&")}return e},t.after=function(e){return this.parent.insertAfter(this,e),this},t.assign=function(e){for(var t in void 0===e&&(e={}),e)this[t]=e[t];return this},t.before=function(e){return this.parent.insertBefore(this,e),this},t.cleanRaws=function(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between},t.clone=function(e){void 0===e&&(e={});var t=Ei(this);for(var r in e)t[r]=e[r];return t},t.cloneAfter=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertAfter(this,t),t},t.cloneBefore=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertBefore(this,t),t},t.error=function(e,t){if(void 0===t&&(t={}),this.source){var r=this.rangeBy(t),n=r.end,i=r.start;return this.source.input.error(e,{column:i.column,line:i.line},{column:n.column,line:n.line},t)}return new Si(e)},t.getProxyProcessor=function(){return{get:function(e,t){return"proxyOf"===t?e:"root"===t?function(){return e.root().toProxy()}:e[t]},set:function(e,t,r){return e[t]===r||(e[t]=r,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0}}},t.markDirty=function(){if(this[wi]){this[wi]=!1;for(var e=this;e=e.parent;)e[wi]=!1}},t.next=function(){if(this.parent){var e=this.parent.index(this);return this.parent.nodes[e+1]}},t.positionBy=function(e,t){var r=this.source.start;if(e.index)r=this.positionInside(e.index,t);else if(e.word){var n=(t=this.toString()).indexOf(e.word);-1!==n&&(r=this.positionInside(n,t))}return r},t.positionInside=function(e,t){for(var r=t||this.toString(),n=this.source.start.column,i=this.source.start.line,o=0;o-1&&n>-1&&(this.annotation=this.getAnnotationURL(e.substring(r,n)))}},t.loadFile=function(e){if(this.root=Li(e),Ti(e))return this.mapFile=e,Pi(e,"utf-8").toString().trim()},t.loadMap=function(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(d(t,Ri))return Mi.fromSourceMap(t).toString();if(d(t,Mi))return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}var r=t(e);if(r){var n=this.loadFile(r);if(!n)throw new Error("Unable to load previous source map: "+r.toString());return n}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var i=this.annotation;return e&&(i=Di(Li(e),i)),this.loadFile(i)}}},t.startWith=function(e,t){return!!e&&e.substr(0,t.length)===t},t.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},e}(),Ui=Fi;Fi.default=Fi;var ji=li.SourceMapConsumer,Bi=li.SourceMapGenerator,$i=li.fileURLToPath,zi=li.pathToFileURL,qi=li.isAbsolute,Vi=li.resolve,Wi=function(e){void 0===e&&(e=21);for(var t="",r=e;r--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},Hi=li,Gi=di,Ki=Ui,Ji=Symbol("fromOffsetCache"),Yi=Boolean(ji&&Bi),Zi=Boolean(Vi&&qi),Xi=function(){function e(e,t){if(void 0===t&&(t={}),null==e||"object"===(void 0===e?"undefined":m(e))&&!e.toString)throw new Error("PostCSS received "+e+" instead of CSS string");if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Zi||/^\w+:\/\//.test(t.from)||qi(t.from)?this.file=t.from:this.file=Vi(t.from)),Zi&&Yi){var r=new Ki(this.css,t);if(r.text){this.map=r;var n=r.consumer().file;!this.file&&n&&(this.file=this.mapResolve(n))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}var t=e.prototype;return t.error=function(e,t,r,n){var i,o,s;if(void 0===n&&(n={}),t&&"object"===(void 0===t?"undefined":m(t))){var a=t,c=r;if("number"==typeof a.offset){var l=this.fromOffset(a.offset);t=l.line,r=l.col}else t=a.line,r=a.column;if("number"==typeof c.offset){var u=this.fromOffset(c.offset);o=u.line,s=u.col}else o=c.line,s=c.column}else if(!r){var p=this.fromOffset(t);t=p.line,r=p.col}var h=this.origin(t,r,o,s);return(i=h?new Gi(e,void 0===h.endLine?h.line:{column:h.column,line:h.line},void 0===h.endLine?h.column:{column:h.endColumn,line:h.endLine},h.source,h.file,n.plugin):new Gi(e,void 0===o?t:{column:r,line:t},void 0===o?r:{column:s,line:o},this.css,this.file,n.plugin)).input={column:r,endColumn:s,endLine:o,line:t,source:this.css},this.file&&(zi&&(i.input.url=zi(this.file).toString()),i.input.file=this.file),i},t.fromOffset=function(e){var t;if(this[Ji])t=this[Ji];else{var r=this.css.split("\n");t=new Array(r.length);for(var n=0,i=0,o=r.length;i=t[t.length-1])s=t.length-1;else for(var a,c=t.length-2;s>1)])c=a-1;else{if(!(e>=t[a+1])){s=a;break}s=a+1}return{col:e-t[s]+1,line:s+1}},t.mapResolve=function(e){return/^\w+:\/\//.test(e)?e:Vi(this.map.consumer().sourceRoot||this.map.root||".",e)},t.origin=function(e,t,r,n){if(!this.map)return!1;var i,o,s=this.map.consumer(),a=s.originalPositionFor({column:t,line:e});if(!a.source)return!1;"number"==typeof r&&(i=s.originalPositionFor({column:n,line:r})),o=qi(a.source)?zi(a.source):new URL(a.source,this.map.consumer().sourceRoot||zi(this.map.mapFile));var c={column:a.column,endColumn:i&&i.column,endLine:i&&i.line,line:a.line,url:o.toString()};if("file:"===o.protocol){if(!$i)throw new Error("file: protocol is not available in this PostCSS build");c.file=$i(o)}var l=s.sourceContentFor(a.source);return l&&(c.source=l),c},t.toJSON=function(){for(var e={},t=0,r=["hasBOM","css","file","id"];t=0;t--)"comment"===(e=this.root.nodes[t]).type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t);else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))},t.generate=function(){if(this.clearAnnotation(),lo&&co&&this.isMap())return this.generateMap();var e="";return this.stringify(this.root,function(t){e+=t}),[e]},t.generateMap=function(){if(this.root)this.generateString();else if(1===this.previous().length){var e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=to.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new to({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},t.generateString=function(){var e=this;this.css="",this.map=new to({file:this.outputFile(),ignoreInvalidMapping:!0});var t,r,n=1,i=1,o="",s={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,function(a,c,l){if(e.css+=a,c&&"end"!==l&&(s.generated.line=n,s.generated.column=i-1,c.source&&c.source.start?(s.source=e.sourcePath(c),s.original.line=c.source.start.line,s.original.column=c.source.start.column-1,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,e.map.addMapping(s))),(t=a.match(/\n/g))?(n+=t.length,r=a.lastIndexOf("\n"),i=a.length-r):i+=a.length,c&&"start"!==l){var u=c.parent||{raws:{}};("decl"===c.type||"atrule"===c.type&&!c.nodes)&&c===u.last&&!u.raws.semicolon||(c.source&&c.source.end?(s.source=e.sourcePath(c),s.original.line=c.source.end.line,s.original.column=c.source.end.column-1,s.generated.line=n,s.generated.column=i-2,e.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,s.generated.line=n,s.generated.column=i-1,e.map.addMapping(s)))}})},t.isAnnotation=function(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some(function(e){return e.annotation}))},t.isInline=function(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;var e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some(function(e){return e.inline}))},t.isMap=function(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0},t.isSourcesContent=function(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some(function(e){return e.withContent()})},t.outputFile=function(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"},t.path=function(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;var t=this.memoizedPaths.get(e);if(t)return t;var r=this.opts.to?ro(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(r=ro(io(r,this.mapOpts.annotation)));var n=no(r,e);return this.memoizedPaths.set(e,n),n},t.previous=function(){var e=this;if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(function(t){if(t.source&&t.source.input.map){var r=t.source.input.map;e.previousMaps.includes(r)||e.previousMaps.push(r)}});else{var t=new ao(this.originalCSS,this.opts);t.map&&this.previousMaps.push(t.map)}return this.previousMaps},t.setSourcesContent=function(){var e=this,t={};if(this.root)this.root.walk(function(r){if(r.source){var n=r.source.input.from;if(n&&!t[n]){t[n]=!0;var i=e.usesFileUrls?e.toFileUrl(n):e.toUrl(e.path(n));e.map.setSourceContent(i,r.source.input.css)}}});else if(this.css){var r=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(r,this.css)}},t.sourcePath=function(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))},t.toBase64=function(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))},t.toFileUrl=function(e){var t=this.memoizedFileURLs.get(e);if(t)return t;if(so){var r=so(e).toString();return this.memoizedFileURLs.set(e,r),r}throw new Error("`map.absolute` option is not available in this PostCSS build")},t.toUrl=function(e){var t=this.memoizedURLs.get(e);if(t)return t;"\\"===oo&&(e=e.replace(/\\/g,"/"));var r=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,r),r},e}(),po=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="comment",r}return h(t,e),t}(Oi),ho=po;po.default=po;var fo,go,mo,vo,yo=fi.isClean,bo=fi.my,_o=Ai,wo=ho;function ko(e){return e.map(function(e){return e.nodes&&(e.nodes=ko(e.nodes)),delete e.source,e})}function So(e){if(e[yo]=!1,e.proxyOf.nodes)for(var t,r=b(e.proxyOf.nodes);!(t=r()).done;)So(t.value)}var xo=function(e){function t(){return e.apply(this,arguments)||this}h(t,e);var r=t.prototype;return r.append=function(){for(var e=arguments.length,t=new Array(e),r=0;r1?t-1:0),i=1;i=e&&(this.indexes[r]=t-1);return this.markDirty(),this},r.replaceValues=function(e,t,r){return r||(r=t,t={}),this.walkDecls(function(n){t.props&&!t.props.includes(n.prop)||t.fast&&!n.value.includes(t.fast)||(n.value=n.value.replace(e,r))}),this.markDirty(),this},r.some=function(e){return this.nodes.some(e)},r.walk=function(e){return this.each(function(t,r){var n;try{n=e(t,r)}catch(e){throw t.addToError(e)}return!1!==n&&t.walk&&(n=t.walk(e)),n})},r.walkAtRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("atrule"===r.type&&e.test(r.name))return t(r,n)}):this.walk(function(r,n){if("atrule"===r.type&&r.name===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("atrule"===e.type)return t(e,r)}))},r.walkComments=function(e){return this.walk(function(t,r){if("comment"===t.type)return e(t,r)})},r.walkDecls=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("decl"===r.type&&e.test(r.prop))return t(r,n)}):this.walk(function(r,n){if("decl"===r.type&&r.prop===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("decl"===e.type)return t(e,r)}))},r.walkRules=function(e,t){return t?d(e,RegExp)?this.walk(function(r,n){if("rule"===r.type&&e.test(r.selector))return t(r,n)}):this.walk(function(r,n){if("rule"===r.type&&r.selector===e)return t(r,n)}):(t=e,this.walk(function(e,r){if("rule"===e.type)return t(e,r)}))},l(t,[{key:"first",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}},{key:"last",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}]),t}(Oi);xo.registerParse=function(e){fo=e},xo.registerRule=function(e){go=e},xo.registerAtRule=function(e){mo=e},xo.registerRoot=function(e){vo=e};var Co=xo;xo.default=xo,xo.rebuild=function(e){"atrule"===e.type?Object.setPrototypeOf(e,mo.prototype):"rule"===e.type?Object.setPrototypeOf(e,go.prototype):"decl"===e.type?Object.setPrototypeOf(e,_o.prototype):"comment"===e.type?Object.setPrototypeOf(e,wo.prototype):"root"===e.type&&Object.setPrototypeOf(e,vo.prototype),e[bo]=!0,e.nodes&&e.nodes.forEach(function(e){xo.rebuild(e)})};var Eo,Io,Oo=function(e){function t(t){var r;return(r=e.call(this,u({type:"document"},t))||this).nodes||(r.nodes=[]),r}return h(t,e),t.prototype.toResult=function(e){return void 0===e&&(e={}),new Eo(new Io,this,e).stringify()},t}(Co);Oo.registerLazyResult=function(e){Eo=e},Oo.registerProcessor=function(e){Io=e};var No=Oo;Oo.default=Oo;var Ao=function(){function e(e,t){if(void 0===t&&(t={}),this.type="warning",this.text=e,t.node&&t.node.source){var r=t.node.rangeBy(t);this.line=r.start.line,this.column=r.start.column,this.endLine=r.end.line,this.endColumn=r.end.column}for(var n in t)this[n]=t[n]}return e.prototype.toString=function(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},e}(),Ro=Ao;Ao.default=Ao;var Mo=Ro,To=function(){function e(e,t,r){this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}var t=e.prototype;return t.toString=function(){return this.css},t.warn=function(e,t){void 0===t&&(t={}),t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);var r=new Mo(e,t);return this.messages.push(r),r},t.warnings=function(){return this.messages.filter(function(e){return"warning"===e.type})},l(e,[{key:"content",get:function(){return this.css}}]),e}(),Po=To;To.default=To;var Lo="'".charCodeAt(0),Do='"'.charCodeAt(0),Fo="\\".charCodeAt(0),Uo="/".charCodeAt(0),jo="\n".charCodeAt(0),Bo=" ".charCodeAt(0),$o="\f".charCodeAt(0),zo="\t".charCodeAt(0),qo="\r".charCodeAt(0),Vo="[".charCodeAt(0),Wo="]".charCodeAt(0),Ho="(".charCodeAt(0),Go=")".charCodeAt(0),Ko="{".charCodeAt(0),Jo="}".charCodeAt(0),Yo=";".charCodeAt(0),Zo="*".charCodeAt(0),Xo=":".charCodeAt(0),Qo="@".charCodeAt(0),es=/[\t\n\f\r "#'()/;[\\\]{}]/g,ts=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,rs=/.[\r\n"'(/\\]/,ns=/[\da-f]/i,is=Co,os=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="atrule",r}h(t,e);var r=t.prototype;return r.append=function(){for(var t=arguments.length,r=new Array(t),n=0;n1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before;else if(this.first!==r)for(var o,s=b(i);!(o=s()).done;)o.value.raws.before=r.raws.before;return i},r.removeChild=function(t,r){var n=this.index(t);return!r&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),e.prototype.removeChild.call(this,t)},r.toResult=function(e){return void 0===e&&(e={}),new as(new cs,this,e).stringify()},t}(ls);us.registerLazyResult=function(e){as=e},us.registerProcessor=function(e){cs=e};var ps=us;us.default=us,ls.registerRoot(us);var hs={comma:function(e){return hs.split(e,[","],!0)},space:function(e){return hs.split(e,[" ","\n","\t"])},split:function(e,t,r){for(var n,i=[],o="",s=!1,a=0,c=!1,l="",u=!1,p=b(e);!(n=p()).done;){var h=n.value;u?u=!1:"\\"===h?u=!0:c?h===l&&(c=!1):'"'===h||"'"===h?(c=!0,l=h):"("===h?a+=1:")"===h?a>0&&(a-=1):0===a&&t.includes(h)&&(s=!0),s?(""!==o&&i.push(o.trim()),o="",s=!1):o+=h}return(r||""!==o)&&i.push(o.trim()),i}},ds=hs;hs.default=hs;var fs=Co,gs=ds,ms=function(e){function t(t){var r;return(r=e.call(this,t)||this).type="rule",r.nodes||(r.nodes=[]),r}return h(t,e),l(t,[{key:"selectors",get:function(){return gs.comma(this.selector)},set:function(e){var t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}}]),t}(fs),vs=ms;ms.default=ms,fs.registerRule(ms);var ys=Ai,bs=ho,_s=ss,ws=ps,ks=vs,Ss={empty:!0,space:!0},xs=function(){function e(e){this.input=e,this.root=new ws,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}var t=e.prototype;return t.atrule=function(e){var t,r,n,i=new _s;i.name=e[1].slice(1),""===i.name&&this.unnamedAtrule(i,e),this.init(i,e[2]);for(var o=!1,s=!1,a=[],c=[];!this.tokenizer.endOfFile();){if("("===(t=(e=this.tokenizer.nextToken())[0])||"["===t?c.push("("===t?")":"]"):"{"===t&&c.length>0?c.push("}"):t===c[c.length-1]&&c.pop(),0===c.length){if(";"===t){i.source.end=this.getPosition(e[2]),i.source.end.offset++,this.semicolon=!0;break}if("{"===t){s=!0;break}if("}"===t){if(a.length>0){for(r=a[n=a.length-1];r&&"space"===r[0];)r=a[--n];r&&(i.source.end=this.getPosition(r[3]||r[2]),i.source.end.offset++)}this.end(e);break}a.push(e)}else a.push(e);if(this.tokenizer.endOfFile()){o=!0;break}}i.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(i.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(i,"params",a),o&&(e=a[a.length-1],i.source.end=this.getPosition(e[3]||e[2]),i.source.end.offset++,this.spaces=i.raws.between,i.raws.between="")):(i.raws.afterName="",i.params=""),s&&(i.nodes=[],this.current=i)},t.checkMissedSemicolon=function(e){var t=this.colon(e);if(!1!==t){for(var r,n=0,i=t-1;i>=0&&("space"===(r=e[i])[0]||2!==(n+=1));i--);throw this.input.error("Missed semicolon","word"===r[0]?r[3]+1:r[2])}},t.colon=function(e){for(var t,r,n,i,o=0,s=b(e.entries());!(i=s()).done;){var a=i.value,c=a[0];if("("===(r=(t=a[1])[0])&&(o+=1),")"===r&&(o-=1),0===o&&":"===r){if(n){if("word"===n[0]&&"progid"===n[1])continue;return c}this.doubleColon(t)}n=t}return!1},t.comment=function(e){var t=new bs;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;var r=e[1].slice(2,-2);if(/^\s*$/.test(r))t.text="",t.raws.left=r,t.raws.right="";else{var n=r.match(/^(\s*)([^]*\S)(\s*)$/);t.text=n[2],t.raws.left=n[1],t.raws.right=n[3]}},t.createTokenizer=function(){this.tokenizer=function(e,t){void 0===t&&(t={});var r,n,i,o,s,a,c,l,u,p,h=e.css.valueOf(),d=t.ignoreErrors,f=h.length,g=0,m=[],v=[];function y(t){throw e.error("Unclosed "+t,g)}return{back:function(e){v.push(e)},endOfFile:function(){return 0===v.length&&g>=f},nextToken:function(e){if(v.length)return v.pop();if(!(g>=f)){var t=!!e&&e.ignoreUnclosed;switch(r=h.charCodeAt(g)){case jo:case Bo:case zo:case qo:case $o:n=g;do{n+=1,r=h.charCodeAt(n)}while(r===Bo||r===jo||r===zo||r===qo||r===$o);p=["space",h.slice(g,n)],g=n-1;break;case Vo:case Wo:case Ko:case Jo:case Xo:case Yo:case Go:var b=String.fromCharCode(r);p=[b,b,g];break;case Ho:if(l=m.length?m.pop()[1]:"",u=h.charCodeAt(g+1),"url"===l&&u!==Lo&&u!==Do&&u!==Bo&&u!==jo&&u!==zo&&u!==$o&&u!==qo){n=g;do{if(a=!1,-1===(n=h.indexOf(")",n+1))){if(d||t){n=g;break}y("bracket")}for(c=n;h.charCodeAt(c-1)===Fo;)c-=1,a=!a}while(a);p=["brackets",h.slice(g,n+1),g,n],g=n}else n=h.indexOf(")",g+1),o=h.slice(g,n+1),-1===n||rs.test(o)?p=["(","(",g]:(p=["brackets",o,g,n],g=n);break;case Lo:case Do:i=r===Lo?"'":'"',n=g;do{if(a=!1,-1===(n=h.indexOf(i,n+1))){if(d||t){n=g+1;break}y("string")}for(c=n;h.charCodeAt(c-1)===Fo;)c-=1,a=!a}while(a);p=["string",h.slice(g,n+1),g,n],g=n;break;case Qo:es.lastIndex=g+1,es.test(h),n=0===es.lastIndex?h.length-1:es.lastIndex-2,p=["at-word",h.slice(g,n+1),g,n],g=n;break;case Fo:for(n=g,s=!0;h.charCodeAt(n+1)===Fo;)n+=1,s=!s;if(r=h.charCodeAt(n+1),s&&r!==Uo&&r!==Bo&&r!==jo&&r!==zo&&r!==qo&&r!==$o&&(n+=1,ns.test(h.charAt(n)))){for(;ns.test(h.charAt(n+1));)n+=1;h.charCodeAt(n+1)===Bo&&(n+=1)}p=["word",h.slice(g,n+1),g,n],g=n;break;default:r===Uo&&h.charCodeAt(g+1)===Zo?(0===(n=h.indexOf("*/",g+2)+1)&&(d||t?n=h.length:y("comment")),p=["comment",h.slice(g,n+1),g,n],g=n):(ts.lastIndex=g+1,ts.test(h),n=0===ts.lastIndex?h.length-1:ts.lastIndex-2,p=["word",h.slice(g,n+1),g,n],m.push(p),g=n)}return g++,p}},position:function(){return g}}}(this.input)},t.decl=function(e,t){var r=new ys;this.init(r,e[0][2]);var n,i=e[e.length-1];for(";"===i[0]&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(i[3]||i[2]||function(e){for(var t=e.length-1;t>=0;t--){var r=e[t],n=r[3]||r[2];if(n)return n}}(e)),r.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop="";e.length;){var o=e[0][0];if(":"===o||"space"===o||"comment"===o)break;r.prop+=e.shift()[1]}for(r.raws.between="";e.length;){if(":"===(n=e.shift())[0]){r.raws.between+=n[1];break}"word"===n[0]&&/\w/.test(n[1])&&this.unknownWord([n]),r.raws.between+=n[1]}"_"!==r.prop[0]&&"*"!==r.prop[0]||(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));for(var s,a=[];e.length&&("space"===(s=e[0][0])||"comment"===s);)a.push(e.shift());this.precheckMissedSemicolon(e);for(var c=e.length-1;c>=0;c--){if("!important"===(n=e[c])[1].toLowerCase()){r.important=!0;var l=this.stringFrom(e,c);" !important"!==(l=this.spacesFromEnd(e)+l)&&(r.raws.important=l);break}if("important"===n[1].toLowerCase()){for(var u=e.slice(0),p="",h=c;h>0;h--){var d=u[h][0];if(0===p.trim().indexOf("!")&&"space"!==d)break;p=u.pop()[1]+p}0===p.trim().indexOf("!")&&(r.important=!0,r.raws.important=p,e=u)}if("space"!==n[0]&&"comment"!==n[0])break}var f=e.some(function(e){return"space"!==e[0]&&"comment"!==e[0]});f&&(r.raws.between+=a.map(function(e){return e[1]}).join(""),a=[]),this.raw(r,"value",a.concat(e),t),r.value.includes(":")&&!t&&this.checkMissedSemicolon(e)},t.doubleColon=function(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})},t.emptyRule=function(e){var t=new ks;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t},t.end=function(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)},t.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())},t.freeSemicolon=function(e){if(this.spaces+=e[1],this.current.nodes){var t=this.current.nodes[this.current.nodes.length-1];t&&"rule"===t.type&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}},t.getPosition=function(e){var t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}},t.init=function(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)},t.other=function(e){for(var t=!1,r=null,n=!1,i=null,o=[],s=e[1].startsWith("--"),a=[],c=e;c;){if(r=c[0],a.push(c),"("===r||"["===r)i||(i=c),o.push("("===r?")":"]");else if(s&&n&&"{"===r)i||(i=c),o.push("}");else if(0===o.length){if(";"===r){if(n)return void this.decl(a,s);break}if("{"===r)return void this.rule(a);if("}"===r){this.tokenizer.back(a.pop()),t=!0;break}":"===r&&(n=!0)}else r===o[o.length-1]&&(o.pop(),0===o.length&&(i=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),o.length>0&&this.unclosedBracket(i),t&&n){if(!s)for(;a.length&&("space"===(c=a[a.length-1][0])||"comment"===c);)this.tokenizer.back(a.pop());this.decl(a,s)}else this.unknownWord(a)},t.parse=function(){for(var e;!this.tokenizer.endOfFile();)switch((e=this.tokenizer.nextToken())[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()},t.precheckMissedSemicolon=function(){},t.raw=function(e,t,r,n){for(var i,o,s,a,c=r.length,l="",u=!0,p=0;p0},t.runAsync=function(){var e=this;return a(function(){var t,r,n,i,o,s,a,c,l,u,p,h;return _(this,function(d){switch(d.label){case 0:e.plugin=0,t=0,d.label=1;case 1:if(!(t0))return[3,13];if(!zs(a=e.visitTick(s)))return[3,12];d.label=9;case 9:return d.trys.push([9,11,,12]),[4,a];case 10:return d.sent(),[3,12];case 11:throw c=d.sent(),l=s[s.length-1].node,e.handleError(c,l);case 12:return[3,8];case 13:return[3,7];case 14:if(!e.listeners.OnceExit)return[3,18];u=function(){var t,r,n,i,s;return _(this,function(a){switch(a.label){case 0:t=h.value,r=t[0],n=t[1],e.result.lastPlugin=r,a.label=1;case 1:return a.trys.push([1,6,,7]),"document"!==o.type?[3,3]:(i=o.nodes.map(function(t){return n(t,e.helpers)}),[4,Promise.all(i)]);case 2:return a.sent(),[3,5];case 3:return[4,n(o,e.helpers)];case 4:a.sent(),a.label=5;case 5:return[3,7];case 6:throw s=a.sent(),e.handleError(s);case 7:return[2]}})},p=b(e.listeners.OnceExit),d.label=15;case 15:return(h=p()).done?[3,18]:[5,w(u())];case 16:d.sent(),d.label=17;case 17:return[3,15];case 18:return e.processed=!0,[2,e.stringify()]}})})()},t.runOnRoot=function(e){var t=this;this.result.lastPlugin=e;try{if("object"===(void 0===e?"undefined":m(e))&&e.Once){if("document"===this.result.root.type){var r=this.result.root.nodes.map(function(r){return e.Once(r,t.helpers)});return zs(r[0])?Promise.all(r):r}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(e){throw this.handleError(e)}},t.stringify=function(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=Ts;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var r=new Ms(t,this.result.root,this.result.opts).generate();return this.result.css=r[0],this.result.map=r[1],this.result},t.sync=function(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(var e,t=b(this.plugins);!(e=t()).done;){var r=e.value;if(zs(this.runOnRoot(r)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){for(var n=this.result.root;!n[As];)n[As]=!0,this.walkSync(n);if(this.listeners.OnceExit)if("document"===n.type)for(var i,o=b(n.nodes);!(i=o()).done;){var s=i.value;this.visitSync(this.listeners.OnceExit,s)}else this.visitSync(this.listeners.OnceExit,n)}return this.result},t.then=function(e,t){return this.async().then(e,t)},t.toString=function(){return this.css},t.visitSync=function(e,t){for(var r,n=b(e);!(r=n()).done;){var i=r.value,o=i[0],s=i[1];this.result.lastPlugin=o;var a=void 0;try{a=s(t,this.helpers)}catch(e){throw this.handleError(e,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(zs(a))throw this.getAsyncError()}},t.visitTick=function(e){var t=e[e.length-1],r=t.node,n=t.visitors;if("root"===r.type||"document"===r.type||r.parent){if(n.length>0&&t.visitorIndext?(n&&(clearTimeout(n),n=null),i=c,e.apply(u,s)):n||!1===r.trailing||(n=setTimeout(function(){i=!1===r.leading?0:Date.now(),n=null,e.apply(u,s)},l))}}function sc(e,t,r,n,i){void 0===i&&(i=window);var o=i.Object.getOwnPropertyDescriptor(e,t);return i.Object.defineProperty(e,t,n?r:{set:function(e){var t=this;setTimeout(function(){r.set.call(t,e)},0),o&&o.set&&o.set.call(this,e)}}),function(){return sc(e,t,o||{},!0)}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(ic=new Proxy(ic,{get:function(e,t,r){return"map"===t&&console.error(nc),Reflect.get(e,t,r)}}));var ac=Date.now;function cc(e){var t,r,n,i,o=e.document;return{left:o.scrollingElement?o.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:o.documentElement.scrollLeft||(null==o?void 0:o.body)&&(null==(t=Ya(o.body))?void 0:t.scrollLeft)||(null==(r=null==o?void 0:o.body)?void 0:r.scrollLeft)||0,top:o.scrollingElement?o.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:(null==o?void 0:o.documentElement.scrollTop)||(null==o?void 0:o.body)&&(null==(n=Ya(o.body))?void 0:n.scrollTop)||(null==(i=null==o?void 0:o.body)?void 0:i.scrollTop)||0}}function lc(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function uc(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function pc(e){return e?e.nodeType===e.ELEMENT_NODE?e:Ya(e):null}function hc(e,t,r,n){if(!e)return!1;var i=pc(e);if(!i)return!1;try{if("string"==typeof t){if(i.classList.contains(t))return!0;if(n&&null!==i.closest("."+t))return!0}else if(ge(i,t,n))return!0}catch(e){}if(r){if(i.matches(r))return!0;if(n&&null!==i.closest(r))return!0}return!1}function dc(e,t,r){return!("TITLE"!==e.tagName||!r.headTitleMutations)||-2===t.getId(e)}function fc(e,t){if($(e))return!1;var r=t.getId(e);if(!t.has(r))return!0;var n=Ja(e);return(!n||n.nodeType!==e.DOCUMENT_NODE)&&(!n||fc(n,t))}function gc(e){return Boolean(e.changedTouches)}function mc(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function vc(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function yc(e){return!!e&&(d(e,Fa)&&"shadowRoot"in e?Boolean(e.shadowRoot):Boolean(tc(e)))}/[1-9][0-9]{12}/.test(Date.now().toString())||(ac=function(){return(new Date).getTime()});var bc=function(){function e(){x(this,"id",1),x(this,"styleIDMap",new WeakMap),x(this,"idStyleMap",new Map)}var t=e.prototype;return t.getId=function(e){var t;return null!=(t=this.styleIDMap.get(e))?t:-1},t.has=function(e){return this.styleIDMap.has(e)},t.add=function(e,t){return this.has(e)?this.getId(e):(r=void 0===t?this.id++:t,this.styleIDMap.set(e,r),this.idStyleMap.set(r,e),r);var r},t.getStyle=function(e){return this.idStyleMap.get(e)||null},t.reset=function(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1},t.generateId=function(){return this.id++},e}();function _c(e){var t,r=null;return"getRootNode"in e&&(null==(t=Qa(e))?void 0:t.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&ec(Qa(e))&&(r=ec(Qa(e))),r}function wc(e){var t=e.ownerDocument;return!!t&&(Xa(t,e)||function(e){var t=e.ownerDocument;if(!t)return!1;var r=function(e){for(var t,r=e;t=_c(r);)r=t;return r}(e);return Xa(t,r)}(e))}var kc=function(e){return e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e}(kc||{}),Sc=function(e){return e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e}(Sc||{}),xc=function(e){return e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e}(xc||{}),Cc=function(e){return e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e}(Cc||{}),Ec=function(e){return e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e}(Ec||{}),Ic=function(e){return e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e}(Ic||{}),Oc=function(e){return e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e}(Oc||{});function Nc(e){return"__ln"in e}var Ac,Rc=function(){function e(){x(this,"length",0),x(this,"head",null),x(this,"tail",null)}var t=e.prototype;return t.get=function(e){if(e>=this.length)throw new Error("Position outside of list range");for(var t=this.head,r=0;r0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))},t.handleMessage=function(e){var t=e;if("rrweb"===t.data.type&&t.origin===t.data.origin&&e.source){var r=this.crossOriginIframeMap.get(e.source);if(r){var n=this.transformCrossOriginEvent(r,t.data.event);n&&this.wrappedEmit(n,t.data.isCheckout)}}},t.transformCrossOriginEvent=function(e,t){var r,n=this;switch(t.type){case kc.FullSnapshot:this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);var i=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,i),this.patchRootIdOnNode(t.data.node,i),{timestamp:t.timestamp,type:kc.IncrementalSnapshot,data:{source:Sc.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}};case kc.Meta:case kc.Load:case kc.DomContentLoaded:return!1;case kc.Plugin:return t;case kc.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case kc.IncrementalSnapshot:switch(t.data.source){case Sc.Mutation:return t.data.adds.forEach(function(t){n.replaceIds(t,e,["parentId","nextId","previousId"]),n.replaceIdOnNode(t.node,e);var r=n.crossOriginIframeRootIdMap.get(e);r&&n.patchRootIdOnNode(t.node,r)}),t.data.removes.forEach(function(t){n.replaceIds(t,e,["parentId","id"])}),t.data.attributes.forEach(function(t){n.replaceIds(t,e,["id"])}),t.data.texts.forEach(function(t){n.replaceIds(t,e,["id"])}),t;case Sc.Drag:case Sc.TouchMove:case Sc.MouseMove:return t.data.positions.forEach(function(t){n.replaceIds(t,e,["id"])}),t;case Sc.ViewportResize:return!1;case Sc.MediaInteraction:case Sc.MouseInteraction:case Sc.Scroll:case Sc.CanvasMutation:case Sc.Input:return this.replaceIds(t.data,e,["id"]),t;case Sc.StyleSheetRule:case Sc.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case Sc.Font:return t;case Sc.Selection:return t.data.ranges.forEach(function(t){n.replaceIds(t,e,["start","end"])}),t;case Sc.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),null==(r=t.data.styles)||r.forEach(function(t){n.replaceStyleIds(t,e,["styleId"])}),t}}return!1},t.replace=function(e,t,r,n){for(var i,o=b(n);!(i=o()).done;){var s=i.value;(Array.isArray(t[s])||"number"==typeof t[s])&&(Array.isArray(t[s])?t[s]=e.getIds(r,t[s]):t[s]=e.getId(r,t[s]))}return t},t.replaceIds=function(e,t,r){return this.replace(this.crossOriginIframeMirror,e,t,r)},t.replaceStyleIds=function(e,t,r){return this.replace(this.crossOriginIframeStyleMirror,e,t,r)},t.replaceIdOnNode=function(e,t){var r=this;this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach(function(e){r.replaceIdOnNode(e,t)})},t.patchRootIdOnNode=function(e,t){var r=this;e.type===Oc.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach(function(e){r.patchRootIdOnNode(e,t)})},e}(),Qc=function(){function e(e){x(this,"shadowDoms",new WeakSet),x(this,"mutationCb"),x(this,"scrollCb"),x(this,"bypassOptions"),x(this,"mirror"),x(this,"restoreHandlers",[]),this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}var t=e.prototype;return t.init=function(){this.reset(),this.patchAttachShadow(Element,document)},t.addShadowRoot=function(e,t){var r=this;if(z(e)&&!this.shadowDoms.has(e)){this.shadowDoms.add(e);var n=$c(u({},this.bypassOptions,{doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this}),e);this.restoreHandlers.push(function(){return n.disconnect()}),this.restoreHandlers.push(zc(u({},this.bypassOptions,{scrollCb:this.scrollCb,doc:e,mirror:this.mirror}))),setTimeout(function(){e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&r.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,r.mirror.getId(ec(e))),r.restoreHandlers.push(Gc({mirror:r.mirror,stylesheetManager:r.bypassOptions.stylesheetManager},e))},0)}},t.observeAttachShadow=function(e){e.contentWindow&&e.contentDocument&&this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)},t.patchAttachShadow=function(e,t){var r=this;this.restoreHandlers.push(Ga(e.prototype,"attachShadow",function(e){return function(n){var i=e.call(this,n),o=tc(this);return o&&wc(this)&&r.addShadowRoot(o,t),i}}))},t.reset=function(){this.restoreHandlers.forEach(function(e){try{e()}catch(e){}}),this.restoreHandlers=[],this.shadowDoms=new WeakSet},e}(),el="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",tl="undefined"==typeof Uint8Array?[]:new Uint8Array(256),rl=0;rl<64;rl++)tl[el.charCodeAt(rl)]=rl;var nl=new Map,il=function(e,t,r){if(e&&(al(e,t)||"object"===(void 0===e?"undefined":m(e)))){var n=function(e,t){var r=nl.get(e);return r||(r=new Map,nl.set(e,r)),r.has(t)||r.set(t,[]),r.get(t)}(r,e.constructor.name),i=n.indexOf(e);return-1===i&&(i=n.length,n.push(e)),i}};function ol(e,t,r){return d(e,Array)?e.map(function(e){return ol(e,t,r)}):null===e?e:d(e,Float32Array)||d(e,Float64Array)||d(e,Int32Array)||d(e,Uint32Array)||d(e,Uint8Array)||d(e,Uint16Array)||d(e,Int16Array)||d(e,Int8Array)||d(e,Uint8ClampedArray)?{rr_type:e.constructor.name,args:[Object.values(e)]}:d(e,ArrayBuffer)?{rr_type:e.constructor.name,base64:function(e){var t,r=new Uint8Array(e),n=r.length,i="";for(t=0;t>2],i+=el[(3&r[t])<<4|r[t+1]>>4],i+=el[(15&r[t+1])<<2|r[t+2]>>6],i+=el[63&r[t+2]];return n%3==2?i=i.substring(0,i.length-1)+"=":n%3==1&&(i=i.substring(0,i.length-2)+"=="),i}(e)}:d(e,DataView)?{rr_type:e.constructor.name,args:[ol(e.buffer,t,r),e.byteOffset,e.byteLength]}:d(e,HTMLImageElement)?{rr_type:e.constructor.name,src:e.src}:d(e,HTMLCanvasElement)?{rr_type:"HTMLImageElement",src:e.toDataURL()}:d(e,ImageData)?{rr_type:e.constructor.name,args:[ol(e.data,t,r),e.width,e.height]}:al(e,t)||"object"===(void 0===e?"undefined":m(e))?{rr_type:e.constructor.name,index:il(e,t,r)}:e}var sl=function(e,t,r){return e.map(function(e){return ol(e,t,r)})},al=function(e,t){var r=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter(function(e){return"function"==typeof t[e]});return Boolean(r.find(function(r){return d(e,t[r])}))};function cl(e,t,r,n){var i=[];try{var o=Ga(e.HTMLCanvasElement.prototype,"getContext",function(e){return function(i){for(var o=arguments.length,s=new Array(o>1?o-1:0),a=1;a0&&(o.styles=s),this.adoptedStyleSheetCb(o)}},t.reset=function(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet},t.trackStylesheetInLinkElement=function(e){},e}(),bl=function(){function e(){x(this,"nodeMap",new WeakMap),x(this,"active",!1)}var t=e.prototype;return t.inOtherBuffer=function(e,t){var r=this.nodeMap.get(e);return r&&Array.from(r).some(function(e){return e!==t})},t.add=function(e,t){var r=this;this.active||(this.active=!0,requestAnimationFrame(function(){r.nodeMap=new WeakMap,r.active=!1})),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))},t.destroy=function(){},e}(),_l=!1;try{if(2!==Array.from([1],function(e){return 2*e})[0]){var wl=document.createElement("iframe");document.body.appendChild(wl),Array.from=(null==(k=wl.contentWindow)?void 0:k.Array.from)||Array.from,document.body.removeChild(wl)}}catch(e){console.debug("Unable to override Array.from",e)}var kl,Sl,xl=new W;function Cl(e){void 0===e&&(e={});var t=e.emit,r=e.checkoutEveryNms,n=e.checkoutEveryNth,i=e.blockClass,o=void 0===i?"rr-block":i,s=e.blockSelector,a=void 0===s?null:s,c=e.ignoreClass,l=void 0===c?"rr-ignore":c,p=e.ignoreSelector,h=void 0===p?null:p,d=e.maskTextClass,f=void 0===d?"rr-mask":d,g=e.maskTextSelector,m=void 0===g?null:g,v=e.inlineStylesheet,y=void 0===v||v,_=e.maskAllInputs,w=e.maskInputOptions,k=e.slimDOMOptions,S=e.maskInputFn,x=e.maskTextFn,C=e.hooks,E=e.packFn,I=e.sampling,O=void 0===I?{}:I,N=e.dataURLOptions,A=void 0===N?{}:N,R=e.mousemoveWait,M=e.recordDOM,T=void 0===M||M,P=e.recordCanvas,L=void 0!==P&&P,D=e.recordCrossOriginIframes,F=void 0!==D&&D,U=e.recordAfter,j=void 0===U?"DOMContentLoaded"===e.recordAfter?e.recordAfter:"load":U,B=e.userTriggeredOnInput,$=void 0!==B&&B,z=e.collectFonts,q=void 0!==z&&z,V=e.inlineImages,H=void 0!==V&&V,G=e.plugins,K=e.keepIframeSrcFn,J=void 0===K?function(){return!1}:K,Y=e.ignoreCSSAttributes,Z=void 0===Y?new Set([]):Y,X=e.errorHandler;Ac=X;var Q=!F||window.parent===window,ee=!1;if(!Q)try{window.parent.document&&(ee=!1)}catch(e){ee=!0}if(Q&&!t)throw new Error("emit function is required");if(!Q&&!ee)return function(){};void 0!==R&&void 0===O.mousemove&&(O.mousemove=R),xl.reset();var te,re=!0===_?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0,hidden:!0}:void 0!==w?w:{password:!0},ne=!0===k||"all"===k?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===k,headMetaDescKeywords:"all"===k,headTitleMutations:"all"===k}:k||{};!function(e){void 0===e&&(e=window),"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach)}();var ie=0,oe=function(e){for(var t,r=b(G||[]);!(t=r()).done;){var n=t.value;n.eventProcessor&&(e=n.eventProcessor(e))}return E&&!ee&&(e=E(e)),e};fl=function(e,i){var o,s=e;if(s.timestamp=ac(),!(null==(o=jc[0])?void 0:o.isFrozen())||s.type===kc.FullSnapshot||s.type===kc.IncrementalSnapshot&&s.data.source===Sc.Mutation||jc.forEach(function(e){return e.unfreeze()}),Q)null==t||t(oe(s),i);else if(ee){var a={type:"rrweb",event:oe(s),origin:window.location.origin,isCheckout:i};window.parent.postMessage(a,"*")}if(s.type===kc.FullSnapshot)te=s,ie=0;else if(s.type===kc.IncrementalSnapshot){if(s.data.source===Sc.Mutation&&s.data.isAttachIframe)return;ie++;var c=n&&ie>=n,l=r&&s.timestamp-te.timestamp>r;(c||l)&&gl(!0)}};for(var se,ae=function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Mutation},e)})},ce=function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Scroll},e)})},le=function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.CanvasMutation},e)})},ue=new yl({mutationCb:ae,adoptedStyleSheetCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.AdoptedStyleSheet},e)})}}),pe=new Xc({mirror:xl,mutationCb:ae,stylesheetManager:ue,recordCrossOriginIframes:F,wrappedEmit:fl}),he=b(G||[]);!(se=he()).done;){var de=se.value;de.getMirror&&de.getMirror({nodeMirror:xl,crossOriginIframeMirror:pe.crossOriginIframeMirror,crossOriginIframeStyleMirror:pe.crossOriginIframeStyleMirror})}var fe=new bl;ml=new vl({recordCanvas:L,mutationCb:le,win:window,blockClass:o,blockSelector:a,mirror:xl,sampling:O.canvas,dataURLOptions:A});var ge=new Qc({mutationCb:ae,scrollCb:ce,bypassOptions:{blockClass:o,blockSelector:a,maskTextClass:f,maskTextSelector:m,inlineStylesheet:y,maskInputOptions:re,dataURLOptions:A,maskTextFn:x,maskInputFn:S,recordCanvas:L,inlineImages:H,sampling:O,slimDOMOptions:ne,iframeManager:pe,stylesheetManager:ue,canvasManager:ml,keepIframeSrcFn:J,processedNodeManager:fe},mirror:xl});gl=function(e){if(void 0===e&&(e=!1),T){fl({type:kc.Meta,data:{href:window.location.href,width:uc(),height:lc()}},e),ue.reset(),ge.init(),jc.forEach(function(e){return e.lock()});var t=function(e,t){var r=t||{},n=r.mirror,i=void 0===n?new W:n,o=r.blockClass,s=r.blockSelector,a=r.maskTextClass,c=r.maskTextSelector,l=r.inlineStylesheet,u=r.inlineImages,p=r.recordCanvas,h=r.maskAllInputs,d=void 0!==h&&h,f=r.slimDOM,g=void 0!==f&&f,m=r.keepIframeSrcFn;return be(e,{doc:e,mirror:i,blockClass:void 0===o?"rr-block":o,blockSelector:void 0===s?null:s,maskTextClass:void 0===a?"rr-mask":a,maskTextSelector:void 0===c?null:c,skipChild:!1,inlineStylesheet:void 0===l||l,maskInputOptions:!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0,hidden:!0}:!1===d?{password:!0}:d,maskTextFn:r.maskTextFn,maskInputFn:r.maskInputFn,slimDOMOptions:!0===g||"all"===g?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===g,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===g?{}:g,dataURLOptions:r.dataURLOptions,inlineImages:void 0!==u&&u,recordCanvas:void 0!==p&&p,preserveWhiteSpace:r.preserveWhiteSpace,onSerialize:r.onSerialize,onIframeLoad:r.onIframeLoad,iframeLoadTimeout:r.iframeLoadTimeout,onStylesheetLoad:r.onStylesheetLoad,stylesheetLoadTimeout:r.stylesheetLoadTimeout,keepIframeSrcFn:void 0===m?function(){return!1}:m,newlyAddedElement:!1})}(document,{mirror:xl,blockClass:o,blockSelector:a,maskTextClass:f,maskTextSelector:m,inlineStylesheet:y,maskAllInputs:re,maskTextFn:x,maskInputFn:S,slimDOM:ne,dataURLOptions:A,recordCanvas:L,inlineImages:H,onSerialize:function(e){mc(e,xl)&&pe.addIframe(e),vc(e,xl)&&ue.trackLinkElement(e),yc(e)&&ge.addShadowRoot(tc(e),document)},onIframeLoad:function(e,t){pe.attachIframe(e,t),ge.observeAttachShadow(e)},onStylesheetLoad:function(e,t){ue.attachLinkElement(e,t)},keepIframeSrcFn:J});if(!t)return console.warn("Failed to snapshot the document");fl({type:kc.FullSnapshot,data:{node:t,initialOffset:cc(window)}},e),jc.forEach(function(e){return e.unlock()}),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&ue.adoptStyleSheets(document.adoptedStyleSheets,xl.getId(document))}};try{var me=[],ve=function(e){var t;return Uc(Kc)({mutationCb:ae,mousemoveCb:function(e,t){return fl({type:kc.IncrementalSnapshot,data:{source:t,positions:e}})},mouseInteractionCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.MouseInteraction},e)})},scrollCb:ce,viewportResizeCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.ViewportResize},e)})},inputCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Input},e)})},mediaInteractionCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.MediaInteraction},e)})},styleSheetRuleCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.StyleSheetRule},e)})},styleDeclarationCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.StyleDeclaration},e)})},canvasMutationCb:le,fontCb:function(e){return fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Font},e)})},selectionCb:function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.Selection},e)})},customElementCb:function(e){fl({type:kc.IncrementalSnapshot,data:u({source:Sc.CustomElement},e)})},blockClass:o,ignoreClass:l,ignoreSelector:h,maskTextClass:f,maskTextSelector:m,maskInputOptions:re,inlineStylesheet:y,sampling:O,recordDOM:T,recordCanvas:L,inlineImages:H,userTriggeredOnInput:$,collectFonts:q,doc:e,maskInputFn:S,maskTextFn:x,keepIframeSrcFn:J,blockSelector:a,slimDOMOptions:ne,dataURLOptions:A,mirror:xl,iframeManager:pe,stylesheetManager:ue,shadowDomManager:ge,processedNodeManager:fe,canvasManager:ml,ignoreCSSAttributes:Z,plugins:(null==(t=null==G?void 0:G.filter(function(e){return e.observer}))?void 0:t.map(function(e){return{observer:e.observer,options:e.options,callback:function(t){return fl({type:kc.Plugin,data:{plugin:e.name,payload:t}})}}}))||[]},C)};pe.addLoadListener(function(e){try{me.push(ve(e.contentDocument))}catch(e){console.warn(e)}});var ye=function(){gl(),me.push(ve(document)),_l=!0};return"interactive"===document.readyState||"complete"===document.readyState?ye():(me.push(rc("DOMContentLoaded",function(){fl({type:kc.DomContentLoaded,data:{}}),"DOMContentLoaded"===j&&ye()})),me.push(rc("load",function(){fl({type:kc.Load,data:{}}),"load"===j&&ye()},window))),function(){me.forEach(function(e){try{e()}catch(e){String(e).toLowerCase().includes("cross-origin")||console.warn(e)}}),fe.destroy(),_l=!1,Ac=void 0}}catch(e){console.warn(e)}}Cl.addCustomEvent=function(e,t){if(!_l)throw new Error("please add custom event after start recording");fl({type:kc.Custom,data:{tag:e,payload:t}})},Cl.freezePage=function(){jc.forEach(function(e){return e.freeze()})},Cl.takeFullSnapshot=function(e){if(!_l)throw new Error("please take full snapshot after start recording");gl(e)},Cl.mirror=xl,(Sl=kl||(kl={}))[Sl.NotStarted=0]="NotStarted",Sl[Sl.Running=1]="Running",Sl[Sl.Stopped=2]="Stopped",Cl.addCustomEvent,Cl.freezePage,Cl.takeFullSnapshot;var El=Object.defineProperty,Il=function(e,t,r){return function(e,t,r){return t in e?El(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r}(e,"symbol"!==(void 0===t?"undefined":m(t))?t+"":t,r)},Ol=function(){function e(e){Il(this,"fileName"),Il(this,"functionName"),Il(this,"lineNumber"),Il(this,"columnNumber"),this.fileName=e.fileName||"",this.functionName=e.functionName||"",this.lineNumber=e.lineNumber,this.columnNumber=e.columnNumber}return e.prototype.toString=function(){var e=this.lineNumber||"",t=this.columnNumber||"";return this.functionName?this.functionName+" ("+this.fileName+":"+e+":"+t+")":this.fileName+":"+e+":"+t},e}(),Nl=/(^|@)\S+:\d+/,Al=/^\s*at .*(\S+:\d+|\(native\))/m,Rl=/^(eval@)?(\[native code])?$/,Ml={parse:function(e){return e?void 0!==e.stacktrace||void 0!==e["opera#sourceloc"]?this.parseOpera(e):e.stack&&e.stack.match(Al)?this.parseV8OrIE(e):e.stack?this.parseFFOrSafari(e):(console.warn("[console-record-plugin]: Failed to parse error object:",e),[]):[]},extractLocation:function(e){if(-1===e.indexOf(":"))return[e];var t=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/[()]/g,""));if(!t)throw new Error("Cannot parse given url: "+e);return[t[1],t[2]||void 0,t[3]||void 0]},parseV8OrIE:function(e){return e.stack.split("\n").filter(function(e){return!!e.match(Al)},this).map(function(e){e.indexOf("(eval ")>-1&&(e=e.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(\),.*$)/g,""));var t=e.replace(/^\s+/,"").replace(/\(eval code/g,"("),r=t.match(/ (\((.+):(\d+):(\d+)\)$)/),n=(t=r?t.replace(r[0],""):t).split(/\s+/).slice(1),i=this.extractLocation(r?r[1]:n.pop()),o=n.join(" ")||void 0,s=["eval",""].indexOf(i[0])>-1?void 0:i[0];return new Ol({functionName:o,fileName:s,lineNumber:i[1],columnNumber:i[2]})},this)},parseFFOrSafari:function(e){return e.stack.split("\n").filter(function(e){return!e.match(Rl)},this).map(function(e){if(e.indexOf(" > eval")>-1&&(e=e.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),-1===e.indexOf("@")&&-1===e.indexOf(":"))return new Ol({functionName:e});var t=/((.*".+"[^@]*)?[^@]*)(?:@)/,r=e.match(t),n=r&&r[1]?r[1]:void 0,i=this.extractLocation(e.replace(t,""));return new Ol({functionName:n,fileName:i[0],lineNumber:i[1],columnNumber:i[2]})},this)},parseOpera:function(e){return!e.stacktrace||e.message.indexOf("\n")>-1&&e.message.split("\n").length>e.stacktrace.split("\n").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(e){for(var t=/Line (\d+).*script (?:in )?(\S+)/i,r=e.message.split("\n"),n=[],i=2,o=r.length;i/,"$2").replace(/\([^)]*\)/g,"")||void 0;return new Ol({functionName:n,fileName:r[0],lineNumber:r[1],columnNumber:r[2]})},this)}};function Tl(e){if(!e||!e.outerHTML)return"";for(var t="";e.parentElement;){var r=e.localName;if(!r)break;r=r.toLowerCase();var n=e.parentElement,i=[];if(n.children&&n.children.length>0)for(var o=0;o1&&(r+=":eq("+i.indexOf(e)+")"),t=r+(t?">"+t:""),e=n}return t}function Pl(e){return"[object Object]"===Object.prototype.toString.call(e)}function Ll(e,t){if(0===t)return!0;for(var r,n=b(Object.keys(e));!(r=n()).done;){var i=r.value;if(Pl(e[i])&&Ll(e[i],t-1))return!0}return!1}function Dl(e,t){var r={numOfKeysLimit:50,depthOfLimit:4};Object.assign(r,t);var n=[],i=[];return JSON.stringify(e,function(e,t){if(n.length>0){var o=n.indexOf(this);~o?n.splice(o+1):n.push(this),~o?i.splice(o,1/0,e):i.push(e),~n.indexOf(t)&&(t=n[0]===t?"[Circular ~]":"[Circular ~."+i.slice(0,n.indexOf(t)).join(".")+"]")}else n.push(t);if(null===t)return t;if(void 0===t)return"undefined";if(Pl(s=t)&&Object.keys(s).length>r.numOfKeysLimit||"function"==typeof s||Pl(s)&&Ll(s,r.depthOfLimit))return function(e){var t=e.toString();return r.stringLengthLimit&&t.length>r.stringLengthLimit&&(t=t.slice(0,r.stringLengthLimit)+"..."),t}(t);var s;if("bigint"===(void 0===t?"undefined":m(t)))return t.toString()+"n";if(d(t,Event)){var a={};for(var c in t){var l=t[c];Array.isArray(l)?a[c]=Tl(l.length?l[0]:null):a[c]=l}return a}return d(t,Node)?d(t,HTMLElement)?t?t.outerHTML:"":t.nodeName:d(t,Error)?t.stack?t.stack+"\nEnd of stack for Error object":t.name+": "+t.message:t})}var Fl={level:["assert","clear","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],lengthThreshold:1e3,logger:"console"};function Ul(e,t,r){var n,i=r?Object.assign({},Fl,r):Fl,o=i.logger;if(!o)return function(){};n="string"==typeof o?t[o]:o;var s=0,a=!1,c=[];if(i.level.includes("error")){var l=function(t){var r=t.message,n=t.error,o=Ml.parse(n).map(function(e){return e.toString()}),s=[Dl(r,i.stringifyOptions)];e({level:"error",trace:o,payload:s})};t.addEventListener("error",l),c.push(function(){t.removeEventListener("error",l)});var u=function(t){var r,n;d(t.reason,Error)?n=[Dl("Uncaught (in promise) "+(r=t.reason).name+": "+r.message,i.stringifyOptions)]:(r=new Error,n=[Dl("Uncaught (in promise)",i.stringifyOptions),Dl(t.reason,i.stringifyOptions)]);var o=Ml.parse(r).map(function(e){return e.toString()});e({level:"error",trace:o,payload:n})};t.addEventListener("unhandledrejection",u),c.push(function(){t.removeEventListener("unhandledrejection",u)})}for(var p,h=b(i.level);!(p=h()).done;){var f=p.value;c.push(g(n,f))}return function(){c.forEach(function(e){return e()})};function g(t,r){var n=this;return t[r]?function(t,o){try{if(!(o in t))return function(){};var c=t[o],l=function(t){var o=n;return function(){for(var n=arguments.length,c=new Array(n),l=0;l0&&Wl(Gl,r))}catch(e){Yl.call(new Xl(r),e)}}}function Yl(e){var t=this;t.triggered||(t.triggered=!0,t.def&&(t=t.def),t.msg=e,t.state=2,t.chain.length>0&&Wl(Gl,t))}function Zl(e,t,r,n){for(var i=0;i0&&(t[r]=e)}),t},Tu.truncate=function(e,t){var r;return"string"==typeof e?r=e.slice(0,t):Tu.isArray(e)?(r=[],Tu.each(e,function(e){r.push(Tu.truncate(e,t))})):Tu.isObject(e)?(r={},Tu.each(e,function(e,n){r[n]=Tu.truncate(e,t)})):r=e,r},Tu.JSONEncode=function(e){var t=function(e){var t=/[\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,r={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};return t.lastIndex=0,t.test(e)?'"'+e.replace(t,function(e){var t=r[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'},r=function(e,n){var i="",o=0,s="",a="",c=0,l=i,u=[],p=n[e];switch(p&&"object"==typeof p&&"function"==typeof p.toJSON&&(p=p.toJSON(e)),typeof p){case"string":return t(p);case"number":return isFinite(p)?String(p):"null";case"boolean":case"null":return String(p);case"object":if(!p)return"null";if(i+=" ",u=[],"[object Array]"===bu.apply(p)){for(c=p.length,o=0;o="0"&&iu<="9";)t+=iu,lu();if("."===iu)for(t+=".";lu()&&iu>="0"&&iu<="9";)t+=iu;if("e"===iu||"E"===iu)for(t+=iu,lu(),"-"!==iu&&"+"!==iu||(t+=iu,lu());iu>="0"&&iu<="9";)t+=iu,lu();if(e=+t,isFinite(e))return e;cu("Bad number")},pu=function(){var e,t,r,n="";if('"'===iu)for(;lu();){if('"'===iu)return lu(),n;if("\\"===iu)if(lu(),"u"===iu){for(r=0,t=0;t<4&&(e=parseInt(lu(),16),isFinite(e));t+=1)r=16*r+e;n+=String.fromCharCode(r)}else{if("string"!=typeof au[iu])break;n+=au[iu]}else n+=iu}cu("Bad string")},hu=function(){for(;iu&&iu<=" ";)lu()},su=function(){switch(hu(),iu){case"{":return function(){var e,t={};if("{"===iu){if(lu("{"),hu(),"}"===iu)return lu("}"),t;for(;iu;){if(e=pu(),hu(),lu(":"),Object.hasOwnProperty.call(t,e)&&cu('Duplicate key "'+e+'"'),t[e]=su(),hu(),"}"===iu)return lu("}"),t;lu(","),hu()}}cu("Bad object")}();case"[":return function(){var e=[];if("["===iu){if(lu("["),hu(),"]"===iu)return lu("]"),e;for(;iu;){if(e.push(su()),hu(),"]"===iu)return lu("]"),e;lu(","),hu()}}cu("Bad array")}();case'"':return pu();case"-":return uu();default:return iu>="0"&&iu<="9"?uu():function(){switch(iu){case"t":return lu("t"),lu("r"),lu("u"),lu("e"),!0;case"f":return lu("f"),lu("a"),lu("l"),lu("s"),lu("e"),!1;case"n":return lu("n"),lu("u"),lu("l"),lu("l"),null}cu('Unexpected "'+iu+'"')}()}},function(e){var t;return ou=e,nu=0,iu=" ",t=su(),hu(),iu&&cu("Syntax error"),t}),Tu.base64Encode=function(e){var t,r,n,i,o,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",a=0,c=0,l="",u=[];if(!e)return e;e=Tu.utf8Encode(e);do{t=(o=e.charCodeAt(a++)<<16|e.charCodeAt(a++)<<8|e.charCodeAt(a++))>>18&63,r=o>>12&63,n=o>>6&63,i=63&o,u[c++]=s.charAt(t)+s.charAt(r)+s.charAt(n)+s.charAt(i)}while(a127&&s<2048?String.fromCharCode(s>>6|192,63&s|128):String.fromCharCode(s>>12|224,s>>6&63|128,63&s|128),null!==a&&(r>t&&(o+=e.substring(t,r)),o+=a,t=r=i+1)}return r>t&&(o+=e.substring(t,e.length)),o},Tu.UUID=function(){try{return n.crypto.randomUUID()}catch(r){for(var e=new Array(36),t=0;t<36;t++)e[t]=Math.floor(16*Math.random());return e[14]=4,e[19]=e[19]&=-5,e[19]=e[19]|=8,e[8]=e[13]=e[18]=e[23]="-",Tu.map(e,function(e){return e.toString(16)}).join("")}};var ju=["ahrefsbot","ahrefssiteaudit","amazonbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandex","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"];Tu.isBlockedUA=function(e){var t;for(e=e.toLowerCase(),t=0;t=0}function n(t){if(!Su.getElementsByTagName)return[];var n,i,o,s,a,c,l,u,p,h,d=t.split(" "),f=[Su];for(c=0;c-1){o=(i=n.split("#"))[0];var g=i[1],m=Su.getElementById(g);if(!m||o&&m.nodeName.toLowerCase()!=o)return[];f=[m]}else if(n.indexOf(".")>-1){o=(i=n.split("."))[0];var v=i[1];for(o||(o="*"),s=[],a=0,l=0;l-1};break;default:b=function(e){return e.getAttribute(_)}}for(f=[],h=0,l=0;l=3?t[2]:""},currentUrl:function(){return n.location.href},properties:function(e){return"object"!=typeof e&&(e={}),Tu.extend(Tu.strip_empty_properties({$os:Tu.info.os(),$browser:Tu.info.browser(Eu,ku.vendor,xu),$referrer:Su.referrer,$referring_domain:Tu.info.referringDomain(Su.referrer),$device:Tu.info.device(Eu)}),{$current_url:Tu.info.currentUrl(),$browser_version:Tu.info.browserVersion(Eu,ku.vendor,xu),$screen_height:Cu.height,$screen_width:Cu.width,mp_lib:"web",$lib_version:du.LIB_VERSION,$insert_id:Ku(),time:Tu.timestamp()/1e3},Tu.strip_empty_properties(e))},people_properties:function(){return Tu.extend(Tu.strip_empty_properties({$os:Tu.info.os(),$browser:Tu.info.browser(Eu,ku.vendor,xu)}),{$browser_version:Tu.info.browserVersion(Eu,ku.vendor,xu)})},mpPageViewProperties:function(){return Tu.strip_empty_properties({current_page_title:Su.title,current_domain:n.location.hostname,current_url_path:n.location.pathname,current_url_protocol:n.location.protocol,current_url_search:n.location.search})}};var Ku=function(e){var t=Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10);return e?t.substring(0,e):t},Ju=/[a-z0-9][a-z0-9-]*\.[a-z]+$/i,Yu=/[a-z0-9][a-z0-9-]+\.[a-z.]{2,6}$/i,Zu=function(e){var t=Yu,r=e.split("."),n=r[r.length-1];(n.length>4||"com"===n||"org"===n)&&(t=Ju);var i=e.match(t);return i?i[0]:""},Xu=function(){},Qu=null,ep=null;"undefined"!=typeof JSON&&(Qu=JSON.stringify,ep=JSON.parse),Qu=Qu||Tu.JSONEncode,ep=ep||Tu.JSONDecode,Tu.info=Tu.info,Tu.info.browser=Tu.info.browser,Tu.info.browserVersion=Tu.info.browserVersion,Tu.info.device=Tu.info.device,Tu.info.properties=Tu.info.properties,Tu.isBlockedUA=Tu.isBlockedUA,Tu.isEmptyObject=Tu.isEmptyObject,Tu.isObject=Tu.isObject,Tu.JSONDecode=Tu.JSONDecode,Tu.JSONEncode=Tu.JSONEncode,Tu.toArray=Tu.toArray,Tu.NPO=eu;var tp="mixpanelRecordingEvents",rp="mixpanelRecordingRegistry",np=[tp,rp],ip=function(e){this.dbPromise=null,this.storeName=e};function op(e,t){mp(!0,e,t)}function sp(e,t){mp(!1,e,t)}function ap(e,t){return"1"===gp(e,t)}function cp(e,t){if(function(e){if(e&&e.ignoreDnt)return!1;var t=e&&e.window||n,r=t.navigator||{},i=!1;return Tu.each([r.doNotTrack,r.msDoNotTrack,t.doNotTrack],function(e){Tu.includes([!0,1,"1","yes"],e)&&(i=!0)}),i}(t))return Pu.warn('This browser has "Do Not Track" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the "Do Not Track" browser setting, initialize the Mixpanel instance with the config "ignore_dnt: true"'),!0;var r="0"===gp(e,t);return r&&Pu.warn("You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data."),r}function lp(e){return vp(e,function(e){return this.get_config(e)})}function up(e){return vp(e,function(e){return this._get_config(e)})}function pp(e){return vp(e,function(e){return this._get_config(e)})}function hp(e,t){dp(t=t||{}).remove(fp(e,t),!!t.crossSubdomainCookie,t.cookieDomain)}function dp(e){return"localStorage"===(e=e||{}).persistenceType?Tu.localStorage:Tu.cookie}function fp(e,t){return((t=t||{}).persistencePrefix||"__mp_opt_in_out_")+e}function gp(e,t){return dp(t).get(fp(e,t))}function mp(e,t,r){Tu.isString(t)&&t.length?(dp(r=r||{}).set(fp(t,r),e?1:0,Tu.isNumber(r.cookieExpiration)?r.cookieExpiration:null,!!r.crossSubdomainCookie,!!r.secureCookie,!!r.crossSiteCookie,r.cookieDomain),r.track&&e&&r.track(r.trackEventName||"$opt_in",r.trackProperties,{send_immediately:!0})):Pu.error("gdpr."+(e?"optIn":"optOut")+" called with an invalid token")}function vp(e,t){return function(){var r=!1;try{var n=t.call(this,"token"),i=t.call(this,"ignore_dnt"),o=t.call(this,"opt_out_tracking_persistence_type"),s=t.call(this,"opt_out_tracking_cookie_prefix"),a=t.call(this,"window");n&&(r=cp(n,{ignoreDnt:i,persistenceType:o,persistencePrefix:s,window:a}))}catch(e){Pu.error("Unexpected error when checking tracking opt-out status: "+e)}if(!r)return e.apply(this,arguments);var c=arguments[arguments.length-1];"function"==typeof c&&c(0)}}ip.prototype._openDb=function(){return new tu(function(e,t){var r=n.indexedDB.open("mixpanelBrowserDb",1);r.onerror=function(){t(r.error)},r.onsuccess=function(){e(r.result)},r.onupgradeneeded=function(e){var t=e.target.result;np.forEach(function(e){t.createObjectStore(e)})}})},ip.prototype.init=function(){return n.indexedDB?(this.dbPromise||(this.dbPromise=this._openDb()),this.dbPromise.then(function(e){return e instanceof n.IDBDatabase?tu.resolve():tu.reject(e)})):tu.reject("indexedDB is not supported in this browser")},ip.prototype.isInitialized=function(){return!!this.dbPromise},ip.prototype.makeTransaction=function(e,t){var r=this.storeName,n=function(n){return new tu(function(i,o){var s=n.transaction(r,e);s.oncomplete=function(){i(s)},s.onabort=s.onerror=function(){o(s.error)},t(s.objectStore(r))})};return this.dbPromise.then(n).catch(function(e){return e&&"InvalidStateError"===e.name?(this.dbPromise=this._openDb(),this.dbPromise.then(n)):tu.reject(e)}.bind(this))},ip.prototype.setItem=function(e,t){return this.makeTransaction("readwrite",function(r){r.put(t,e)})},ip.prototype.getItem=function(e){var t;return this.makeTransaction("readonly",function(r){t=r.get(e)}).then(function(){return t.result})},ip.prototype.removeItem=function(e){return this.makeTransaction("readwrite",function(t){t.delete(e)})},ip.prototype.getAll=function(){var e;return this.makeTransaction("readonly",function(t){e=t.getAll()}).then(function(){return e.result})};var yp=Du("lock"),bp=function(e,t){t=t||{},this.storageKey=e,this.storage=t.storage||n.localStorage,this.pollIntervalMS=t.pollIntervalMS||100,this.timeoutMS=t.timeoutMS||2e3,this.promiseImpl=t.promiseImpl||tu};bp.prototype.withLock=function(e,t){return new(0,this.promiseImpl)(Tu.bind(function(r,n){var i=t||(new Date).getTime()+"|"+Math.random(),o=(new Date).getTime(),s=this.storageKey,a=this.pollIntervalMS,c=this.timeoutMS,l=this.storage,u=s+":X",p=s+":Y",h=s+":Z",d=function(e){if((new Date).getTime()-o>c)return yp.error("Timeout waiting for mutex on "+s+"; clearing lock. ["+i+"]"),l.removeItem(h),l.removeItem(p),void m();setTimeout(function(){try{e()}catch(e){n(e)}},a*(Math.random()+.1))},f=function(e,t){e()?t():d(function(){f(e,t)})},g=function(){var e=l.getItem(p);return!(e&&e!==i||(l.setItem(p,i),l.getItem(p)!==i&&(zu(l,!0)||n(new Error("localStorage support dropped while acquiring lock")),1)))},m=function(){l.setItem(u,i),f(g,function(){l.getItem(u)!==i?d(function(){l.getItem(p)===i?f(function(){return!l.getItem(h)},v):m()}):v()})},v=function(){l.setItem(h,"1");var t=function(){l.removeItem(h),l.getItem(p)===i&&l.removeItem(p),l.getItem(u)===i&&l.removeItem(u)};e().then(function(e){t(),r(e)}).catch(function(e){t(),n(e)})};try{if(!zu(l,!0))throw new Error("localStorage support check failed");m()}catch(e){n(e)}},this))};var _p=function(e){this.storage=e||n.localStorage};_p.prototype.init=function(){return tu.resolve()},_p.prototype.isInitialized=function(){return!0},_p.prototype.setItem=function(e,t){return new tu(Tu.bind(function(r,n){try{this.storage.setItem(e,Qu(t))}catch(e){n(e)}r()},this))},_p.prototype.getItem=function(e){return new tu(Tu.bind(function(t,r){var n;try{n=ep(this.storage.getItem(e))}catch(e){r(e)}t(n)},this))},_p.prototype.removeItem=function(e){return new tu(Tu.bind(function(t,r){try{this.storage.removeItem(e)}catch(e){r(e)}t()},this))};var wp=Du("batch"),kp=function(e,t){var r,i,o,s;t=t||{},this.storageKey=e,this.usePersistence=t.usePersistence,this.usePersistence&&(this.queueStorage=t.queueStorage||new _p,this.lock=new bp(e,{storage:t.sharedLockStorage||n.localStorage,timeoutMS:t.sharedLockTimeoutMS})),this.reportError=t.errorReporter||Tu.bind(wp.error,wp),this.pid=t.pid||null,this.memQueue=[],this.initialized=!1,t.enqueueThrottleMs?this.enqueuePersisted=(r=Tu.bind(this._enqueuePersisted,this),i=t.enqueueThrottleMs,o=null,s=[],function(e){var t=this;return s.push(e),o||(o=new tu(function(e){setTimeout(function(){var n=r.apply(t,[s]);o=null,s=[],e(n)},i)})),o}):this.enqueuePersisted=Tu.bind(function(e){return this._enqueuePersisted([e])},this)};kp.prototype.ensureInit=function(){return this.initialized||!this.usePersistence?tu.resolve():this.queueStorage.init().then(Tu.bind(function(){this.initialized=!0},this)).catch(Tu.bind(function(e){this.reportError("Error initializing queue persistence. Disabling persistence",e),this.initialized=!0,this.usePersistence=!1},this))},kp.prototype.enqueue=function(e,t){var r={id:Ku(),flushAfter:(new Date).getTime()+2*t,payload:e};return this.usePersistence?this.enqueuePersisted(r):(this.memQueue.push(r),tu.resolve(!0))},kp.prototype._enqueuePersisted=function(e){var t=Tu.bind(function(){return this.ensureInit().then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(t){return this.saveToStorage(t.concat(e))},this)).then(Tu.bind(function(t){return t&&(this.memQueue=this.memQueue.concat(e)),t},this)).catch(Tu.bind(function(t){return this.reportError("Error enqueueing items",t,e),!1},this))},this);return this.lock.withLock(t,this.pid).catch(Tu.bind(function(e){return this.reportError("Error acquiring storage lock",e),!1},this))},kp.prototype.fillBatch=function(e){var t=this.memQueue.slice(0,e);return this.usePersistence&&t.lengtho.flushAfter&&!n[o.id]&&(o.orphaned=!0,t.push(o),t.length>=e))break}}return t},this)):tu.resolve(t)};var Sp=function(e,t){var r=[];return Tu.each(e,function(e){e.id&&!t[e.id]&&r.push(e)}),r};kp.prototype.removeItemsByID=function(e){var t={};if(Tu.each(e,function(e){t[e]=!0}),this.memQueue=Sp(this.memQueue,t),this.usePersistence){var r=Tu.bind(function(){return this.ensureInit().then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(e){return e=Sp(e,t),this.saveToStorage(e)},this)).then(Tu.bind(function(){return this.readFromStorage()},this)).then(Tu.bind(function(e){for(var r=0;r5&&(this.reportError("[dupe] item ID sent too many times, not sending",{item:e,batchSize:o.length,timesSent:this.itemIdsSentSuccessfully[n]}),r=!1):this.reportError("[dupe] found item with no ID",{item:e}),r&&a.push(t)}c[e.id]=t},this),a.length<1)return this.requestInProgress=!1,this.resetFlush(),tu.resolve();var l=Tu.bind(function(){return this.queue.removeItemsByID(Tu.map(o,function(e){return e.id})).then(Tu.bind(function(e){return Tu.each(o,Tu.bind(function(e){var t=e.id;t?(this.itemIdsSentSuccessfully[t]=this.itemIdsSentSuccessfully[t]||0,this.itemIdsSentSuccessfully[t]++,this.itemIdsSentSuccessfully[t]>5&&this.reportError("[dupe] item ID sent too many times",{item:e,batchSize:o.length,timesSent:this.itemIdsSentSuccessfully[t]})):this.reportError("[dupe] found item with no ID while removing",{item:e})},this)),e?(this.consecutiveRemovalFailures=0,this.flushOnlyOnInterval&&!s?(this.resetFlush(),tu.resolve()):this.flush()):(++this.consecutiveRemovalFailures>5?(this.reportError("Too many queue failures; disabling batching system."),this.stopAllBatching()):this.resetFlush(),tu.resolve())},this))},this),u=Tu.bind(function(s){this.requestInProgress=!1;try{if(e.unloading)return this.queue.updatePayloads(c);if(Tu.isObject(s)&&"timeout"===s.error&&(new Date).getTime()-r>=t)return this.reportError("Network timeout; retrying"),this.flush();if(Tu.isObject(s)&&(s.httpStatusCode>=500||429===s.httpStatusCode||s.httpStatusCode<=0&&(p=n.navigator.onLine,!Tu.isUndefined(p)&&!p)||"timeout"===s.error)){var a=2*this.flushInterval;return s.retryAfter&&(a=1e3*parseInt(s.retryAfter,10)||a),a=Math.min(6e5,a),this.reportError("Error; retry in "+a+" ms"),this.scheduleFlush(a),tu.resolve()}if(Tu.isObject(s)&&413===s.httpStatusCode){if(o.length>1){var u=Math.max(1,Math.floor(i/2));return this.batchSize=Math.min(this.batchSize,u,o.length-1),this.reportError("413 response; reducing batch size to "+this.batchSize),this.resetFlush(),tu.resolve()}return this.reportError("Single-event request too large; dropping",o),this.resetBatchSize(),l()}return l()}catch(e){this.reportError("Error handling API response",e),this.resetFlush()}var p},this),p={method:"POST",verbose:!0,ignore_json_errors:!0,timeout_ms:t};return e.unloading&&(p.transport="sendBeacon"),Cp.log("MIXPANEL REQUEST:",a),this.sendRequestPromise(a,p).then(u)},this)).catch(Tu.bind(function(e){this.reportError("Error flushing request queue",e),this.resetFlush()},this))},Ep.prototype.reportError=function(e,t){if(Cp.error.apply(Cp.error,arguments),this.errorReporter)try{t instanceof Error||(t=new Error(e)),this.errorReporter(e,t)}catch(t){Cp.error(t)}};var Ip=function(e){var t=Date.now();return!e||t>e.maxExpires||t>e.idleExpires},Op=Du("recorder"),Np=n.CompressionStream,Ap={batch_size:1e3,batch_flush_interval_ms:1e4,batch_request_timeout_ms:9e4,batch_autostart:!0},Rp=new Set([Sc.MouseMove,Sc.MouseInteraction,Sc.Scroll,Sc.ViewportResize,Sc.Input,Sc.TouchMove,Sc.MediaInteraction,Sc.Drag,Sc.Selection]),Mp=function(e){this._mixpanel=e.mixpanelInstance,this._onIdleTimeout=e.onIdleTimeout||Xu,this._onMaxLengthReached=e.onMaxLengthReached||Xu,this._onBatchSent=e.onBatchSent||Xu,this._rrwebRecord=e.rrwebRecord||null,this._stopRecording=null,this.replayId=e.replayId,this.batchStartUrl=e.batchStartUrl||null,this.replayStartUrl=e.replayStartUrl||null,this.idleExpires=e.idleExpires||null,this.maxExpires=e.maxExpires||null,this.replayStartTime=e.replayStartTime||null,this.lastEventTimestamp=e.lastEventTimestamp||null,this.seqNo=e.seqNo||0,this.idleTimeoutId=null,this.maxTimeoutId=null,this.recordMaxMs=fu,this.recordMinMs=0;var t=zu(e.sharedLockStorage,!0)&&!this.getConfig("disable_persistence");this.batcherKey="__mprec_"+this.getConfig("name")+"_"+this.getConfig("token")+"_"+this.replayId,this.queueStorage=new ip(tp),this.batcher=new Ep(this.batcherKey,{errorReporter:this.reportError.bind(this),flushOnlyOnInterval:!0,libConfig:Ap,sendRequestFunc:this.flushEventsWithOptOut.bind(this),queueStorage:this.queueStorage,sharedLockStorage:e.sharedLockStorage,usePersistence:t,stopAllBatchingFunc:this.stopRecording.bind(this),enqueueThrottleMs:250,sharedLockTimeoutMS:1e4})};Mp.prototype.getUserIdInfo=function(){if(this.finalFlushUserIdInfo)return this.finalFlushUserIdInfo;var e={distinct_id:String(this._mixpanel.get_distinct_id())},t=this._mixpanel.get_property("$device_id");t&&(e.$device_id=t);var r=this._mixpanel.get_property("$user_id");return r&&(e.$user_id=r),e},Mp.prototype.unloadPersistedData=function(){return this.batcher.stop(),this.queueStorage.init().catch(function(){this.reportError("Error initializing IndexedDB storage for unloading persisted data.")}.bind(this)).then(function(){return this.getDurationMs()fu&&(this.recordMaxMs=fu,Op.critical("record_max_ms cannot be greater than "+fu+"ms. Capping value.")),this.maxExpires||(this.maxExpires=(new Date).getTime()+this.recordMaxMs),this.recordMinMs=this._getRecordMinMs(),this.replayStartTime||(this.replayStartTime=(new Date).getTime(),this.batchStartUrl=Tu.info.currentUrl(),this.replayStartUrl=Tu.info.currentUrl()),e||this.recordMinMs>0?this.batcher.stop():this.batcher.start();var t=function(){clearTimeout(this.idleTimeoutId);var e=this.getConfig("record_idle_timeout_ms");this.idleTimeoutId=setTimeout(this._onIdleTimeout,e),this.idleExpires=(new Date).getTime()+e}.bind(this);t();var r,n=this.getConfig("record_block_selector");""!==n&&null!==n||(n=void 0);try{this._stopRecording=this._rrwebRecord({emit:function(e){this.idleExpires&&this.idleExpires=this.recordMinMs&&this.batcher.start(),t()),this.__enqueuePromise=this.batcher.enqueue(e),(null===this.lastEventTimestamp||e.timestamp>this.lastEventTimestamp)&&(this.lastEventTimestamp=e.timestamp))}.bind(this),blockClass:this.getConfig("record_block_class"),blockSelector:n,collectFonts:this.getConfig("record_collect_fonts"),dataURLOptions:{type:"image/webp",quality:.6},maskAllInputs:!0,maskTextClass:this.getConfig("record_mask_text_class"),maskTextSelector:this.getConfig("record_mask_text_selector"),recordCanvas:this.getConfig("record_canvas"),sampling:{canvas:15},plugins:this.getConfig("record_console")?[(r={stringifyOptions:{stringLengthLimit:1e3,numOfKeysLimit:50,depthOfLimit:2}},{name:"rrweb/console@1",observer:Ul,options:r})]:[]})}catch(e){this.reportError("Unexpected error when starting rrweb recording.",e)}if("function"!=typeof this._stopRecording)return this.reportError("rrweb failed to start, skipping this recording."),this._stopRecording=null,void this.stopRecording();var i=this.maxExpires-(new Date).getTime();this.maxTimeoutId=setTimeout(this._onMaxLengthReached.bind(this),i)}else Op.log("Recording already in progress, skipping startRecording.");else this.reportError("rrweb record function not provided. ")},Mp.prototype.stopRecording=function(e){if(this.finalFlushUserIdInfo=this.getUserIdInfo(),!this.isRrwebStopped()){try{this._stopRecording()}catch(e){this.reportError("Error with rrweb stopRecording",e)}this._stopRecording=null}var t;return this.batcher.stopped?t=this.batcher.clear():e||(t=this.batcher.flush()),this.batcher.stop(),clearTimeout(this.idleTimeoutId),clearTimeout(this.maxTimeoutId),t},Mp.prototype.isRrwebStopped=function(){return null===this._stopRecording},Mp.prototype.flushEventsWithOptOut=function(e,t,r){var n=function(e){0===e&&(this.stopRecording(),r({error:"Tracking has been opted out, stopping recording."}))}.bind(this);this._flushEvents(e,t,r,n)},Mp.prototype.serialize=function(){var e;try{e=this._mixpanel.get_tab_id()}catch(t){this.reportError("Error getting tab ID for serialization ",t),e=null}return{replayId:this.replayId,seqNo:this.seqNo,replayStartTime:this.replayStartTime,batchStartUrl:this.batchStartUrl,replayStartUrl:this.replayStartUrl,lastEventTimestamp:this.lastEventTimestamp,idleExpires:this.idleExpires,maxExpires:this.maxExpires,tabId:e}},Mp.deserialize=function(e,t){return new Mp(Tu.extend({},t,{replayId:e.replayId,batchStartUrl:e.batchStartUrl,replayStartUrl:e.replayStartUrl,idleExpires:e.idleExpires,maxExpires:e.maxExpires,replayStartTime:e.replayStartTime,lastEventTimestamp:e.lastEventTimestamp,seqNo:e.seqNo,sharedLockStorage:t.sharedLockStorage}))},Mp.prototype._sendRequest=function(e,t,r,i){var o=function(t,r){200===t.status&&this.replayId===e&&(this.seqNo++,this.batchStartUrl=Tu.info.currentUrl()),this._onBatchSent(),i({status:0,httpStatusCode:t.status,responseBody:r,retryAfter:t.headers.get("Retry-After")})}.bind(this),s=this._mixpanel.get_api_host&&this._mixpanel.get_api_host("record")||this.getConfig("api_host");n.fetch(s+"/"+this.getConfig("api_routes").record+"?"+new URLSearchParams(t),{method:"POST",headers:{Authorization:"Basic "+btoa(this.getConfig("token")+":"),"Content-Type":"application/octet-stream"},body:r}).then(function(e){e.json().then(function(t){o(e,t)}).catch(function(e){i({error:e})})}).catch(function(e){i({error:e,httpStatusCode:0})})},Mp.prototype._flushEvents=lp(function(e,t,r){var i=e.length;if(i>0){for(var o=this.replayId,s=1/0,a=-1/0,c=!1,l=0;l=16.4&&o<16.6)}(Eu,ku.vendor,xu)){var d=new Blob([h],{type:"application/json"}).stream().pipeThrough(new Np("gzip"));new Response(d).blob().then(function(e){p.format="gzip",this._sendRequest(o,p,e,r)}.bind(this))}else p.format="body",this._sendRequest(o,p,h,r)}}),Mp.prototype.reportError=function(e,t){Op.error.apply(Op.error,arguments);try{t||e instanceof Error||(e=new Error(e)),this.getConfig("error_reporter")(e,t)}catch(t){Op.error(t)}},Mp.prototype.getDurationMs=function(){return null===this.replayStartTime?0:null===this.lastEventTimestamp?(new Date).getTime()-this.replayStartTime:this.lastEventTimestamp-this.replayStartTime},Mp.prototype._getRecordMinMs=function(){var e=this.getConfig("record_min_ms");return e>8e3?(Op.critical("record_min_ms cannot be greater than 8000ms. Capping value."),8e3):e};var Tp=function(e){this.idb=new ip(rp),this.errorReporter=e.errorReporter,this.mixpanelInstance=e.mixpanelInstance,this.sharedLockStorage=e.sharedLockStorage};Tp.prototype.isPersistenceEnabled=function(){return!this.mixpanelInstance.get_config("disable_persistence")},Tp.prototype.handleError=function(e){this.errorReporter("IndexedDB error: ",e)},Tp.prototype.setActiveRecording=function(e){if(!this.isPersistenceEnabled())return tu.resolve();var t=e.tabId;return t?this.idb.init().then(function(){return this.idb.setItem(t,e)}.bind(this)).catch(this.handleError.bind(this)):(console.warn("No tab ID is set, cannot persist recording metadata."),tu.resolve())},Tp.prototype.getActiveRecording=function(){return this.isPersistenceEnabled()?this.idb.init().then(function(){return this.idb.getItem(this.mixpanelInstance.get_tab_id())}.bind(this)).then(function(e){return Ip(e)?null:e}.bind(this)).catch(this.handleError.bind(this)):tu.resolve(null)},Tp.prototype.clearActiveRecording=function(){return this.isPersistenceEnabled()?this.markActiveRecordingExpired():this.deleteActiveRecording()},Tp.prototype.markActiveRecordingExpired=function(){return this.getActiveRecording().then(function(e){if(e)return e.maxExpires=0,this.setActiveRecording(e)}.bind(this)).catch(this.handleError.bind(this))},Tp.prototype.deleteActiveRecording=function(){return this.idb.isInitialized()?this.idb.removeItem(this.mixpanelInstance.get_tab_id()).catch(this.handleError.bind(this)):tu.resolve()},Tp.prototype.flushInactiveRecordings=function(){return this.isPersistenceEnabled()?this.idb.init().then(function(){return this.idb.getAll()}.bind(this)).then(function(e){var t=e.filter(function(e){return Ip(e)}).map(function(e){return Mp.deserialize(e,{mixpanelInstance:this.mixpanelInstance,sharedLockStorage:this.sharedLockStorage}).unloadPersistedData().then(function(){return this.idb.removeItem(e.tabId)}.bind(this)).catch(this.handleError.bind(this))}.bind(this));return tu.all(t)}.bind(this)).catch(this.handleError.bind(this)):tu.resolve([])};var Pp=Du("recorder"),Lp=function(e,t,r){this.mixpanelInstance=e,this.rrwebRecord=t||Cl,this.sharedLockStorage=r,this.recordingRegistry=new Tp({mixpanelInstance:this.mixpanelInstance,errorReporter:Pp.error,sharedLockStorage:r}),this._flushInactivePromise=this.recordingRegistry.flushInactiveRecordings(),this.activeRecording=null,this.stopRecordingInProgress=!1};Lp.prototype.startRecording=function(e){if(e=e||{},!this.activeRecording||this.activeRecording.isRrwebStopped()){var t=function(){Pp.log("Idle timeout reached, restarting recording."),this.resetRecording()}.bind(this),r=function(){Pp.log("Max recording length reached, stopping recording."),this.resetRecording()}.bind(this),n=function(){this.recordingRegistry.setActiveRecording(this.activeRecording.serialize()),this.__flushPromise=this.activeRecording.batcher._flushPromise}.bind(this),i={mixpanelInstance:this.mixpanelInstance,onBatchSent:n,onIdleTimeout:t,onMaxLengthReached:r,replayId:Tu.UUID(),rrwebRecord:this.rrwebRecord,sharedLockStorage:this.sharedLockStorage};return e.activeSerializedRecording?this.activeRecording=Mp.deserialize(e.activeSerializedRecording,i):this.activeRecording=new Mp(i),this.activeRecording.startRecording(e.shouldStopBatcher),this.recordingRegistry.setActiveRecording(this.activeRecording.serialize())}Pp.log("Recording already in progress, skipping startRecording.")},Lp.prototype.stopRecording=function(){return this.stopRecordingInProgress=!0,this._stopCurrentRecording(!1,!0).then(function(){return this.recordingRegistry.clearActiveRecording()}.bind(this)).then(function(){this.stopRecordingInProgress=!1}.bind(this))},Lp.prototype.pauseRecording=function(){return this._stopCurrentRecording(!1)},Lp.prototype._stopCurrentRecording=function(e,t){if(this.activeRecording){var r=this.activeRecording.stopRecording(e);return t&&(this.activeRecording=null),r}return tu.resolve()},Lp.prototype.resumeRecording=function(e){return this.activeRecording&&this.activeRecording.isRrwebStopped()?(this.activeRecording.startRecording(!1),tu.resolve(null)):this.recordingRegistry.getActiveRecording().then(function(t){return t&&!this.stopRecordingInProgress?this.startRecording({activeSerializedRecording:t}):e?this.startRecording({shouldStopBatcher:!1}):(Pp.log("No resumable recording found."),null)}.bind(this))},Lp.prototype.resetRecording=function(){this.stopRecording(),this.startRecording({shouldStopBatcher:!0})},Lp.prototype.getActiveReplayId=function(){return this.activeRecording&&!this.activeRecording.isRrwebStopped()?this.activeRecording.replayId:null},Object.defineProperty(Lp.prototype,"replayId",{get:function(){return this.getActiveReplayId()}}),n.__mp_recorder=Lp;var Dp="change",Fp="click",Up="hashchange",jp="load",Bp="mp_locationchange",$p="popstate",zp="scrollend",qp="scroll",Vp="submit",Wp="visibilitychange",Hp=["clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","x","y"],Gp=["mp-include"],Kp=["mp-no-track"],Jp=Kp.concat(["mp-sensitive"]),Yp=["aria-label","aria-labelledby","aria-describedby","href","name","role","title","type"],Zp={button:!0,checkbox:!0,combobox:!0,grid:!0,link:!0,listbox:!0,menu:!0,menubar:!0,menuitem:!0,menuitemcheckbox:!0,menuitemradio:!0,navigation:!0,option:!0,radio:!0,radiogroup:!0,searchbox:!0,slider:!0,spinbutton:!0,switch:!0,tab:!0,tablist:!0,textbox:!0,tree:!0,treegrid:!0,treeitem:!0},Xp={base:!0,head:!0,html:!0,link:!0,meta:!0,script:!0,style:!0,title:!0,br:!0,hr:!0,wbr:!0,noscript:!0,picture:!0,source:!0,template:!0,track:!0},Qp={article:!0,div:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,p:!0,section:!0,span:!0},eh=["onclick","onmousedown","onmouseup","onpointerdown","onpointerup","ontouchend","ontouchstart"],th=Du("autocapture");function rh(e){for(var t={},r=nh(e).split(" "),n=0;n0?t[0]:e.target||e.srcElement}function bh(){this.clicks=[]}function _h(e,t){this.changeCallback=e||function(){},this.observerConfig=t,this.observedShadowRoots=null,this.shadowObservers=[]}bh.prototype.isRageClick=function(e,t){var r=(t=t||{}).threshold_px||30,n=t.timeout_ms||1e3,i=t.click_count||4;if(t.interactive_elements_only){var o=yh(e);if(!o||mh(o))return!1}var s=Date.now(),a=e.pageX,c=e.pageY,l=this.clicks[this.clicks.length-1];if(l&&s-l.timestamp=i)return this.clicks=[],!0}else this.clicks=[{x:a,y:c,timestamp:s}];return!1},_h.prototype.getEventTarget=function(e){if(this.observedShadowRoots)return yh(e)},_h.prototype.observeFromEvent=function(e){if(this.observedShadowRoots)for(var t=vh(e),r=0;r=t?this.hasChangesAfter(s.timestamp)||i.push(s):this.pendingClicks.push(s)}return i},Ch.prototype.hasChangesAfter=function(e){return this.lastChangeEventTimestamp>=e-100},Ch.prototype.recordChangeEvent=function(){this.lastChangeEventTimestamp=Date.now()},Ch.prototype.triggerProcessing=function(e){this.processingActive||(this.processingActive=!0,this.processRecursively(e))},Ch.prototype.processRecursively=function(e){if(this.isTracking&&this.onDeadClickCallback){var t=e.timeout_ms,r=this;this.processingTimeout=setTimeout(function(){if(r.processingActive){for(var t=r.getDeadClicks(e),n=0;n0?r.processRecursively(e):r.processingActive=!1}},t)}else this.processingActive=!1},Ch.prototype.startTracking=function(){if(!this.isTracking){this.isTracking=!0;var e=this;wh.forEach(function(t){var r=function(){e.recordChangeEvent()};document.addEventListener(t,r,{capture:!0,passive:!0}),e.eventListeners.push({target:document,event:t,handler:r,options:{capture:!0,passive:!0}})}),Sh.forEach(function(t){var r=function(){e.recordChangeEvent()};window.addEventListener(t,r),e.eventListeners.push({target:window,event:t,handler:r})}),kh.forEach(function(t){var r=function(){e.recordChangeEvent()};window.addEventListener(t,r,{passive:!0}),e.eventListeners.push({target:window,event:t,handler:r,options:{passive:!0}})});var t=function(){e.recordChangeEvent()};if(document.addEventListener("selectionchange",t),e.eventListeners.push({target:document,event:"selectionchange",handler:t}),window.MutationObserver)try{this.mutationObserver=new window.MutationObserver(function(){e.recordChangeEvent()}),this.mutationObserver.observe(document.body||document.documentElement,xh)}catch(e){th.critical("Error while setting up mutation observer",e)}if(window.customElements)try{this.shadowDOMObserver=new _h(function(){e.recordChangeEvent()},xh),this.shadowDOMObserver.start()}catch(e){th.critical("Error while setting up shadow DOM observer",e),this.shadowDOMObserver=null}}},Ch.prototype.stopTracking=function(){if(this.isTracking){this.isTracking=!1,this.pendingClicks=[],this.lastChangeEventTimestamp=0,this.processingActive=!1,this.processingTimeout&&(clearTimeout(this.processingTimeout),this.processingTimeout=null);for(var e=0;ethis.maxScrollViewDepth&&(this.maxScrollViewDepth=e),this.previousScrollHeight=Su.body.scrollHeight}}.bind(this));this.listenerScrollDepth=e.listener,n.addEventListener(e.eventType,this.listenerScrollDepth)}},Zh.prototype.initClickTracking=function(){n.removeEventListener(Fp,this.listenerClick),(this.getConfig(Uh)||this.mp.get_config("record_heatmap_data"))&&(th.log("Initializing click tracking"),this.listenerClick=function(e){(this.getConfig(Uh)||this.mp.is_recording_heatmap_data())&&this.trackDomEvent(e,Kh)}.bind(this),n.addEventListener(Fp,this.listenerClick))},Zh.prototype.initDeadClickTracking=function(){this._getClickTrackingConfig(jh)||this.mp.get_config("record_heatmap_data")?(th.log("Initializing dead click tracking"),this._deadClickTracker||(this._deadClickTracker=new Ch(function(e){this.trackDomEvent(e,Jh)}.bind(this)),this._deadClickTracker.startTracking()),this.listenerDeadClick||(this.listenerDeadClick=function(e){var t=this._getClickTrackingConfig(jh);if((t||this.mp.is_recording_heatmap_data())&&!this.currentUrlBlocked()){var r=t||{};r.timeout_ms||(r.timeout_ms=500),this._deadClickTracker.trackClick(e,r)}}.bind(this),n.addEventListener(Fp,this.listenerDeadClick))):this.stopDeadClickTracking()},Zh.prototype.initInputTracking=function(){n.removeEventListener(Dp,this.listenerChange),this.getConfig(Bh)&&(th.log("Initializing input tracking"),this.listenerChange=function(e){this.getConfig(Bh)&&this.trackDomEvent(e,"$mp_input_change")}.bind(this),n.addEventListener(Dp,this.listenerChange))},Zh.prototype.initPageviewTracking=function(){if(n.removeEventListener(Bp,this.listenerLocationchange),this.pageviewTrackingConfig()){th.log("Initializing pageview tracking");var e="",t=!1;this.currentUrlBlocked()||(t=this.mp.track_pageview(Gh)),t&&(e=Tu.info.currentUrl()),this.listenerLocationchange=Fu(function(){if(!this.currentUrlBlocked()){var t=Tu.info.currentUrl(),r=!1,n=t.split("#")[0].split("?")[0]!==e.split("#")[0].split("?")[0],i=this.pageviewTrackingConfig();i===Ih?r=t!==e:"url-with-path-and-query-string"===i?r=t.split("#")[0]!==e.split("#")[0]:"url-with-path"===i&&(r=n),r&&(this.mp.track_pageview(Gh)&&(e=t),n&&(this.lastScrollCheckpoint=0,th.log("Path change: re-initializing scroll depth checkpoints")))}}.bind(this)),n.addEventListener(Bp,this.listenerLocationchange)}},Zh.prototype.initRageClickTracking=function(){n.removeEventListener(Fp,this.listenerRageClick),(this._getClickTrackingConfig(zh)||this.mp.get_config("record_heatmap_data"))&&(th.log("Initializing rage click tracking"),this._rageClickTracker||(this._rageClickTracker=new bh),this.listenerRageClick=function(e){var t=this._getClickTrackingConfig(zh);(t||this.mp.is_recording_heatmap_data())&&(this.currentUrlBlocked()||this._rageClickTracker.isRageClick(e,t)&&this.trackDomEvent(e,Yh))}.bind(this),n.addEventListener(Fp,this.listenerRageClick))},Zh.prototype.initScrollTracking=function(){if(n.removeEventListener(zp,this.listenerScroll),n.removeEventListener(qp,this.listenerScroll),this.getConfig(qh)){th.log("Initializing scroll tracking"),this.lastScrollCheckpoint=0;var e=fh(function(){if(this.getConfig(qh)&&!this.currentUrlBlocked()){var e=this.getConfig(Dh),t=(this.getConfig(Fh)||[]).slice().sort(function(e,t){return e-t}),r=n.scrollY,i=Tu.extend({$scroll_top:r},Gh);try{var o=Su.body.scrollHeight,s=Math.round(r/(o-n.innerHeight)*100);if(i.$scroll_height=o,i.$scroll_percentage=s,s>this.lastScrollCheckpoint)for(var a=0;a=c&&this.lastScrollCheckpoint=0;p--)c=this._mixpanel.persistence.load_queue(ud),l=c.pop(),a._mixpanel.persistence.save(),Tu.isEmptyObject(l)||a.append(l,u);var h=this._mixpanel.persistence.load_queue(hd);if(!Tu.isUndefined(h)&&Tu.isArray(h)&&h.length)for(var d,f=function(e,t){0===e&&a._mixpanel.persistence._add_to_people_queue(hd,d),Tu.isUndefined(s)||s(e,t)},g=h.length-1;g>=0;g--)h=this._mixpanel.persistence.load_queue(hd),d=h.pop(),a._mixpanel.persistence.save(),Tu.isEmptyObject(d)||a.remove(d,f)},gd.prototype._is_reserved_property=function(e){return"$distinct_id"===e||"$token"===e||"$device_id"===e||"$user_id"===e||"$had_persisted_distinct_id"===e},gd.prototype.set=gd.prototype.set,gd.prototype.set_once=gd.prototype.set_once,gd.prototype.unset=gd.prototype.unset,gd.prototype.increment=gd.prototype.increment,gd.prototype.append=gd.prototype.append,gd.prototype.remove=gd.prototype.remove,gd.prototype.union=gd.prototype.union,gd.prototype.track_charge=gd.prototype.track_charge,gd.prototype.clear_charges=gd.prototype.clear_charges,gd.prototype.delete_user=gd.prototype.delete_user,gd.prototype.toString=gd.prototype.toString;var md,vd="__mps",yd="__mpso",bd="__mpus",_d="__mpa",wd="__mpap",kd="__mpr",Sd="__mpu",xd="$people_distinct_id",Cd="__alias",Ed="__timers",Id=[vd,yd,bd,_d,wd,kd,Sd,xd,Cd,Ed],Od=function(e){this.props={},this.campaign_params_saved=!1,e.persistence_name?this.name="mp_"+e.persistence_name:this.name="mp_"+e.token+"_mixpanel";var t=e.persistence;"cookie"!==t&&"localStorage"!==t&&(Pu.critical("Unknown persistence type "+t+"; falling back to cookie"),t=e.persistence="cookie"),"localStorage"===t&&Tu.localStorage.is_supported()?this.storage=Tu.localStorage:this.storage=Tu.cookie,this.load(),this.update_config(e),this.upgrade(),this.save()};Od.prototype.properties=function(){var e={};return this.load(),Tu.each(this.props,function(t,r){Tu.include(Id,r)||(e[r]=t)}),e},Od.prototype.load=function(){if(!this.disabled){var e=this.storage.parse(this.name);e&&(this.props=Tu.extend({},e))}},Od.prototype.upgrade=function(){var e,t;this.storage===Tu.localStorage?(e=Tu.cookie.parse(this.name),Tu.cookie.remove(this.name),Tu.cookie.remove(this.name,!0),e&&this.register_once(e)):this.storage===Tu.cookie&&(t=Tu.localStorage.parse(this.name),Tu.localStorage.remove(this.name),t&&this.register_once(t))},Od.prototype.save=function(){this.disabled||this.storage.set(this.name,Qu(this.props),this.expire_days,this.cross_subdomain,this.secure,this.cross_site,this.cookie_domain)},Od.prototype.load_prop=function(e){return this.load(),this.props[e]},Od.prototype.remove=function(){this.storage.remove(this.name,!1,this.cookie_domain),this.storage.remove(this.name,!0,this.cookie_domain)},Od.prototype.clear=function(){this.remove(),this.props={}},Od.prototype.register_once=function(e,t,r){return!!Tu.isObject(e)&&(void 0===t&&(t="None"),this.expire_days=void 0===r?this.default_expiry:r,this.load(),Tu.each(e,function(e,r){this.props.hasOwnProperty(r)&&this.props[r]!==t||(this.props[r]=e)},this),this.save(),!0)},Od.prototype.register=function(e,t){return!!Tu.isObject(e)&&(this.expire_days=void 0===t?this.default_expiry:t,this.load(),Tu.extend(this.props,e),this.save(),!0)},Od.prototype.unregister=function(e){this.load(),e in this.props&&(delete this.props[e],this.save())},Od.prototype.update_search_keyword=function(e){this.register(Tu.info.searchInfo(e))},Od.prototype.update_referrer_info=function(e){this.register_once({$initial_referrer:e||"$direct",$initial_referring_domain:Tu.info.referringDomain(e)||"$direct"},"")},Od.prototype.get_referrer_info=function(){return Tu.strip_empty_properties({$initial_referrer:this.props.$initial_referrer,$initial_referring_domain:this.props.$initial_referring_domain})},Od.prototype.update_config=function(e){this.default_expiry=this.expire_days=e.cookie_expiration,this.set_disabled(e.disable_persistence),this.set_cookie_domain(e.cookie_domain),this.set_cross_site(e.cross_site_cookie),this.set_cross_subdomain(e.cross_subdomain_cookie),this.set_secure(e.secure_cookie)},Od.prototype.set_disabled=function(e){this.disabled=e,this.disabled?this.remove():this.save()},Od.prototype.set_cookie_domain=function(e){e!==this.cookie_domain&&(this.remove(),this.cookie_domain=e,this.save())},Od.prototype.set_cross_site=function(e){e!==this.cross_site&&(this.cross_site=e,this.remove(),this.save())},Od.prototype.set_cross_subdomain=function(e){e!==this.cross_subdomain&&(this.cross_subdomain=e,this.remove(),this.save())},Od.prototype.get_cross_subdomain=function(){return this.cross_subdomain},Od.prototype.set_secure=function(e){e!==this.secure&&(this.secure=!!e,this.remove(),this.save())},Od.prototype._add_to_people_queue=function(e,t){var r=this._get_queue_key(e),n=t[e],i=this._get_or_create_queue(sd),o=this._get_or_create_queue(ad),s=this._get_or_create_queue(cd),a=this._get_or_create_queue(ld),c=this._get_or_create_queue(pd),l=this._get_or_create_queue(hd,[]),u=this._get_or_create_queue(ud,[]);r===vd?(Tu.extend(i,n),this._pop_from_people_queue(ld,n),this._pop_from_people_queue(pd,n),this._pop_from_people_queue(cd,n)):r===yd?(Tu.each(n,function(e,t){t in o||(o[t]=e)}),this._pop_from_people_queue(cd,n)):r===bd?Tu.each(n,function(e){Tu.each([i,o,a,c],function(t){e in t&&delete t[e]}),Tu.each(u,function(t){e in t&&delete t[e]}),s[e]=!0}):r===_d?(Tu.each(n,function(e,t){t in i?i[t]+=e:(t in a||(a[t]=0),a[t]+=e)},this),this._pop_from_people_queue(cd,n)):r===Sd?(Tu.each(n,function(e,t){Tu.isArray(e)&&(t in c||(c[t]=[]),Tu.each(e,function(e){Tu.include(c[t],e)||c[t].push(e)}))}),this._pop_from_people_queue(cd,n)):r===kd?(l.push(n),this._pop_from_people_queue(ud,n)):r===wd&&(u.push(n),this._pop_from_people_queue(cd,n)),Pu.log("MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):"),Pu.log(t),this.save()},Od.prototype._pop_from_people_queue=function(e,t){var r=this.props[this._get_queue_key(e)];Tu.isUndefined(r)||Tu.each(t,function(t,n){e===ud||e===hd?Tu.each(r,function(e){e[n]===t&&delete e[n]}):delete r[n]},this)},Od.prototype.load_queue=function(e){return this.load_prop(this._get_queue_key(e))},Od.prototype._get_queue_key=function(e){return e===sd?vd:e===ad?yd:e===cd?bd:e===ld?_d:e===ud?wd:e===hd?kd:e===pd?Sd:void Pu.error("Invalid queue:",e)},Od.prototype._get_or_create_queue=function(e,t){var r=this._get_queue_key(e);return t=Tu.isUndefined(t)?{}:t,this.props[r]||(this.props[r]=t)},Od.prototype.set_event_timer=function(e,t){var r=this.load_prop(Ed)||{};r[e]=t,this.props[Ed]=r,this.save()},Od.prototype.remove_event_timer=function(e){var t=(this.load_prop(Ed)||{})[e];return Tu.isUndefined(t)||(delete this.props[Ed][e],this.save()),t};var Nd,Ad=function(e,t){throw new Error(e+" not available in this build.")},Rd=function(e){return e},Md="mixpanel",Td="base64",Pd="$device:",Ld=n.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest,Dd=!Ld&&-1===Eu.indexOf("MSIE")&&-1===Eu.indexOf("Mozilla"),Fd=null;ku.sendBeacon&&(Fd=function(){return ku.sendBeacon.apply(ku,arguments)});var Ud={track:"track/",engage:"engage/",groups:"groups/",record:"record/",flags:"flags/"},jd={api_host:"https://api-js.mixpanel.com",api_hosts:{},api_routes:Ud,api_extra_query_params:{},api_method:"POST",api_transport:"XHR",api_payload_format:Td,app_host:"https://mixpanel.com",autocapture:!1,cdn:"https://cdn.mxpnl.com",cross_site_cookie:!1,cross_subdomain_cookie:!0,error_reporter:Xu,flags:!1,persistence:"cookie",persistence_name:"",cookie_domain:"",cookie_name:"",loaded:Xu,mp_loader:null,track_marketing:!0,track_pageview:!1,skip_first_touch_marketing:!1,store_google:!0,stop_utm_persistence:!1,save_referrer:!0,test:!1,verbose:!1,img:!1,debug:!1,track_links_timeout:300,cookie_expiration:365,upgrade:!1,disable_persistence:!1,disable_cookie:!1,secure_cookie:!1,ip:!0,opt_out_tracking_by_default:!1,opt_out_persistence_by_default:!1,opt_out_tracking_persistence_type:"localStorage",opt_out_tracking_cookie_prefix:null,property_blacklist:[],xhr_headers:{},ignore_dnt:!1,batch_requests:!0,batch_size:50,batch_flush_interval_ms:5e3,batch_request_timeout_ms:9e4,batch_autostart:!0,hooks:{},record_block_class:new RegExp("^(mp-block|fs-exclude|amp-block|rr-block|ph-no-capture)$"),record_block_selector:"img, video, audio",record_canvas:!1,record_collect_fonts:!1,record_console:!0,record_heatmap_data:!1,record_idle_timeout_ms:18e5,record_mask_text_class:new RegExp("^(mp-mask|fs-mask|amp-mask|rr-mask|ph-mask)$"),record_mask_text_selector:"*",record_max_ms:fu,record_min_ms:0,record_sessions_percent:0,recorder_src:"https://cdn.mxpnl.com/libs/mixpanel-recorder.min.js"},Bd=!1,$d=function(){},zd=function(e,t,r){var n,i=r===Md?Nd:Nd[r];if(i&&0===md)n=i;else{if(i&&!Tu.isArray(i))return void Pu.error("You have already initialized "+r);n=new $d}if(n._cached_groups={},n._init(e,t,r),n.people=new gd,n.people._init(n),!n.get_config("skip_first_touch_marketing")){var o=Tu.info.campaignParams(null),s={},a=!1;Tu.each(o,function(e,t){s["initial_"+t]=e,e&&(a=!0)}),a&&n.people.set_once(s)}return du.DEBUG=du.DEBUG||n.get_config("debug"),!Tu.isUndefined(i)&&Tu.isArray(i)&&(n._execute_array.call(n.people,i.people),n._execute_array(i)),n};$d.prototype.init=function(e,t,r){if(Tu.isUndefined(r))this.report_error("You must name your new library: init(token, config, name)");else{if(r!==Md){var n=zd(e,t,r);return Nd[r]=n,n._loaded(),n}this.report_error("You must initialize the main mixpanel object right after you include the Mixpanel js snippet")}},$d.prototype._init=function(e,t,r){t=t||{},this.__loaded=!0,this.config={};var i={};if("api_payload_format"in t||(t.api_host||jd.api_host).match(/\.mixpanel\.com/)&&(i.api_payload_format="json"),this.set_config(Tu.extend({},jd,i,t,{name:r,token:e,callback_fn:(r===Md?r:Md+"."+r)+"._jsc"})),this._jsc=Xu,this.__dom_loaded_queue=[],this.__request_queue=[],this.__disabled_events=[],this._flags={disable_all_events:!1,identify_called:!1},this.request_batchers={},this._batch_requests=this.get_config("batch_requests"),this._batch_requests)if(Tu.localStorage.is_supported(!0)&&Ld){if(this.init_batchers(),Fd&&n.addEventListener){var o=Tu.bind(function(){this.request_batchers.events.stopped||this.request_batchers.events.flush({unloading:!0})},this);n.addEventListener("pagehide",function(e){e.persisted&&o()}),n.addEventListener("visibilitychange",function(){"hidden"===Su.visibilityState&&o()})}}else this._batch_requests=!1,Pu.log("Turning off Mixpanel request-queueing; needs XHR and localStorage support"),Tu.each(this.get_batcher_configs(),function(e){Pu.log("Clearing batch queue "+e.queue_key),Tu.localStorage.remove(e.queue_key)});this.persistence=this.cookie=new Od(this.config),this.unpersisted_superprops={},this._gdpr_init();var s=Tu.UUID();this.get_distinct_id()||this.register_once({distinct_id:Pd+s,$device_id:s},""),this.flags=new rd({getFullApiRoute:Tu.bind(function(){return this.get_api_host("flags")+"/"+this.get_config("api_routes").flags},this),getConfigFunc:Tu.bind(this.get_config,this),setConfigFunc:Tu.bind(this.set_config,this),getPropertyFunc:Tu.bind(this.get_property,this),trackingFunc:Tu.bind(this.track,this)}),this.flags.init(),this.flags=this.flags,this.autocapture=new Zh(this),this.autocapture.init(),this._init_tab_id(),this._check_and_start_session_recording()},$d.prototype._init_tab_id=function(){if(this.get_config("disable_persistence"))Pu.log("Tab ID initialization skipped due to disable_persistence config");else if(Tu.sessionStorage.is_supported())try{var e=this.get_config("name")+"_"+this.get_config("token"),t="mp_tab_id_"+e,r="mp_gen_new_tab_id_"+e;!Tu.sessionStorage.get(r)&&Tu.sessionStorage.get(t)||Tu.sessionStorage.set(t,"$tab-"+Tu.UUID()),Tu.sessionStorage.set(r,"1"),this.tab_id=Tu.sessionStorage.get(t),n.addEventListener("beforeunload",function(){Tu.sessionStorage.remove(r)})}catch(e){this.report_error("Error initializing tab id",e)}else this.report_error("Session storage is not supported, cannot keep track of unique tab ID.")},$d.prototype.get_tab_id=function(){return this.tab_id||null},$d.prototype._should_load_recorder=function(){if(this.get_config("disable_persistence"))return Pu.log("Load recorder check skipped due to disable_persistence config"),Promise.resolve(!1);var e=new ip(rp),t=this.get_tab_id();return e.init().then(function(){return e.getAll()}).then(function(e){for(var r=0;r0&&100*Math.random()<=this.get_config("record_sessions_percent");e||r?t(!0):this._should_load_recorder().then(function(e){e&&t(!1)})}else Pu.critical("Browser does not support MutationObserver; skipping session recording")}),$d.prototype.start_session_recording=function(){this._check_and_start_session_recording(!0)},$d.prototype.stop_session_recording=function(){return this._recorder?this._recorder.stopRecording():Promise.resolve()},$d.prototype.pause_session_recording=function(){return this._recorder?this._recorder.pauseRecording():Promise.resolve()},$d.prototype.resume_session_recording=function(){return this._recorder?this._recorder.resumeRecording():Promise.resolve()},$d.prototype.is_recording_heatmap_data=function(){return this._get_session_replay_id()&&this.get_config("record_heatmap_data")},$d.prototype.get_session_recording_properties=function(){var e={},t=this._get_session_replay_id();return t&&(e.$mp_replay_id=t),e},$d.prototype.get_session_replay_url=function(){var e=null,t=this._get_session_replay_id();return t&&(e="https://mixpanel.com/projects/replay-redirect?"+Tu.HTTPBuildQuery({replay_id:t,distinct_id:this.get_distinct_id(),token:this.get_config("token")})),e},$d.prototype._get_session_replay_id=function(){var e=null;return this._recorder&&(e=this._recorder.replayId),e||null},$d.prototype.__get_recorder=function(){return this._recorder},$d.prototype._loaded=function(){if(this.get_config("loaded")(this),this._set_default_superprops(),this.people.set_once(this.persistence.get_referrer_info()),this.get_config("store_google")&&this.get_config("stop_utm_persistence")){var e=Tu.info.campaignParams(null);Tu.each(e,function(e,t){this.unregister(t)}.bind(this))}},$d.prototype._set_default_superprops=function(){this.persistence.update_search_keyword(Su.referrer),this.get_config("store_google")&&!this.get_config("stop_utm_persistence")&&this.register(Tu.info.campaignParams()),this.get_config("save_referrer")&&this.persistence.update_referrer_info(Su.referrer)},$d.prototype._dom_loaded=function(){Tu.each(this.__dom_loaded_queue,function(e){this._track_dom.apply(this,e)},this),this.has_opted_out_tracking()||Tu.each(this.__request_queue,function(e){this._send_request.apply(this,e)},this),delete this.__dom_loaded_queue,delete this.__request_queue},$d.prototype._track_dom=function(e,t){if(this.get_config("img"))return this.report_error("You can't use DOM tracking functions with img = true."),!1;if(!Bd)return this.__dom_loaded_queue.push([e,t]),!1;var r=(new e).init(this);return r.track.apply(r,t)},$d.prototype._prepare_callback=function(e,t){if(Tu.isUndefined(e))return null;if(Ld)return function(r){e(r,t)};var r=this._jsc,n=""+Math.floor(1e8*Math.random()),i=this.get_config("callback_fn")+"["+n+"]";return r[n]=function(i){delete r[n],e(i,t)},i},$d.prototype._send_request=function(e,t,r,n){var i=!0;if(Dd)return this.__request_queue.push(arguments),i;var o={method:this.get_config("api_method"),transport:this.get_config("api_transport"),verbose:this.get_config("verbose")},s=null;n||!Tu.isFunction(r)&&"string"!=typeof r||(n=r,r=null),r=Tu.extend(o,r||{}),Ld||(r.method="GET");var a="POST"===r.method,c=Fd&&a&&"sendbeacon"===r.transport.toLowerCase(),l=r.verbose;t.verbose&&(l=!0),this.get_config("test")&&(t.test=1),l&&(t.verbose=1),this.get_config("img")&&(t.img=1),Ld||(n?t.callback=n:(l||this.get_config("test"))&&(t.callback="(function(){})")),t.ip=this.get_config("ip")?1:0,t._=(new Date).getTime().toString(),a&&(s="data="+encodeURIComponent(t.data),delete t.data),Tu.extend(t,this.get_config("api_extra_query_params")),e+="?"+Tu.HTTPBuildQuery(t);var u=this;if("img"in t){var p=Su.createElement("img");p.src=e,Su.body.appendChild(p)}else if(c){try{i=Fd(e,s)}catch(e){u.report_error(e),i=!1}try{n&&n(i?1:0)}catch(e){u.report_error(e)}}else if(Ld)try{var h=new XMLHttpRequest;h.open(r.method,e,!0);var d=this.get_config("xhr_headers");if(a&&(d["Content-Type"]="application/x-www-form-urlencoded"),Tu.each(d,function(e,t){h.setRequestHeader(t,e)}),r.timeout_ms&&void 0!==h.timeout){h.timeout=r.timeout_ms;var f=(new Date).getTime()}h.withCredentials=!0,h.onreadystatechange=function(){var e;if(4===h.readyState)if(200===h.status){if(n)if(l){var t;try{t=Tu.JSONDecode(h.responseText)}catch(e){if(u.report_error(e),!r.ignore_json_errors)return;t=h.responseText}n(t)}else n(Number(h.responseText))}else if(e=h.timeout&&!h.status&&(new Date).getTime()-f>=h.timeout?"timeout":"Bad HTTP status: "+h.status+" "+h.statusText,u.report_error(e),n)if(l){var i=h.responseHeaders||{};n({status:0,httpStatusCode:h.status,error:e,retryAfter:i["Retry-After"]})}else n(0)},h.send(s)}catch(e){u.report_error(e),i=!1}else{var g=Su.createElement("script");g.type="text/javascript",g.async=!0,g.defer=!0,g.src=e;var m=Su.getElementsByTagName("script")[0];m.parentNode.insertBefore(g,m)}return i},$d.prototype._execute_array=function(e){var t,r=[],n=[],i=[];Tu.each(e,function(e){e&&(t=e[0],Tu.isArray(t)?i.push(e):"function"==typeof e?e.call(this):Tu.isArray(e)&&"alias"===t?r.push(e):Tu.isArray(e)&&-1!==t.indexOf("track")&&"function"==typeof this[t]?i.push(e):n.push(e))},this);var o=function(e,t){Tu.each(e,function(e){if(Tu.isArray(e[0])){var r=t;Tu.each(e,function(e){r=r[e[0]].apply(r,e.slice(1))})}else this[e[0]].apply(this,e.slice(1))},t)};o(r,this),o(n,this),o(i,this)},$d.prototype.are_batchers_initialized=function(){return!!this.request_batchers.events},$d.prototype.get_batcher_configs=function(){var e="__mpq_"+this.get_config("token");return this._batcher_configs=this._batcher_configs||{events:{type:"events",api_name:"track",queue_key:e+"_ev"},people:{type:"people",api_name:"engage",queue_key:e+"_pp"},groups:{type:"groups",api_name:"groups",queue_key:e+"_gr"}},this._batcher_configs},$d.prototype.init_batchers=function(){if(!this.are_batchers_initialized()){var e=Tu.bind(function(e){return new Ep(e.queue_key,{libConfig:this.config,errorReporter:this.get_config("error_reporter"),sendRequestFunc:Tu.bind(function(t,r,n){var i=this.get_config("api_routes");this._send_request(this.get_api_host(e.api_name)+"/"+i[e.api_name],this._encode_data_for_request(t),r,this._prepare_callback(n,t))},this),beforeSendHook:Tu.bind(function(t){return this._run_hook("before_send_"+e.type,t)},this),stopAllBatchingFunc:Tu.bind(this.stop_batch_senders,this),usePersistence:!0})},this),t=this.get_batcher_configs();this.request_batchers={events:e(t.events),people:e(t.people),groups:e(t.groups)}}this.get_config("batch_autostart")&&this.start_batch_senders()},$d.prototype.start_batch_senders=function(){this._batchers_were_started=!0,this.are_batchers_initialized()&&(this._batch_requests=!0,Tu.each(this.request_batchers,function(e){e.start()}))},$d.prototype.stop_batch_senders=function(){this._batch_requests=!1,Tu.each(this.request_batchers,function(e){e.stop(),e.clear()})},$d.prototype.push=function(e){this._execute_array([e])},$d.prototype.disable=function(e){void 0===e?this._flags.disable_all_events=!0:this.__disabled_events=this.__disabled_events.concat(e)},$d.prototype._encode_data_for_request=function(e){var t=Qu(e);return this.get_config("api_payload_format")===Td&&(t=Tu.base64Encode(t)),{data:t}},$d.prototype._track_or_batch=function(e,t){var r=Tu.truncate(e.data,255),n=e.endpoint,i=e.batcher,o=e.should_send_immediately,s=e.send_request_options||{};t=t||Xu;var a=!0,c=Tu.bind(function(){return s.skip_hooks||(r=this._run_hook("before_send_"+e.type,r)),r?(Pu.log("MIXPANEL REQUEST:"),Pu.log(r),this._send_request(n,this._encode_data_for_request(r),s,this._prepare_callback(t,r))):null},this);return this._batch_requests&&!o?i.enqueue(r).then(function(e){e?t(1,r):c()}):a=c(),a&&r},$d.prototype.track=lp(function(e,t,r,n){n||"function"!=typeof r||(n=r,r=null);var i=(r=r||{}).transport;i&&(r.transport=i);var o=r.send_immediately;if("function"!=typeof n&&(n=Xu),Tu.isUndefined(e))this.report_error("No event name provided to mixpanel.track");else{if(!this._event_is_disabled(e)){(t=Tu.extend({},t)).token=this.get_config("token");var s=this.persistence.remove_event_timer(e);if(!Tu.isUndefined(s)){var a=(new Date).getTime()-s;t.$duration=parseFloat((a/1e3).toFixed(3))}this._set_default_superprops();var c=this.get_config("track_marketing")?Tu.info.marketingParams():{};t=Tu.extend({},Tu.info.properties({mp_loader:this.get_config("mp_loader")}),c,this.persistence.properties(),this.unpersisted_superprops,this.get_session_recording_properties(),t);var l=this.get_config("property_blacklist");Tu.isArray(l)?Tu.each(l,function(e){delete t[e]}):this.report_error("Invalid value for property_blacklist config: "+l);var u={event:e,properties:t};return this._track_or_batch({type:"events",data:u,endpoint:this.get_api_host("events")+"/"+this.get_config("api_routes").track,batcher:this.request_batchers.events,should_send_immediately:o,send_request_options:r},n)}n(0)}}),$d.prototype.set_group=lp(function(e,t,r){Tu.isArray(t)||(t=[t]);var n={};return n[e]=t,this.register(n),this.people.set(e,t,r)}),$d.prototype.add_group=lp(function(e,t,r){var n=this.get_property(e),i={};return void 0===n?(i[e]=[t],this.register(i)):-1===n.indexOf(t)&&(n.push(t),i[e]=n,this.register(i)),this.people.union(e,t,r)}),$d.prototype.remove_group=lp(function(e,t,r){var n=this.get_property(e);if(void 0!==n){var i=n.indexOf(t);i>-1&&(n.splice(i,1),this.register({group_key:n})),0===n.length&&this.unregister(e)}return this.people.remove(e,t,r)}),$d.prototype.track_with_groups=lp(function(e,t,r,n){var i=Tu.extend({},t||{});return Tu.each(r,function(e,t){null!=e&&(i[t]=e)}),this.track(e,i,n)}),$d.prototype._create_map_key=function(e,t){return e+"_"+JSON.stringify(t)},$d.prototype._remove_group_from_cache=function(e,t){delete this._cached_groups[this._create_map_key(e,t)]},$d.prototype.get_group=function(e,t){var r=this._create_map_key(e,t),n=this._cached_groups[r];return void 0!==n&&n._group_key===e&&n._group_id===t||((n=new fd)._init(this,e,t),this._cached_groups[r]=n),n},$d.prototype.track_pageview=lp(function(e,t){"object"!=typeof e&&(e={});var r=(t=t||{}).event_name||"$mp_web_page_view",n=Tu.extend(Tu.info.mpPageViewProperties(),Tu.info.campaignParams(),Tu.info.clickParams()),i=Tu.extend({},n,e);return this.track(r,i)}),$d.prototype.track_links=function(){return this._track_dom.call(this,id,arguments)},$d.prototype.track_forms=function(){return this._track_dom.call(this,od,arguments)},$d.prototype.time_event=function(e){Tu.isUndefined(e)?this.report_error("No event name provided to mixpanel.time_event"):this._event_is_disabled(e)||this.persistence.set_event_timer(e,(new Date).getTime())};var qd={persistent:!0},Vd=function(e){var t;return t=Tu.isObject(e)?e:Tu.isUndefined(e)?{}:{days:e},Tu.extend({},qd,t)};$d.prototype.register=function(e,t){var r=Vd(t);r.persistent?this.persistence.register(e,r.days):Tu.extend(this.unpersisted_superprops,e)},$d.prototype.register_once=function(e,t,r){var n=Vd(r);n.persistent?this.persistence.register_once(e,t,n.days):(void 0===t&&(t="None"),Tu.each(e,function(e,r){this.unpersisted_superprops.hasOwnProperty(r)&&this.unpersisted_superprops[r]!==t||(this.unpersisted_superprops[r]=e)},this))},$d.prototype.unregister=function(e,t){(t=Vd(t)).persistent?this.persistence.unregister(e):delete this.unpersisted_superprops[e]},$d.prototype._register_single=function(e,t){var r={};r[e]=t,this.register(r)},$d.prototype.identify=function(e,t,r,n,i,o,s,a){var c=this.get_distinct_id();if(e&&c!==e){if("string"==typeof e&&0===e.indexOf(Pd))return this.report_error("distinct_id cannot have $device: prefix"),-1;this.register({$user_id:e})}if(!this.get_property("$device_id")){var l=c;this.register_once({$had_persisted_distinct_id:!0,$device_id:l},"")}e!==c&&e!==this.get_property(Cd)&&(this.unregister(Cd),this.register({distinct_id:e})),this._flags.identify_called=!0,this.people._flush(t,r,n,i,o,s,a),e!==c&&this.track("$identify",{distinct_id:e,$anon_distinct_id:c},{skip_hooks:!0}),e!==c&&this.flags.fetchFlags()},$d.prototype.reset=function(){this.stop_session_recording(),this.persistence.clear(),this._flags.identify_called=!1;var e=Tu.UUID();this.register_once({distinct_id:Pd+e,$device_id:e},""),this._check_and_start_session_recording()},$d.prototype.get_distinct_id=function(){return this.get_property("distinct_id")},$d.prototype.alias=function(e,t){if(e===this.get_property(xd))return this.report_error("Attempting to create alias for existing People user - aborting."),-2;var r=this;return Tu.isUndefined(t)&&(t=this.get_distinct_id()),e!==t?(this._register_single(Cd,e),this.track("$create_alias",{alias:e,distinct_id:t},{skip_hooks:!0},function(){r.identify(e)})):(this.report_error("alias matches current distinct_id - skipping api call."),this.identify(e),-1)},$d.prototype.name_tag=function(e){this._register_single("mp_name_tag",e)},$d.prototype.set_config=function(e){Tu.isObject(e)&&(Tu.extend(this.config,e),e.batch_size&&Tu.each(this.request_batchers,function(e){e.resetBatchSize()}),this.get_config("persistence_name")||(this.config.persistence_name=this.config.cookie_name),this.get_config("disable_persistence")||(this.config.disable_persistence=this.config.disable_cookie),this.persistence&&this.persistence.update_config(this.config),du.DEBUG=du.DEBUG||this.get_config("debug"),("autocapture"in e||"record_heatmap_data"in e)&&this.autocapture&&this.autocapture.init())},$d.prototype.get_config=function(e){return this.config[e]},$d.prototype._run_hook=function(e){var t=(this.config.hooks[e]||Rd).apply(this,yu.call(arguments,1));return void 0===t&&(this.report_error(e+" hook did not return a value"),t=null),t},$d.prototype.get_property=function(e){return this.persistence.load_prop([e])},$d.prototype.get_api_host=function(e){return this.get_config("api_hosts")[e]||this.get_config("api_host")},$d.prototype.toString=function(){var e=this.get_config("name");return e!==Md&&(e=Md+"."+e),e},$d.prototype._event_is_disabled=function(e){return Tu.isBlockedUA(Eu)||this._flags.disable_all_events||Tu.include(this.__disabled_events,e)},$d.prototype._gdpr_init=function(){"localStorage"===this.get_config("opt_out_tracking_persistence_type")&&Tu.localStorage.is_supported()&&(!this.has_opted_in_tracking()&&this.has_opted_in_tracking({persistence_type:"cookie"})&&this.opt_in_tracking({enable_persistence:!1}),!this.has_opted_out_tracking()&&this.has_opted_out_tracking({persistence_type:"cookie"})&&this.opt_out_tracking({clear_persistence:!1}),this.clear_opt_in_out_tracking({persistence_type:"cookie",enable_persistence:!1})),this.has_opted_out_tracking()?this._gdpr_update_persistence({clear_persistence:!0}):this.has_opted_in_tracking()||!this.get_config("opt_out_tracking_by_default")&&!Tu.cookie.get("mp_optout")||(Tu.cookie.remove("mp_optout"),this.opt_out_tracking({clear_persistence:this.get_config("opt_out_persistence_by_default")}))},$d.prototype._gdpr_update_persistence=function(e){var t;if(e&&e.clear_persistence)t=!0;else{if(!e||!e.enable_persistence)return;t=!1}this.get_config("disable_persistence")||this.persistence.disabled===t||this.persistence.set_disabled(t),t?(this.stop_batch_senders(),this.stop_session_recording()):this._batchers_were_started&&this.start_batch_senders()},$d.prototype._gdpr_call_func=function(e,t){return t=Tu.extend({track:Tu.bind(this.track,this),persistence_type:this.get_config("opt_out_tracking_persistence_type"),cookie_prefix:this.get_config("opt_out_tracking_cookie_prefix"),cookie_expiration:this.get_config("cookie_expiration"),cross_site_cookie:this.get_config("cross_site_cookie"),cross_subdomain_cookie:this.get_config("cross_subdomain_cookie"),cookie_domain:this.get_config("cookie_domain"),secure_cookie:this.get_config("secure_cookie"),ignore_dnt:this.get_config("ignore_dnt")},t),Tu.localStorage.is_supported()||(t.persistence_type="cookie"),e(this.get_config("token"),{track:t.track,trackEventName:t.track_event_name,trackProperties:t.track_properties,persistenceType:t.persistence_type,persistencePrefix:t.cookie_prefix,cookieDomain:t.cookie_domain,cookieExpiration:t.cookie_expiration,crossSiteCookie:t.cross_site_cookie,crossSubdomainCookie:t.cross_subdomain_cookie,secureCookie:t.secure_cookie,ignoreDnt:t.ignore_dnt})},$d.prototype.opt_in_tracking=function(e){e=Tu.extend({enable_persistence:!0},e),this._gdpr_call_func(op,e),this._gdpr_update_persistence(e)},$d.prototype.opt_out_tracking=function(e){(e=Tu.extend({clear_persistence:!0,delete_user:!0},e)).delete_user&&this.people&&this.people._identify_called()&&(this.people.delete_user(),this.people.clear_charges()),this._gdpr_call_func(sp,e),this._gdpr_update_persistence(e)},$d.prototype.has_opted_in_tracking=function(e){return this._gdpr_call_func(ap,e)},$d.prototype.has_opted_out_tracking=function(e){return this._gdpr_call_func(cp,e)},$d.prototype.clear_opt_in_out_tracking=function(e){e=Tu.extend({enable_persistence:!0},e),this._gdpr_call_func(hp,e),this._gdpr_update_persistence(e)},$d.prototype.report_error=function(e,t){Pu.error.apply(Pu.error,arguments);try{t||e instanceof Error||(e=new Error(e)),this.get_config("error_reporter")(e,t)}catch(t){Pu.error(t)}},$d.prototype.init=$d.prototype.init,$d.prototype.reset=$d.prototype.reset,$d.prototype.disable=$d.prototype.disable,$d.prototype.time_event=$d.prototype.time_event,$d.prototype.track=$d.prototype.track,$d.prototype.track_links=$d.prototype.track_links,$d.prototype.track_forms=$d.prototype.track_forms,$d.prototype.track_pageview=$d.prototype.track_pageview,$d.prototype.register=$d.prototype.register,$d.prototype.register_once=$d.prototype.register_once,$d.prototype.unregister=$d.prototype.unregister,$d.prototype.identify=$d.prototype.identify,$d.prototype.alias=$d.prototype.alias,$d.prototype.name_tag=$d.prototype.name_tag,$d.prototype.set_config=$d.prototype.set_config,$d.prototype.get_config=$d.prototype.get_config,$d.prototype.get_api_host=$d.prototype.get_api_host,$d.prototype.get_property=$d.prototype.get_property,$d.prototype.get_distinct_id=$d.prototype.get_distinct_id,$d.prototype.toString=$d.prototype.toString,$d.prototype.opt_out_tracking=$d.prototype.opt_out_tracking,$d.prototype.opt_in_tracking=$d.prototype.opt_in_tracking,$d.prototype.has_opted_out_tracking=$d.prototype.has_opted_out_tracking,$d.prototype.has_opted_in_tracking=$d.prototype.has_opted_in_tracking,$d.prototype.clear_opt_in_out_tracking=$d.prototype.clear_opt_in_out_tracking,$d.prototype.get_group=$d.prototype.get_group,$d.prototype.set_group=$d.prototype.set_group,$d.prototype.add_group=$d.prototype.add_group,$d.prototype.remove_group=$d.prototype.remove_group,$d.prototype.track_with_groups=$d.prototype.track_with_groups,$d.prototype.start_batch_senders=$d.prototype.start_batch_senders,$d.prototype.stop_batch_senders=$d.prototype.stop_batch_senders,$d.prototype.start_session_recording=$d.prototype.start_session_recording,$d.prototype.stop_session_recording=$d.prototype.stop_session_recording,$d.prototype.pause_session_recording=$d.prototype.pause_session_recording,$d.prototype.resume_session_recording=$d.prototype.resume_session_recording,$d.prototype.get_session_recording_properties=$d.prototype.get_session_recording_properties,$d.prototype.get_session_replay_url=$d.prototype.get_session_replay_url,$d.prototype.get_tab_id=$d.prototype.get_tab_id,$d.prototype.DEFAULT_API_ROUTES=Ud,$d.prototype.__get_recorder=$d.prototype.__get_recorder,Od.prototype.properties=Od.prototype.properties,Od.prototype.update_search_keyword=Od.prototype.update_search_keyword,Od.prototype.update_referrer_info=Od.prototype.update_referrer_info,Od.prototype.get_cross_subdomain=Od.prototype.get_cross_subdomain,Od.prototype.clear=Od.prototype.clear;var Wd={},Hd=(Ad=function(e,t){t()},md=0,(Nd=new $d).init=function(e,t,r){if(r)return Nd[r]||(Nd[r]=Wd[r]=zd(e,t,r),Nd[r]._loaded()),Nd[r];var i=Nd;Wd[Md]?i=Wd[Md]:e&&((i=zd(e,t,Md))._loaded(),Wd[Md]=i),Nd=i,1===md&&(n[Md]=Nd),Tu.each(Wd,function(e,t){t!==Md&&(Nd[t]=e)}),Nd._=Tu},Nd.init(),function(){function e(){e.done||(e.done=!0,Bd=!0,Dd=!1,Tu.each(Wd,function(e){e._dom_loaded()}))}if(Su.addEventListener)"complete"===Su.readyState?e():Su.addEventListener("DOMContentLoaded",e,!1);else if(Su.attachEvent){Su.attachEvent("onreadystatechange",e);var t=!1;try{t=null===n.frameElement}catch(e){}Su.documentElement.doScroll&&t&&function t(){try{Su.documentElement.doScroll("left")}catch(e){return void setTimeout(t,1)}e()}()}Tu.register_event(n,"load",e,!0)}(),Nd)},7008:(e,t,r)=>{"use strict";r.d(t,{$B:()=>d,Mh:()=>p,Yk:()=>h,bi:()=>s,lL:()=>o,oe:()=>u,qt:()=>a});var n=r(6751);let i=!1;const o=()=>{try{if("undefined"==typeof window)return!1;if(i)return!0;const e=window.marketplaceConfig||{};if(!e.data_consent_status)return!1;const t=e.mixpanel||{},r=t.token;if(!r||""===r)return!1;n.A.init(r,{debug:t.debug||!1,track_pageview:!1,persistence:"localStorage",property_blacklist:["$initial_referrer","$initial_referring_domain","$current_url","$referrer","$referring_domain","mp_lib","$lib_version","$browser","$browser_version","$device","$screen_height","$screen_width","$os","$search_engine"]});const o=t.distinctId;return o&&""!==o&&n.A.identify(o),i=!0,!0}catch(e){return!1}},s=()=>{try{i&&void 0!==n.A&&(n.A.reset(),i=!1)}catch(e){console.error("[MixpanelTracking] Error disabling Mixpanel:",e)}},a=()=>{try{if("undefined"==typeof window)return!1;const e=((window.marketplaceConfig||{}).mixpanel||{}).token;return!(!e||""===e)&&(i=!1,o())}catch(e){return console.error("[MixpanelTracking] Error enabling Mixpanel:",e),!1}},c=()=>{try{if("undefined"==typeof window)return{};const e=((window.marketplaceConfig||{}).mixpanel||{}).globalProperties||{},t=new URLSearchParams(window.location.search).get("page")||"",r={...e,hit_type:"event",page:t||window.location.pathname,path:window.location.pathname+window.location.search,referrer:document.referrer.split("/").filter(Boolean).pop()||""};return Object.fromEntries(Object.entries(r).filter(([e,t])=>""!==t&&null!=t&&(!Array.isArray(t)||0!==t.length)))}catch(e){return{}}},l=(e,t={})=>{try{if(!(()=>{try{return i&&void 0!==n.A}catch(e){return!1}})())return;const r={...c(),...t};n.A.track(e,r)}catch(t){console.error("[MixpanelTracking] Error tracking event:",e,t)}},u=({pluginSlug:e,pluginName:t,category:r,itemName:n,isContentRendered:i=!0,contentReceivedAt:o=null,contentRenderedAt:s=null,isCached:a=!1}={})=>{try{const c=Date.now(),u={content_received_at:o||c,is_content_rendered:i,is_cached:a};i&&(u.content_rendered_at=s||c),n?u.item_name=n:e&&(u.item_name=e),e&&(u.product_slug=e),t&&(u.product_name=t),r&&(u.item_category=r),l("Page Viewed",u)}catch(e){console.error("[MixpanelTracking] Error tracking page view:",e)}},p=({buttonName:e,buttonAction:t,plugin:r=null,context:n={}}={})=>{try{const i={button_name:e||"",button_action:t||"",item_name:e||"",timestamp:Date.now()};r&&Object.assign(i,(e=>{if(!e)return{};const t={product_slug:e.slug||"",product_name:e.name||""};if(e.categories&&e.categories.length>0){const r="object"==typeof e.categories[0]?e.categories[0].slug||e.categories[0].title:e.categories[0];t.item_category=r}return e.licenseType&&(t.license_type=e.licenseType),void 0!==e.priceAmount&&(t.price_amount=e.priceAmount),e.priceCurrency&&(t.price_currency=e.priceCurrency),t})(r)),Object.assign(i,n),l("Button Clicked",i)}catch(e){console.error("[MixpanelTracking] Error tracking button click:",e)}},h=(e=null,t=null,r=!1)=>{try{u({category:"marketplace_home",itemName:"Catalog Page",contentReceivedAt:e,contentRenderedAt:t,isCached:r})}catch(e){console.error("[MixpanelTracking] Error tracking marketplace visit:",e)}},d=(e,t=null,r=null,n=!1)=>{try{if(!e)return void console.warn("[MixpanelTracking] Plugin object required for tracking detail visit");const i=e.categories&&e.categories.length>0?"object"==typeof e.categories[0]?e.categories[0].slug||e.categories[0].title:e.categories[0]:"";u({pluginSlug:e.slug,pluginName:e.name,category:i,itemName:"Product Page",contentReceivedAt:t,contentRenderedAt:r,isCached:n})}catch(e){console.error("[MixpanelTracking] Error tracking plugin detail visit:",e)}}},7529:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Aggiorna pagina","ui.notifications.couldNotLoad":"Impossibile caricare la pagina","ui.notifications.refreshPage":"Aggiorna la pagina e contatta il nostro supporto se il problema persiste."}')},7565:(e,t,r)=>{"use strict";r.d(t,{P:()=>i,r:()=>o});let n={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:r(2875).x};const i=(e={})=>{n={...n,...e}},o=()=>n},7674:(e,t,r)=>{"use strict";r(1609),r(1352)},7823:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Refresh page","ui.notifications.couldNotLoad":"Couldn’t load the page","ui.notifications.refreshPage":"Please refresh the page and contact our support if the issue persists."}')},7829:(e,t,r)=>{"use strict";r(1609),r(4814),r(1352)},7979:(e,t,r)=>{"use strict";r.d(t,{D:()=>c,t:()=>a});var n=r(1609),i=r(7008),o=r(108);const s=(0,n.createContext)(null),a=({children:e,apiBaseUrl:t,useWPHandlers:r,wpConfig:a,enableDefaultStyles:c,assetsBaseUrl:l})=>{const[u,p]=(0,n.useState)({}),[h,d]=(0,n.useState)({}),[f,g]=(0,n.useState)({}),[m,v]=(0,n.useState)([]),[y,b]=(0,n.useState)({}),[_,w]=(0,n.useState)(""),[k,S]=(0,n.useState)(""),[x,C]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[E,I]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[O,N]=(0,n.useState)({visible:!1,type:null,pluginSlug:null}),[A,R]=(0,n.useState)(!1),[M,T]=(0,n.useState)(!1),[P,L]=(0,n.useState)(!0),[D,F]=(0,n.useState)(()=>{const e="undefined"!=typeof window&&window.marketplaceConfig?.data_consent_status;return!0===e||"true"===e||"1"===e||1===e}),U=((0,n.useRef)({}),(0,n.useRef)(null)),j="onecom"===("undefined"!=typeof window&&window.marketplaceConfig?.brand),B="undefined"!=typeof window&&window.marketplaceConfig?.activePlugins?window.marketplaceConfig.activePlugins:[],$="undefined"!=typeof window&&window.marketplaceConfig?.activeThemeAuthor?window.marketplaceConfig.activeThemeAuthor:"",z="undefined"!=typeof window&&window.marketplaceConfig?.wpVersion?window.marketplaceConfig.wpVersion:"";(0,n.useEffect)(()=>{const e=sessionStorage.getItem("mp_success_notice");if(e)try{const t=JSON.parse(e);C({visible:t.visible,type:t.type,pluginSlug:t.pluginSlug}),N({visible:t.visible,type:t.successType,pluginSlug:t.pluginSlug}),setTimeout(()=>{sessionStorage.removeItem("mp_success_notice")},100)}catch(e){console.error("Error parsing persisted success notice",e)}},[]),(0,n.useEffect)(()=>{!0===D&&(0,i.lL)();const e=e=>{const t=void 0!==e.detail?.data_consent_status&&e.detail.data_consent_status;F(t),!0===t?("undefined"!=typeof window&&window.marketplaceConfig&&(window.marketplaceConfig.data_consent_status=!0),(0,i.qt)()):("undefined"!=typeof window&&window.marketplaceConfig&&(window.marketplaceConfig.data_consent_status=!1),(0,i.bi)())};window.addEventListener("onConsentStatusChanged",e);const t=t=>{if("onecom_data_consent_status"===t.key){const r="1"===t.newValue;e({detail:{data_consent_status:r}})}};return window.addEventListener("storage",t),()=>{window.removeEventListener("onConsentStatusChanged",e),window.removeEventListener("storage",t)}},[]);const q=(0,n.useCallback)(async e=>{if(j&&W(e)){g(t=>({...t,[e]:!0}));try{const t=void 0!==window.marketplaceConfig&&window.marketplaceConfig?.wpConfig?.ajaxUrl;if(!t)return void g(t=>({...t,[e]:!1}));const r=new FormData;r.append("action","get_addon_purchase_status"),r.append("addon_purchase_check","true"),r.append("addon_slug",e);const n=await fetch(t,{method:"POST",body:r}),i=await n.json();d(t=>({...t,[e]:i.is_purchased}))}catch(t){d(t=>({...t,[e]:!1}))}finally{g(t=>({...t,[e]:!1}))}}},[j]),V=(0,n.useCallback)(()=>{U.current&&(clearTimeout(U.current),U.current=null),sessionStorage.removeItem("mp_success_notice")},[]),W=(0,n.useCallback)(e=>"wp-rocket"===e||"seo-by-rank-math-pro"===e,[]),H=(0,n.useCallback)(e=>(0,o.u)(z,e),[z]),G=(0,n.useCallback)(e=>!(!e||!j)&&W(e.slug)&&!e.installed&&!0===h[e.slug],[j,h,W]),K=(0,n.useCallback)(e=>{if(!e.rules)return!0;if(e.rules.mustHavePlugins&&Array.isArray(e.rules.mustHavePlugins)){if(0===e.rules.mustHavePlugins.length)return!0;if(!e.rules.mustHavePlugins.some(e=>B.includes(e)))return!1}if(e.rules.mustHaveThemesByAuthor&&"string"==typeof e.rules.mustHaveThemesByAuthor){const t=e.rules.mustHaveThemesByAuthor;if($!==t)return!1}return!0},[B,$]),J=(0,n.useCallback)(async(e,n,o="")=>{const s="activate"===e&&"imagify"===n.slug;p(e=>({...e,[n.slug]:!0}));let c=!1;const l=n.name||n.slug;let u="";if(u="activate"===e?(y?.notifications?.activating||"Activating {0}").replace("{0}",l)+"...":"deactivate"===e?(y?.notifications?.deactivating||"Deactivating {0}").replace("{0}",l)+"...":"install"===e?(y?.notifications?.installing||"Installing {0}").replace("{0}",l)+"...":"delete"===e?(y?.notifications?.deleting||"Deleting {0}").replace("{0}",l)+"...":`${e.charAt(0).toUpperCase()+(e.endsWith("e")?e.slice(1,-1):e.slice(1))+"ing"} ${l}`,w(u),S(""),s){let s=`${t}${e}/${n.slug}`;const l=`download_url=${encodeURIComponent(n.download||"")}`;return s=r?`${a.ajaxUrl}?action=marketplace_${e}_plugin&_wpnonce=${a.nonce}&nonce=${a.nonce}&slug=${n.slug}&${l}`:s+(s.includes("?")?"&":"?")+l,void setTimeout(async()=>{try{await fetch(s,{method:"POST"})}catch(e){console.log("Imagify activation request initiated")}let r=0;const a=async()=>{try{const r=`${t}active/${n.slug}`,s=await fetch(r),a=await s.json();if(a&&a.activated)return(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"success",special_case:"imagify_redirect"}}),void("product_detail"===o?(sessionStorage.setItem("mp_skip_page_view","true"),sessionStorage.setItem("mp_success_notice",JSON.stringify({visible:!0,type:"activated",pluginSlug:n.slug,successType:"activate"})),U.current=setTimeout(()=>{window.location.reload()},500)):(N({visible:!0,type:"activate",pluginSlug:n.slug}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),S(""),c=!0))}catch(e){console.error("Error checking activation status",e)}r++,r<6?setTimeout(a,1e3):(I({visible:!0,type:"activate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"error",error_message:"Imagify activation timeout after polling"}}),w(""),S(""),p(e=>({...e,[n.slug]:!1})))};setTimeout(a,1e3)},100)}try{let s=`${t}/${e}/${n.slug}`;const l=`download_url=${encodeURIComponent(n.download||"")}`;s=r?`${a.ajaxUrl}?action=marketplace_${e}_plugin&_wpnonce=${a.nonce}&nonce=${a.nonce}&slug=${n.slug}&${l}`:s+(s.includes("?")?"&":"?")+l;const u=await fetch(s,{method:"POST"}),p=await u.json();if(p.success)if(v(t=>t.map(t=>t.slug===n.slug?{...t,installed:p.data.installed,activated:p.data.activated}:"deactivate"===e&&"seo-by-rank-math"===n.slug&&"seo-by-rank-math-pro"===t.slug?{...t,activated:!1}:"activate"===e&&"seo-by-rank-math-pro"===n.slug&&"seo-by-rank-math"===t.slug?{...t,activated:!0}:t)),"install"===e&&p.data.installed)C({visible:!0,type:"installed",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:n,context:{action:e,result:"success"}});else if("delete"!==e||p.data.installed){if("activate"===e&&p.data.activated)return c=!0,(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"success"}}),void("product_detail"===o?(sessionStorage.setItem("mp_skip_page_view","true"),sessionStorage.setItem("mp_success_notice",JSON.stringify({visible:!0,type:"activated",pluginSlug:n.slug,successType:"activate"})),U.current=setTimeout(()=>{window.location.reload()},500)):(N({visible:!0,type:"activate",pluginSlug:n.slug}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),S("")));if("deactivate"===e&&!p.data.activated)return c=!0,N({visible:!0,type:"deactivate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Deactivate",buttonAction:"product_deactivate",plugin:n,context:{action:e,result:"success"}}),U.current=setTimeout(()=>{sessionStorage.setItem("mp_skip_page_view","true"),window.location.reload()},3e3),w(""),void S("")}else C({visible:!0,type:"deleted",pluginSlug:n.slug}),N({visible:!0,type:"delete",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Delete",buttonAction:"product_delete",plugin:n,context:{action:e,result:"success"}});else"activate"===e?(I({visible:!0,type:"activate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Activate",buttonAction:"product_activate",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginActivationFailed||"Activation failed"}})):"deactivate"===e?(I({visible:!0,type:"deactivate",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Deactivate",buttonAction:"product_deactivate",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginDeactivationFailed||"Deactivation failed"}})):"install"===e?(I({visible:!0,type:"install",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Install",buttonAction:"product_install",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||"Installation failed"}})):"delete"===e?(I({visible:!0,type:"delete",pluginSlug:n.slug}),(0,i.Mh)({buttonName:"Delete",buttonAction:"product_delete",plugin:n,context:{action:e,result:"error",error_message:p.data?.message||y?.notifications?.pluginDeletionFailed||"Deletion failed"}})):alert(p.data?.message||"Failed to perform action")}catch(t){console.error("Plugin action failed",t),"activate"!==e&&"install"!==e&&"delete"!==e||(0,i.Mh)({buttonName:"activate"===e?"Activate":"install"===e?"Install":"Delete",buttonAction:"activate"===e?"product_activate":"install"===e?"product_install":"product_delete",plugin:n,context:{action:e,result:"error",error_message:t.message||"Network error"}})}finally{c||p(e=>({...e,[n.slug]:!1})),w(""),S("")}},[t,r,a,y]),Y={apiBaseUrl:t,useWPHandlers:r,wpConfig:a,enableDefaultStyles:c,assetsBaseUrl:l,pluginInAction:u,setPluginInAction:p,subscriptionStatus:h,isCheckingSubscription:f,fetchSubscriptionStatus:q,isOnecomBrand:j,plugins:m,setPlugins:v,uiI18n:y,setUiI18n:b,handlePluginAction:J,cancelReload:V,loadingAction:_,loadingPlugin:k,noticeState:x,setNoticeState:C,errorState:E,setErrorState:I,successState:O,setSuccessState:N,allPluginsActivated:A,setAllPluginsActivated:R,catalogError:M,setCatalogError:T,catalogLoading:P,setCatalogLoading:L,shouldShowProvision:G,isSpecialPlugin:W,shouldShowPlugin:K,isWpVersionSupported:H,wpVersion:z,activePlugins:B,activeThemeAuthor:$};return(0,n.createElement)(s.Provider,{value:Y},e)},c=()=>{const e=(0,n.useContext)(s);if(!e)throw new Error("useMarketplace must be used within MarketplaceProvider");return e}},8291:(e,t,r)=>{"use strict";r.d(t,{Bd:()=>n.B,r9:()=>i.r}),r(7829),r(4814);var n=r(8437),i=(r(2648),r(2176),r(3273),r(3227),r(7674),r(1831));r(7565),r(1352)},8300:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Uppdatera sidan","ui.notifications.couldNotLoad":"Det gick inte att ladda sidan","ui.notifications.refreshPage":"Uppdatera sidan och kontakta vår support om problemet kvarstår."}')},8437:(e,t,r)=>{"use strict";r.d(t,{B:()=>a});var n=r(1609),i=r(1352),o=r(9454);const s=(e,t,r,n)=>e.getFixedT(t,r,n),a=(e,t={})=>{const{i18n:r}=t,{i18n:a,defaultNS:c}=(0,n.useContext)(i.gJ)||{},l=r||a||(0,i.TO)();if(l&&!l.reportNamespaces&&(l.reportNamespaces=new i.hz),!l){(0,o.mc)(l,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const e=(e,t)=>(0,o.Kg)(t)?t:(0,o.Gv)(t)&&(0,o.Kg)(t.defaultValue)?t.defaultValue:Array.isArray(e)?e[e.length-1]:e,t=[e,{},!1];return t.t=e,t.i18n={},t.ready=!1,t}l.options.react?.wait&&(0,o.mc)(l,"DEPRECATED_OPTION","useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const u={...(0,i.rV)(),...l.options.react,...t},{useSuspense:p,keyPrefix:h}=u;let d=e||c||l.options?.defaultNS;d=(0,o.Kg)(d)?[d]:d||["translation"],l.reportNamespaces.addUsedNamespaces?.(d);const f=(l.isInitialized||l.initializedStoreOnce)&&d.every(e=>(0,o.NM)(e,l,u)),g=((e,t,r,i)=>(0,n.useCallback)(s(e,t,r,i),[e,t,r,i]))(l,t.lng||null,"fallback"===u.nsMode?d:d[0],h),m=()=>g,v=()=>s(l,t.lng||null,"fallback"===u.nsMode?d:d[0],h),[y,b]=(0,n.useState)(m);let _=d.join();t.lng&&(_=`${t.lng}${_}`);const w=((e,t)=>{const r=(0,n.useRef)();return(0,n.useEffect)(()=>{r.current=e},[e,t]),r.current})(_),k=(0,n.useRef)(!0);(0,n.useEffect)(()=>{const{bindI18n:e,bindI18nStore:r}=u;k.current=!0,f||p||(t.lng?(0,o.GA)(l,t.lng,d,()=>{k.current&&b(v)}):(0,o.dM)(l,d,()=>{k.current&&b(v)})),f&&w&&w!==_&&k.current&&b(v);const n=()=>{k.current&&b(v)};return e&&l?.on(e,n),r&&l?.store.on(r,n),()=>{k.current=!1,l&&e&&e?.split(" ").forEach(e=>l.off(e,n)),r&&l&&r.split(" ").forEach(e=>l.store.off(e,n))}},[l,_]),(0,n.useEffect)(()=>{k.current&&f&&b(m)},[l,h,f]);const S=[y,l,f];if(S.t=y,S.i18n=l,S.ready=f,f)return S;if(!f&&!p)return S;throw new Promise(e=>{t.lng?(0,o.GA)(l,t.lng,d,()=>e()):(0,o.dM)(l,d,()=>e())})}},8484:(e,t,r)=>{"use strict";let n;r.d(t,{T:()=>o,V:()=>i});const i=e=>{n=e},o=()=>n},8491:e=>{"use strict";e.exports=JSON.parse('{"ui.button.refreshPage":"Genindlæs side","ui.notifications.couldNotLoad":"Kunne ikke indlæse siden","ui.notifications.refreshPage":"Opdater venligst siden og kontakt vores support, hvis problemet fortsætter."}')},9454:(e,t,r)=>{"use strict";r.d(t,{GA:()=>a,Gv:()=>u,Kg:()=>l,NM:()=>c,dM:()=>s,mc:()=>i});const n={},i=(e,t,r,i)=>{l(r)&&n[r]||(l(r)&&(n[r]=new Date),((e,t,r,n)=>{const i=[r,{code:t,...n||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,"warn","react-i18next::",!0);l(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)})(e,t,r,i))},o=(e,t)=>()=>{if(e.isInitialized)t();else{const r=()=>{setTimeout(()=>{e.off("initialized",r)},0),t()};e.on("initialized",r)}},s=(e,t,r)=>{e.loadNamespaces(t,o(e,r))},a=(e,t,r,n)=>{if(l(r)&&(r=[r]),e.options.preload&&e.options.preload.indexOf(t)>-1)return s(e,r,n);r.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,o(e,n))},c=(e,t,r={})=>t.languages&&t.languages.length?t.hasLoadedNamespace(e,{lng:r.lng,precheck:(t,n)=>{if(r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!n(t.isLanguageChangingTo,e))return!1}}):(i(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0),l=e=>"string"==typeof e,u=e=>"object"==typeof e&&null!==e},9962:(e,t,r)=>{"use strict";r.d(t,{A:()=>u});var n=r(1609),i=r(5795),o=r(1338),s=r(4469),a=r(4677),c=r(7979),l=r(488);function u({plugin:e,onClose:t,usePortal:r=!0,loading:u=!1}){const{assetsBaseUrl:p,useWPHandlers:h,pluginInAction:d,plugins:f,uiI18n:g,subscriptionStatus:m,isCheckingSubscription:v,noticeState:y,setNoticeState:b,setErrorState:_}=(0,c.D)(),w=f.find(e=>"seo-by-rank-math"===e.slug)||null,k=f.find(e=>"seo-by-rank-math-pro"===e.slug)||null,S=p||void 0!==window.marketplaceConfig&&window.marketplaceConfig?.assetsBaseUrl||"",x=S?`${S}assets/icons/`:"";if(u){const e=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-w-max-container gv-mx-auto"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav gv-mb-lg"},(0,n.createElement)("a",{href:"#",onClick:e=>{if(e.preventDefault(),"undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}arrow_back.svg`}),(0,n.createElement)("span",null,g.backButton))),(0,n.createElement)("header",{className:"gv-area-header"},(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("header",{className:"gv-area-header gv-mt-fluid gv-mb-fluid"},(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("div",{className:"gv-card-image gv-h-full"},(0,n.createElement)("div",{className:"gv-skeleton gv-radius-0 gv-h-full",style:{minHeight:"300px"}})))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid gv-mb-fluid"},(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-md",style:{width:"160px"}}),(0,n.createElement)("ul",{className:""},[...Array(3)].map((e,t)=>(0,n.createElement)("li",{key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"})))))),(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md",style:{width:"160px",marginBottom:"28px"}}),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},[...Array(3)].map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("div",{className:"gv-skeleton gv-heading-md gv-mb-sm",style:{width:"160px"}}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm gv-mb-xs"}),(0,n.createElement)("div",{className:"gv-skeleton gv-text-sm"}))))))));return r?(0,i.createPortal)(e,document.body):e}if(!e)return null;const C=(0,n.useRef)(null),E=(0,n.useRef)(null),I=(0,n.useRef)(null),O=(0,n.useRef)(null),N=(0,n.useRef)(null),[A,R]=((0,n.useRef)([]),(0,n.useState)(0));(0,n.useEffect)(()=>{window.scrollTo(0,0)},[e]),(0,n.useEffect)(()=>{b(e=>!e.visible||e.pluginSlug!==w?.slug&&e.pluginSlug!==k?.slug?{visible:!1,type:null,pluginSlug:null}:e),_(e=>!e.visible||e.pluginSlug!==w?.slug&&e.pluginSlug!==k?.slug?{visible:!1,type:null,pluginSlug:null}:e)},[w?.slug,k?.slug,b,_]),(0,n.useEffect)(()=>{const e=()=>{b({visible:!1,type:null,pluginSlug:null}),_({visible:!1,type:null,pluginSlug:null})};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[b,_]),(0,n.useEffect)(()=>{const e=C.current,t=E.current,r=I.current,n=O.current,i=N.current;if(!(e&&t&&r&&n&&i))return;const o=t.querySelector(".gv-previous"),s=t.querySelector(".gv-next");let a=!1,c="top",l=!1,u=!1,p=!1,h=null,d=!1;const f=()=>{const t=e.scrollLeft,r=e.offsetWidth,n=Math.round(t/r);R(n),o&&(0===n?o.classList.add("gv-disabled"):o.classList.remove("gv-disabled")),s&&(n>=Math.round(e.scrollWidth/r)-1?s.classList.add("gv-disabled"):s.classList.remove("gv-disabled"))},g=()=>{const e=parseFloat(getComputedStyle(r).paddingTop)||0,i=n.offsetHeight/2,o=i+e,s=window.innerHeight/2-o,a=2*i;return t.style.transform=`translateY(${o}px)`,t.style.top=`${s}px`,t.style.bottom=`${a}px`,{bottomValue:a,halfHeaderHeight:i}},m=e=>{const n=r.getBoundingClientRect(),i=window.innerHeight-e,o=n.bottom<=i;o!==a&&(a=o,a?t.classList.add("gv-state-bottom"):t.classList.remove("gv-state-bottom"))},v=()=>{if(p)return;let e;e=l?l&&!u?"overlay":"bottom":"top",e!==c&&(p=!0,c=e,"top"===c?(i.classList.add("gv-state-top"),i.classList.remove("gv-state-overlay")):"overlay"===c?(i.classList.remove("gv-state-top"),i.classList.add("gv-state-overlay")):(i.classList.remove("gv-state-top"),i.classList.remove("gv-state-overlay")),requestAnimationFrame(()=>{setTimeout(()=>{p=!1},50)}))},{bottomValue:y}=g();e.addEventListener("scroll",f);const b=new IntersectionObserver(e=>{e.forEach(e=>{!e.isIntersecting&&e.boundingClientRect.top<0?l=!0:(e.isIntersecting||e.boundingClientRect.top>=0)&&(l=!1),v()})},{threshold:[0,1],rootMargin:"0px"}),_=document.createElement("div");_.style.position="absolute",_.style.bottom="0",_.style.left="0",_.style.width="1px",_.style.height="1px",_.style.pointerEvents="none",r.style.position="relative",r.appendChild(_);const w=new IntersectionObserver(e=>{e.forEach(e=>{u=e.isIntersecting,v()})},{threshold:[0],rootMargin:"-100px 0px 0px 0px"});b.observe(i),w.observe(_);const k=()=>{d||(d=!0,requestAnimationFrame(()=>{m(y)}),h=setTimeout(()=>{d=!1},100))},S=()=>{const{bottomValue:e}=g();m(e)};return window.addEventListener("scroll",k),window.addEventListener("resize",S),f(),m(y),v(),()=>{h&&clearTimeout(h),e.removeEventListener("scroll",f),window.removeEventListener("scroll",k),window.removeEventListener("resize",S),b.disconnect(),w.disconnect(),_&&_.parentNode&&_.parentNode.removeChild(_)}},[]),void 0!==window.onecomWpVars&&window.onecomWpVars,e.thumbnail;const M=e.bannerUrl||e.image||e.thumbnail||"https://gravity.group.one/guide-images/product-image@2x.png",T=w?.name||e.name||"Product",P=w?.i18n?.description||w?.i18n?.subtitle,L=w?.i18n?.subtitle,D=k?.name||"Rank Math Pro",F=k?.i18n?.subtitle||k?.i18n?.description,U=k?(0,l.M)(k,g?.labels?.free||"Free",g):"",j=U===(g?.labels?.freeUntilRenewal||"Free until renewal"),B=(0,l.Tc)(k),$=(e,t)=>{if(!e||"object"!=typeof e)return[];const r=[];let n=1;for(;e[`${t}${n}`];){const i=e[`${t}${n}`];i&&""!==i.trim()&&r.push(i),n++}return r},z=w?.i18n||e.i18n,q=$(z,"keyBenefitContent"),V=$(w?.i18n,"keyFeatureContent"),W=$(k?.i18n,"keyFeatureContent"),H=Math.max(V.length,W.length),G=[];if(z&&"object"==typeof z){let e=1;for(;z[`coreFeatureTitle${e}`]||z[`coreFeatureContent${e}`];){const t=z[`coreFeatureTitle${e}`],r=z[`coreFeatureContent${e}`];t&&""!==t.trim()&&r&&""!==r.trim()&&G.push({name:t,desc:r}),e++}}const K=q,J=G,Y=(0,n.createElement)("div",{className:"gv-surface-dim"},(0,n.createElement)("article",{className:"gv-layout-product gv-w-max-container gv-mx-auto gv-p-fluid gv-p-0"},(0,n.createElement)("nav",{className:"gv-breadcrumbs gv-area-nav"},(0,n.createElement)("a",{href:"#",onClick:r=>{if(r.preventDefault(),!d[e.slug])if("undefined"!=typeof window&&window.history&&window.history.length>1)try{window.history.back()}catch(e){t&&t()}else t&&t()},className:"gv-flex gv-items-center gv-gap-xs",role:"button","aria-label":"Go back",style:{opacity:d[e.slug]?.5:1,pointerEvents:d[e.slug]?"none":"auto",cursor:d[e.slug]?"not-allowed":"pointer"},"aria-disabled":d[e.slug]?"true":"false"},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}arrow_back.svg`}),(0,n.createElement)("span",null,g.backButton)),(0,n.createElement)(s.A,{plugin:y?.pluginSlug===k?.slug?k:w}),(0,n.createElement)(a.A,{plugin:w}),(0,n.createElement)(a.A,{plugin:k})),(0,n.createElement)("header",{className:"gv-product-header gv-area-header"},(0,n.createElement)("div",{className:"gv-content gv-stack-space-md gv-text-sm"},(0,n.createElement)("h3",{className:"gv-title gv-header-lg"},"Rank Math"),(0,n.createElement)("p",{className:"gv-text-sm"},P)),(0,n.createElement)("div",{className:"gv-image"},(0,n.createElement)("picture",null,(0,n.createElement)("source",{media:"(min-width: 600px)",srcSet:`${M} 2x, ${M} 1x`}),(0,n.createElement)("img",{src:M,srcSet:`${M} 2x, ${M} 1x`,alt:"Product image"})))),(0,n.createElement)("section",{className:"gv-product-table gv-features-table gv-products-2 gv-recommended-2 gv-area-table"},(0,n.createElement)("div",{className:"gv-dots-scroll-area"},(0,n.createElement)("div",{className:"gv-table-container"},(0,n.createElement)("div",{className:"gv-slider-nav",ref:E},(0,n.createElement)("button",{type:"button",className:"gv-nav-button gv-previous gv-disabled",onClick:()=>{const e=C.current;if(!e)return;const t=e.offsetWidth;e.scrollTo({left:e.scrollLeft-t,behavior:"smooth"})}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}chevron_left.svg`})),(0,n.createElement)("button",{type:"button",className:"gv-nav-button gv-next",onClick:()=>{const e=C.current;if(!e)return;const t=e.offsetWidth;e.scrollTo({left:e.scrollLeft+t,behavior:"smooth"})}},(0,n.createElement)("gv-icon",{"aria-hidden":"true",src:`${x}chevron_right.svg`}))),(0,n.createElement)("div",{className:"gv-table-slider",ref:C},(0,n.createElement)("div",{className:"gv-table",role:"table",ref:I},(0,n.createElement)("div",{className:"gv-table-header",role:"rowgroup",ref:O},(0,n.createElement)("div",{className:"gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-product gv-p-0",role:"columnheader"},(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},`${T} free`),(0,n.createElement)("p",null,L)),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},(0,n.createElement)("span",{className:"gv-price-text"},g?.labels?.free||"Free"))),h&&w?(0,n.createElement)(o.A,{plugin:w}):w?.download&&(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-secondary"},g?.installButton||w?.i18n?.installButton||"Install"))),(0,n.createElement)("div",{className:"gv-product gv-p-0",role:"columnheader"},(0,n.createElement)("div",{className:"gv-recommended-label"},"Recommended"),(0,n.createElement)("div",{className:"gv-content"},(0,n.createElement)("h3",{className:"gv-title"},D),(0,n.createElement)("p",null,F.substring(0,120),F.length>120?"…":"")),(0,n.createElement)("div",{className:"gv-bottom"},(0,n.createElement)("div",{className:"gv-price-container"},(0,n.createElement)("div",{className:"gv-price"},(0,n.createElement)("span",{className:"gv-price-text"},U,U&&!j&&",-"),U&&!j&&(0,n.createElement)("span",{className:"gv-period"},"/",g?.labels?.timeMonth)),U&&(0,n.createElement)("div",{className:"gv-price-info"},(0,n.createElement)("div",{className:"gv-info"},g.labels.afterThat," [",B,"]/",g?.labels?.timeMonth))),h&&k?(0,n.createElement)(o.A,{plugin:k}):(0,n.createElement)("button",{type:"button",className:"gv-button gv-button-primary"},"Select"))))),H>0&&(0,n.createElement)("div",{className:"gv-section",role:"rowgroup"},(0,n.createElement)("div",{className:"gv-section-header gv-table-row",role:"row"},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},g?.keyFeatureHeading||w?.i18n?.keyFeatureHeading||"Key features")),(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("h4",{className:"gv-title"},g?.keyFeatureHeading||k?.i18n?.keyFeatureHeading||"Key features"))),Array.from({length:H}).map((e,t)=>(0,n.createElement)("div",{className:"gv-table-row",role:"row",key:t},(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},V[t]||"")),(0,n.createElement)("div",{className:"gv-cell",role:"cell"},(0,n.createElement)("span",{className:"gv-cell-text"},W[t]||"")))))))),(0,n.createElement)("div",{className:"gv-slider-pagination gv-state-top",ref:N},(0,n.createElement)("div",{className:"gv-dots",role:"tablist"},[0,1].map(e=>(0,n.createElement)("span",{key:e,className:"gv-dot "+(A===e?"gv-active":""),role:"tab","aria-selected":A===e?"true":"false","aria-label":`Go to slide ${e+1}`,onClick:()=>(e=>{const t=C.current;if(!t)return;const r=t.offsetWidth;t.scrollTo({left:r*e,behavior:"smooth"})})(e),style:{cursor:"pointer"}})))))),(0,n.createElement)("div",{className:"gv-area-details gv-grid gv-gap-fluid"},K.length>0&&(0,n.createElement)("section",{className:"gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},g?.benefitHeading||e.i18n?.benefitHeading||"Key benefits"),(0,n.createElement)("ul",{className:"gv-list-items gv-list-check gv-mode-condensed"},K.map((e,t)=>(0,n.createElement)("li",{key:t},e))))),J.length>0&&(0,n.createElement)("div",{className:"gv-area-content gv-grid gv-gap-fluid"},(0,n.createElement)("section",{className:"gv-text-sm gv-stack-space-md"},(0,n.createElement)("h2",{className:"gv-title gv-text-bold gv-text-lg"},g?.featureOverviewHeading||e.i18n?.featureOverviewHeading||"Core features overview"),(0,n.createElement)("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-2 gv-desk-lg-grid-cols-3"},J.map((e,t)=>(0,n.createElement)("div",{className:"gv-item gv-stack-space-sm",key:t},(0,n.createElement)("h3",{className:"gv-title gv-text-bold gv-text-lg"},e.name),(0,n.createElement)("p",{className:"gv-text-sm"},e.desc))))))));return r?(0,i.createPortal)(Y,document.body):Y}}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,r),o.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.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})};var n={};(()=>{"use strict";r.r(n);var e=r(1609),t=r(5795),i=r.n(t),o=r(5771),s=(r(5036),r(108));document.addEventListener("DOMContentLoaded",()=>{const t=document.getElementById("marketplace-root");if(t){const n=window.marketplaceConfig||{};n.locale&&Promise.resolve().then(r.bind(r,2635)).then(({default:e})=>{e.changeLanguage(n.locale)});const a=(0,s.u)(n.wpVersion,"6.2");"function"==typeof i().createRoot&&a?i().createRoot(t).render((0,e.createElement)(o.A,{...n})):i().render((0,e.createElement)(o.A,{...n}),t)}})})(),window.MarketPlaceWP=n})(); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/frontend/build/index.js.map b/frontend/build/index.js.map deleted file mode 100644 index 9dd08b6..0000000 --- a/frontend/build/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","mappings":"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","sources":["webpack://MarketPlaceWP/./src/utils/wpVersionHelper.js","webpack://MarketPlaceWP/./src/utils/priceFormatter.js","webpack://MarketPlaceWP/./src/components/WpVersionErrorState.jsx","webpack://MarketPlaceWP/./src/components/PluginActions.jsx","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/context.js","webpack://MarketPlaceWP/external window \"React\"","webpack://MarketPlaceWP/./src/components/ErrorState.jsx","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/initReactI18next.js","webpack://MarketPlaceWP/./node_modules/i18next/dist/esm/i18next.js","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/unescape.js","webpack://MarketPlaceWP/./src/utils/redirectUrlHelper.js","webpack://MarketPlaceWP/./src/components/FeaturedCarousel.jsx","webpack://MarketPlaceWP/./src/components/LoadingOverlay.jsx","webpack://MarketPlaceWP/./node_modules/html-parse-stringify/dist/html-parse-stringify.module.js","webpack://MarketPlaceWP/./src/components/normalised-plugins.jsx","webpack://MarketPlaceWP/./src/components/SuccessNotice.jsx","webpack://MarketPlaceWP/./src/components/ProductDetail.jsx","webpack://MarketPlaceWP/./src/components/ErrorToast.jsx","webpack://MarketPlaceWP/./src/components/MarketPlace.jsx","webpack://MarketPlaceWP/./node_modules/void-elements/index.js","webpack://MarketPlaceWP/./src/i18n/index.js","webpack://MarketPlaceWP/./src/MarketplaceApp.jsx","webpack://MarketPlaceWP/external window \"ReactDOM\"","webpack://MarketPlaceWP/./src/components/ProductBanner.jsx","webpack://MarketPlaceWP/./node_modules/@group.one/gravity/dist/index.es.js","webpack://MarketPlaceWP/./node_modules/mixpanel-browser/dist/mixpanel.module.js","webpack://MarketPlaceWP/./src/utils/mixpanelTracking.js","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/defaults.js","webpack://MarketPlaceWP/./src/context/MarketplaceContext.jsx","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/useTranslation.js","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/i18nInstance.js","webpack://MarketPlaceWP/./node_modules/react-i18next/dist/es/utils.js","webpack://MarketPlaceWP/./src/components/ProductDetailRankMath.jsx","webpack://MarketPlaceWP/webpack/bootstrap","webpack://MarketPlaceWP/webpack/runtime/compat get default export","webpack://MarketPlaceWP/webpack/runtime/define property getters","webpack://MarketPlaceWP/webpack/runtime/hasOwnProperty shorthand","webpack://MarketPlaceWP/webpack/runtime/make namespace object","webpack://MarketPlaceWP/./src/index.jsx"],"sourcesContent":["export const isWpVersionSupported = (version, minVersion) => {\n if (!version) return true;\n const v1 = String(version).split('.');\n const v2 = String(minVersion).split('.');\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const num1 = parseInt(v1[i] || 0, 10);\n const num2 = parseInt(v2[i] || 0, 10);\n if (num1 > num2) return true;\n if (num1 < num2) return false;\n }\n return true;\n};\n","/**\n * Currency symbol mapping - scalable for future currencies\n */\nconst CURRENCY_SYMBOLS = {\n 'EUR': '€',\n 'USD': '$',\n 'GBP': '£',\n 'DKK': 'kr',\n 'NOK': 'kr',\n 'SEK': 'kr',\n // Add more currencies here as needed\n // 'JPY': '¥',\n};\n\n/**\n * Currencies that display the symbol AFTER the amount (e.g., \"79.00 kr\")\n * Most European currencies like EUR, USD, GBP display before, but Nordic currencies display after\n */\nconst CURRENCIES_WITH_POST_SYMBOL = ['DKK', 'SEK', 'NOK'];\n\n/**\n * Gets the currency symbol for a given currency code\n * @param {string} currencyCode - The currency code (e.g., 'EUR', 'USD')\n * @returns {string} - The currency symbol or the code itself as fallback\n */\nconst getCurrencySymbol = (currencyCode) => {\n return CURRENCY_SYMBOLS[currencyCode] || currencyCode;\n};\n\n/**\n * Formats price with currency symbol in the correct position\n * @param {string} amount - The formatted amount\n * @param {string} symbol - The currency symbol\n * @param {string} currencyCode - The currency code\n * @returns {string} - Formatted price with symbol in correct position\n */\nconst formatPriceWithSymbol = (amount, symbol, currencyCode) => {\n if (CURRENCIES_WITH_POST_SYMBOL.includes(currencyCode)) {\n return `${amount} ${symbol}`;\n }\n return `${symbol} ${amount}`;\n};\n\n/**\n * Extracts and formats the full price from plugin.prices array\n * @param {Object} plugin - The plugin object containing prices array\n * @returns {string|null} - Formatted full price with currency symbol or null if not found\n */\nexport const getFullPrice = (plugin) => {\n if (plugin.prices && Array.isArray(plugin.prices) && plugin.prices.length > 0) {\n const fullPrice = plugin.prices.find(p => p.priceType === 'full');\n if (fullPrice && fullPrice.amount && fullPrice.currency) {\n const symbol = getCurrencySymbol(fullPrice.currency);\n const formattedAmount = Number(fullPrice.amount).toFixed(2);\n return formatPriceWithSymbol(formattedAmount, symbol, fullPrice.currency);\n }\n }\n return null;\n};\n\n/**\n * Extracts and formats the rebate price from plugin.prices array\n * @param {Object} plugin - The plugin object containing prices array\n * @returns {string|null} - Formatted rebate price with currency symbol or null if not found\n */\nexport const getRebatePrice = (plugin) => {\n if (plugin.prices && Array.isArray(plugin.prices) && plugin.prices.length > 0) {\n const rebatePrice = plugin.prices.find(p => p.priceType === 'rebate');\n if (rebatePrice && rebatePrice.amount !== undefined && rebatePrice.amount !== null && rebatePrice.currency) {\n const symbol = getCurrencySymbol(rebatePrice.currency);\n const formattedAmount = Number(rebatePrice.amount).toFixed(2);\n return formatPriceWithSymbol(formattedAmount, symbol, rebatePrice.currency);\n }\n }\n return null;\n};\n\n/**\n * Formats the price display for a plugin based on its license type\n * @param {Object} plugin - The plugin object containing price and license information\n * @param {string} freeLabel - Optional label for free plugins (defaults to 'Free')\n * @param {Object} uiI18n - Optional UI internationalization object containing labels\n * @returns {string} - Formatted price string ('Free', 'Symbol Amount', or blank)\n */\nexport const formatPluginPrice = (plugin, freeLabel = 'Free', uiI18n = null) => {\n const isFree = plugin.licenseType === \"free\";\n\n if (isFree) {\n return freeLabel;\n }\n\n // Handle new API format with prices array\n if (plugin.prices && Array.isArray(plugin.prices) && plugin.prices.length > 0) {\n // Check if there's a rebate price type for premium licenses\n const rebatePrice = plugin.prices.find(price => price.priceType === 'rebate');\n\n if (rebatePrice && plugin.licenseType === 'premium') {\n // If rebate amount is 0, display \"Free until renewal\"\n if (rebatePrice.amount === 0) {\n return uiI18n?.labels?.freeUntilRenewal || 'Free until renewal';\n }\n // If rebate amount is not 0, display \"amount until renewal\"\n if (rebatePrice.amount && rebatePrice.currency) {\n const symbol = getCurrencySymbol(rebatePrice.currency);\n const formattedAmount = Number(rebatePrice.amount).toFixed(2);\n const priceWithSymbol = formatPriceWithSymbol(formattedAmount, symbol, rebatePrice.currency);\n return `${priceWithSymbol} `;\n }\n }\n\n // If no rebate, find the full price (first active price, or use first price if isActive is not present)\n let priceToUse = plugin.prices.find(price => price.priceType === 'full' && (price.isActive === true || price.isActive === undefined));\n\n // Fallback: find any active price\n if (!priceToUse) {\n priceToUse = plugin.prices.find(price => price.isActive === true);\n }\n\n // If no price with isActive:true found, use first price (for formats without isActive)\n if (!priceToUse) {\n priceToUse = plugin.prices[0];\n }\n\n if (priceToUse && priceToUse.amount && priceToUse.currency) {\n const symbol = getCurrencySymbol(priceToUse.currency);\n // Format amount to 2 decimal places\n const formattedAmount = Number(priceToUse.amount).toFixed(2);\n return formatPriceWithSymbol(formattedAmount, symbol, priceToUse.currency);\n }\n }\n\n // Backward compatibility: Handle old format with priceCurrency and priceAmount\n if (plugin.priceCurrency && plugin.priceAmount) {\n const symbol = getCurrencySymbol(plugin.priceCurrency);\n // Format amount to 2 decimal places\n const formattedAmount = Number(plugin.priceAmount).toFixed(2);\n return formatPriceWithSymbol(formattedAmount, symbol, plugin.priceCurrency);\n }\n\n // Return blank for premium products without prices\n return '';\n};\n","import React from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\n\nexport default function WpVersionErrorState() {\n const { uiI18n } = useMarketplace();\n\n const handleUpdateClick = () => {\n window.location.href = typeof window !== \"undefined\" && window.marketplaceConfig?.wpConfig?.adminUrl\n ? `${window.marketplaceConfig.wpConfig.adminUrl}update-core.php`\n : \"/wp-admin/update-core.php\";\n };\n\n const updateText = (uiI18n?.notifications?.updateWPText)?.replace(\"{0}\", \"6.2\");\n\n return (\n
\n
\n
\n {uiI18n?.notifications?.updateWPTitle}\n
\n

\n {updateText}\n

\n \n {uiI18n?.updateWPButton}\n \n
\n
\n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { trackPluginAction, trackButtonClick } from \"../utils/mixpanelTracking\";\nimport { getPluginRedirectUrl, navigateToPluginUrl } from \"../utils/redirectUrlHelper\";\n\nexport default function PluginActions({ plugin }) {\n const {\n assetsBaseUrl,\n pluginInAction,\n subscriptionStatus,\n isCheckingSubscription,\n isOnecomBrand,\n handlePluginAction,\n uiI18n,\n isSpecialPlugin\n } = useMarketplace();\n\n // Get subscription status for this plugin from context\n const pluginSubscriptionStatus = subscriptionStatus[plugin.slug];\n const pluginIsCheckingSubscription = isCheckingSubscription[plugin.slug];\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/` : \"\";\n const handleClick = (action) => {\n // Check if brand is onecom, plugin is not installed, and slug is wp-rocket or rank-math-pro\n const isNotInstalled = !plugin.installed;\n\n if (isOnecomBrand && isSpecialPlugin(plugin.slug) && isNotInstalled && action === \"install\") {\n // Track install event with result: initiated for special plugins\n trackButtonClick({\n buttonName: 'Install',\n buttonAction: 'product_install',\n plugin: plugin,\n context: {\n action: action,\n result: 'initiated',\n }\n });\n\n // Dispatch custom event instead of calling handlePluginAction\n const event = new CustomEvent(\"onecom-plugin-provision\", {\n detail: {\n slug: plugin.slug,\n },\n bubbles: true,\n cancelable: true,\n composed: true\n });\n // Dispatch on document so listeners using document.addEventListener receive it\n document.dispatchEvent(event);\n return;\n }\n\n // Default behavior\n handlePluginAction(action, plugin, 'product_detail');\n };\n\n const handleSelectClick = () => {\n // Track the select button click\n trackButtonClick({\n buttonName: 'Select',\n buttonAction: 'subscribe_addon',\n plugin: plugin,\n });\n\n // Dispatch custom event for provisioning\n const event = new CustomEvent(\"onecom-subscribe-addon\", {\n detail: { slug: plugin.slug },\n bubbles: true,\n cancelable: true,\n composed: true\n });\n document.dispatchEvent(event);\n };\n\n const handleManage = () => {\n // Track the manage button click\n trackButtonClick({\n buttonName: 'Manage',\n buttonAction: 'manage_product',\n context: {\n product_slug: plugin.slug,\n product_name: plugin.name,\n has_redirect_url: !!(plugin.redirectUrl && plugin.redirectUrl.trim() !== ''),\n has_onboarding_url: !!(plugin.onboardingUrl && plugin.onboardingUrl.trim() !== ''),\n }\n });\n\n const redirectUrl = getPluginRedirectUrl(plugin, false);\n navigateToPluginUrl(redirectUrl);\n };\n\n // Helper function to replace {0} with plugin name\n const formatMessage = (message, pluginName) => {\n if (!message) return '';\n return message.replace('{0}', pluginName || '');\n };\n\n const pluginName = plugin?.name || '';\n\n // Check if we should show \"Select\" button instead of install/activate\n const shouldShowSelectButton = isOnecomBrand && isSpecialPlugin(plugin.slug) && !plugin.installed && pluginSubscriptionStatus === false;\n\n // Check if we should show skeleton loader (while checking subscription for special plugins)\n // Show skeleton if: checking OR status is undefined (not yet fetched)\n const shouldShowSkeleton = isOnecomBrand && isSpecialPlugin(plugin.slug) && !plugin.installed &&\n (pluginIsCheckingSubscription || pluginSubscriptionStatus === undefined);\n\n return (\n
\n {shouldShowSkeleton ? (\n
\n ) : shouldShowSelectButton ? (\n \n Select\n \n ) : plugin.installed ? (\n plugin.activated ? (\n \n {uiI18n?.labels?.manage || 'Manage'}\n \n \n ) : (\n handleClick(\"activate\")}\n >\n {pluginInAction[plugin.slug]\n ? formatMessage(uiI18n?.notifications?.activating || 'Activating {0}', pluginName)\n : (uiI18n?.activateButton || plugin.i18n?.activateButton || 'Activate')}\n \n )\n ) : (\n handleClick(\"install\")}\n >\n {pluginInAction[plugin.slug]\n ? formatMessage(uiI18n?.notifications?.installing || 'Installing {0}', pluginName)\n : (uiI18n?.installButton || plugin.i18n?.installButton || 'Install')}\n \n )}\n
\n );\n}\n","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport const composeInitialProps = ForComponent => async ctx => {\n const componentsInitialProps = (await ForComponent.getInitialProps?.(ctx)) ?? {};\n const i18nInitialProps = getInitialProps();\n return {\n ...componentsInitialProps,\n ...i18nInitialProps\n };\n};\nexport const getInitialProps = () => {\n const i18n = getI18n();\n const namespaces = i18n.reportNamespaces?.getUsedNamespaces() ?? [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n};","module.exports = window[\"React\"];","import React from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function ErrorState() {\n const { assetsBaseUrl } = useMarketplace();\n const { t } = useTranslation();\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/icons/` : \"\";\n\n const handleRefresh = () => {\n window.location.reload();\n };\n\n return (\n
\n
\n
{t('ui.notifications.couldNotLoad')}
\n

{t('ui.notifications.refreshPage')}

\n \n {t('ui.button.refreshPage')}\n \n
\n
\n );\n}\n","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n type: '3rdParty',\n init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};","const isString = obj => typeof obj === 'string';\nconst defer = () => {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n};\nconst makeString = object => {\n if (object == null) return '';\n return '' + object;\n};\nconst copy = (a, s, t) => {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n const stack = !isString(path) ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper(object)) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper(object)) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n};\nconst setPath = (object, path, newValue) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n if (!Object.prototype.hasOwnProperty.call(obj, k)) return undefined;\n return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nconst escape = data => {\n if (isString(data)) {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n};\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n};\nconst deepFind = (obj, path, keySeparator = '.') => {\n if (!obj) return undefined;\n if (obj[path]) {\n if (!Object.prototype.hasOwnProperty.call(obj, path)) return undefined;\n return obj[path];\n }\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n};\nconst getCleanedCode = code => code?.replace('_', '-');\n\nconst consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n console?.[type]?.apply?.(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger, options = {}) {\n this.init(concreteLogger, options);\n }\n init(concreteLogger, options = {}) {\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log(...args) {\n return this.forward(args, 'log', '', true);\n }\n warn(...args) {\n return this.forward(args, 'warn', '', true);\n }\n error(...args) {\n return this.forward(args, 'error', '');\n }\n deprecate(...args) {\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n emit(event, ...args) {\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer.apply(observer, [event, ...args]);\n }\n });\n }\n }\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data, options = {\n ns: ['translation'],\n defaultNS: 'translation'\n }) {\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key, options = {}) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (isString(key) && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.indexOf('.') > -1) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || !isString(key)) return result;\n return deepFind(this.data?.[lng]?.[ns], key, keySeparator);\n }\n addResource(lng, ns, key, value, options = {\n silent: false\n }) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources, options = {\n silent: false\n }) {\n for (const m in resources) {\n if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite, options = {\n silent: false,\n skipCopy: false\n }) {\n let path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n value = this.processors[processor]?.process(value, key, options, translator) ?? value;\n });\n return value;\n }\n};\n\nconst PATH_KEY = Symbol('i18next/PATH_KEY');\nfunction createProxy() {\n const state = [];\n const handler = Object.create(null);\n let proxy;\n handler.get = (target, key) => {\n proxy?.revoke?.();\n if (key === PATH_KEY) return state;\n state.push(key);\n proxy = Proxy.revocable(target, handler);\n return proxy.proxy;\n };\n return Proxy.revocable(Object.create(null), handler).proxy;\n}\nfunction keysFromSelector(selector, opts) {\n const {\n [PATH_KEY]: path\n } = selector(createProxy());\n return path.join(opts?.keySeparator ?? '.');\n}\n\nconst checkedLoadedFor = {};\nconst shouldHandleAsObject = res => !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\nclass Translator extends EventEmitter {\n constructor(services, options = {}) {\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key, o = {\n interpolation: {}\n }) {\n const opt = {\n ...o\n };\n if (key == null) return false;\n const resolved = this.resolve(key, opt);\n return resolved?.res !== undefined;\n }\n extractFromKey(key, opt) {\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n let namespaces = opt.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !opt.keySeparator && !this.options.userDefinedNsSeparator && !opt.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n translate(keys, o, lastKey) {\n let opt = typeof o === 'object' ? {\n ...o\n } : o;\n if (typeof opt !== 'object' && this.options.overloadTranslationOptionHandler) {\n opt = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof opt === 'object') opt = {\n ...opt\n };\n if (!opt) opt = {};\n if (keys == null) return '';\n if (typeof keys === 'function') keys = keysFromSelector(keys, {\n ...this.options,\n ...opt\n });\n if (!Array.isArray(keys)) keys = [String(keys)];\n const returnDetails = opt.returnDetails !== undefined ? opt.returnDetails : this.options.returnDetails;\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], opt);\n const namespace = namespaces[namespaces.length - 1];\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const lng = opt.lng || this.language;\n const appendNamespaceToCIMode = opt.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng?.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, opt);\n let res = resolved?.res;\n const resUsedKey = resolved?.usedKey || key;\n const resExactUsedKey = resolved?.exactUsedKey || key;\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = opt.joinArrays !== undefined ? opt.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const hasDefaultValue = Translator.hasDefaultValue(opt);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, opt) : '';\n const defaultValueSuffixOrdinalFallback = opt.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const defaultValue = needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] || opt[`defaultValue${defaultValueSuffix}`] || opt[`defaultValue${defaultValueSuffixOrdinalFallback}`] || opt.defaultValue;\n let resForObjHndl = res;\n if (handleAsObjectInI18nFormat && !res && hasDefaultValue) {\n resForObjHndl = defaultValue;\n }\n const handleAsObject = shouldHandleAsObject(resForObjHndl);\n const resType = Object.prototype.toString.apply(resForObjHndl);\n if (handleAsObjectInI18nFormat && resForObjHndl && handleAsObject && noObject.indexOf(resType) < 0 && !(isString(joinArrays) && Array.isArray(resForObjHndl))) {\n if (!opt.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, resForObjHndl, {\n ...opt,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = Array.isArray(resForObjHndl);\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in resForObjHndl) {\n if (Object.prototype.hasOwnProperty.call(resForObjHndl, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n if (hasDefaultValue && !res) {\n copy[m] = this.translate(deepKey, {\n ...opt,\n defaultValue: shouldHandleAsObject(defaultValue) ? defaultValue[m] : undefined,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n } else {\n copy[m] = this.translate(deepKey, {\n ...opt,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n }\n if (copy[m] === deepKey) copy[m] = resForObjHndl[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, opt, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = opt.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...opt,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, opt.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(opt.lng || this.language);\n } else {\n lngs.push(opt.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, opt);\n } else if (this.backendConnector?.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, opt);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, opt);\n if (needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, opt[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, opt, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) {\n res = `${namespace}${nsSeparator}${key}`;\n }\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}${nsSeparator}${key}` : key, usedDefault ? res : undefined, opt);\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, opt, resolved, lastKey) {\n if (this.i18nFormat?.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...opt\n }, opt.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!opt.skipInterpolation) {\n if (opt.interpolation) this.interpolator.init({\n ...opt,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...opt.interpolation\n }\n }\n });\n const skipOnVariables = isString(res) && (opt?.interpolation?.skipOnVariables !== undefined ? opt.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = opt.replace && !isString(opt.replace) ? opt.replace : opt;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, opt.lng || this.language || resolved.usedLng, opt);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) opt.nest = false;\n }\n if (!opt.lng && resolved && resolved.res) opt.lng = this.language || resolved.usedLng;\n if (opt.nest !== false) res = this.interpolator.nest(res, (...args) => {\n if (lastKey?.[0] === args[0] && !opt.context) {\n this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return this.translate(...args, key);\n }, opt);\n if (opt.interpolation) this.interpolator.reset();\n }\n const postProcess = opt.postProcess || this.options.postProcess;\n const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n if (res != null && postProcessorNames?.length && opt.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(opt)\n },\n ...opt\n } : opt, this);\n }\n return res;\n }\n resolve(keys, opt = {}) {\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (isString(keys)) keys = [keys];\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, opt);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const needsContextHandling = opt.context !== undefined && (isString(opt.context) || typeof opt.context === 'number') && opt.context !== '';\n const codes = opt.lngs ? opt.lngs : this.languageUtils.toResolveHierarchy(opt.lng || this.language, opt.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils?.hasLoadedNamespace && !this.utils?.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat?.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, opt);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, opt.count, opt);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator || '_'}${opt.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, opt);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key, options = {}) {\n if (this.i18nFormat?.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails(options = {}) {\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && !isString(options.replace);\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (isString(code) && code.indexOf('-') > -1) {\n let formattedCode;\n try {\n formattedCode = Intl.getCanonicalLocales(code)[0];\n } catch (e) {}\n if (formattedCode && this.options.lowerCaseLng) {\n formattedCode = formattedCode.toLowerCase();\n }\n if (formattedCode) return formattedCode;\n if (this.options.lowerCaseLng) {\n return code.toLowerCase();\n }\n return code;\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngScOnly = this.getScriptPartFromCode(code);\n if (this.isSupportedCode(lngScOnly)) return found = lngScOnly;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf('-') > 0 && lngOnly.indexOf('-') < 0 && supportedLng.substring(0, supportedLng.indexOf('-')) === lngOnly) return supportedLng;\n if (supportedLng.indexOf(lngOnly) === 0 && lngOnly.length > 1) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (isString(fallbacks)) fallbacks = [fallbacks];\n if (Array.isArray(fallbacks)) return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes((fallbackCode === false ? [] : fallbackCode) || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (isString(code) && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (isString(code)) {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nconst dummyRule = {\n select: count => count === 1 ? 'one' : 'other',\n resolvedOptions: () => ({\n pluralCategories: ['one', 'other']\n })\n};\nclass PluralResolver {\n constructor(languageUtils, options = {}) {\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.pluralRulesCache = {};\n }\n addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n clearCache() {\n this.pluralRulesCache = {};\n }\n getRule(code, options = {}) {\n const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n const type = options.ordinal ? 'ordinal' : 'cardinal';\n const cacheKey = JSON.stringify({\n cleanedCode,\n type\n });\n if (cacheKey in this.pluralRulesCache) {\n return this.pluralRulesCache[cacheKey];\n }\n let rule;\n try {\n rule = new Intl.PluralRules(cleanedCode, {\n type\n });\n } catch (err) {\n if (!Intl) {\n this.logger.error('No Intl support, please use an Intl polyfill!');\n return dummyRule;\n }\n if (!code.match(/-|_/)) return dummyRule;\n const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n rule = this.getRule(lngPart, options);\n }\n this.pluralRulesCache[cacheKey] = rule;\n return rule;\n }\n needsPlural(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n return rule?.resolvedOptions().pluralCategories.length > 1;\n }\n getPluralFormsOfKey(code, key, options = {}) {\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n if (!rule) return [];\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n getSuffix(code, count, options = {}) {\n const rule = this.getRule(code, options);\n if (rule) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return this.getSuffix('dev', count, options);\n }\n}\n\nconst deepFindWithDefaults = (data, defaultData, key, keySeparator = '.', ignoreJSONStructure = true) => {\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && isString(key)) {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n constructor(options = {}) {\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options?.interpolation?.format || (value => value);\n this.init(options);\n }\n init(options = {}) {\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const {\n escape: escape$1,\n escapeValue,\n useRawValueToEscape,\n prefix,\n prefixEscaped,\n suffix,\n suffixEscaped,\n formatSeparator,\n unescapeSuffix,\n unescapePrefix,\n nestingPrefix,\n nestingPrefixEscaped,\n nestingSuffix,\n nestingSuffixEscaped,\n nestingOptionsSeparator,\n maxReplaces,\n alwaysFormat\n } = options.interpolation;\n this.escape = escape$1 !== undefined ? escape$1 : escape;\n this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n this.formatSeparator = formatSeparator || ',';\n this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix || '';\n this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n this.maxReplaces = maxReplaces || 1000;\n this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp?.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}((?:[^()\"']+|\"[^\"]*\"|'[^']*'|\\\\((?:[^()]|\"[^\"]*\"|'[^']*')*\\\\))*?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n const handleFormat = key => {\n if (key.indexOf(this.formatSeparator) < 0) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n const missingInterpolationHandler = options?.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = isString(temp) ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (!isString(value) && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc, options = {}) {\n let match;\n let value;\n let clonedOptions;\n const handleHasOptions = (key, inheritedOptions) => {\n const sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n const c = key.split(new RegExp(`${sep}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if ((matchedSingleQuotes?.length ?? 0) % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n if (clonedOptions.defaultValue && clonedOptions.defaultValue.indexOf(this.prefix) > -1) delete clonedOptions.defaultValue;\n return key;\n };\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n const keyEndIndex = /{.*}/.test(match[1]) ? match[1].lastIndexOf('}') + 1 : match[1].indexOf(this.formatSeparator);\n if (keyEndIndex !== -1) {\n formatters = match[1].slice(keyEndIndex).split(this.formatSeparator).map(elem => elem.trim()).filter(Boolean);\n match[1] = match[1].slice(0, keyEndIndex);\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && !isString(value)) return value;\n if (!isString(value)) value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (formatters.length) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nconst parseFormatStr = formatStr => {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (opt) {\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n const trimmedKey = key.trim();\n if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n if (val === 'false') formatOptions[trimmedKey] = false;\n if (val === 'true') formatOptions[trimmedKey] = true;\n if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n }\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n};\nconst createCachedFormatter = fn => {\n const cache = {};\n return (v, l, o) => {\n let optForCache = o;\n if (o && o.interpolationkey && o.formatParams && o.formatParams[o.interpolationkey] && o[o.interpolationkey]) {\n optForCache = {\n ...optForCache,\n [o.interpolationkey]: undefined\n };\n }\n const key = l + JSON.stringify(optForCache);\n let frm = cache[key];\n if (!frm) {\n frm = fn(getCleanedCode(l), o);\n cache[key] = frm;\n }\n return frm(v);\n };\n};\nconst createNonCachedFormatter = fn => (v, l, o) => fn(getCleanedCode(l), o)(v);\nclass Formatter {\n constructor(options = {}) {\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.init(options);\n }\n init(services, options = {\n interpolation: {}\n }) {\n this.formatSeparator = options.interpolation.formatSeparator || ',';\n const cf = options.cacheInBuiltFormats ? createCachedFormatter : createNonCachedFormatter;\n this.formats = {\n number: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: cf((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: cf((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: cf((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng, options = {}) {\n const formats = format.split(this.formatSeparator);\n if (formats.length > 1 && formats[0].indexOf('(') > 1 && formats[0].indexOf(')') < 0 && formats.find(f => f.indexOf(')') > -1)) {\n const lastIndex = formats.findIndex(f => f.indexOf(')') > -1);\n formats[0] = [formats[0], ...formats.splice(1, lastIndex)].join(this.formatSeparator);\n }\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options?.formatParams?.[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nconst removePending = (q, name) => {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n};\nclass Connector extends EventEmitter {\n constructor(backend, store, services, options = {}) {\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n this.backend?.init?.(services, options.backend, options);\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (!err && data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n if (err && data) this.state[name] = 0;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName, tried = 0, wait = this.retryTimeout, callback) {\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces, options = {}, callback) {\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n if (isString(namespaces)) namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name, prefix = '') {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate, options = {}, clb = () => {}) {\n if (this.services?.utils?.hasLoadedNamespace && !this.services?.utils?.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend?.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nconst get = () => ({\n debug: false,\n initAsync: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: args => {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (isString(args[1])) ret.defaultValue = args[1];\n if (isString(args[2])) ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: value => value,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n },\n cacheInBuiltFormats: true\n});\nconst transformOptions = options => {\n if (isString(options.ns)) options.ns = [options.ns];\n if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs?.indexOf?.('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n if (typeof options.initImmediate === 'boolean') options.initAsync = options.initImmediate;\n return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n};\nclass I18n extends EventEmitter {\n constructor(options = {}, callback) {\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initAsync) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init(options = {}, callback) {\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (options.defaultNS == null && options.ns) {\n if (isString(options.ns)) {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n const createClassOnDemand = ClassOrObject => {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n };\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n const usingLegacyFormatFunction = this.options.interpolation.format && this.options.interpolation.format !== defOpts.interpolation.format;\n if (usingLegacyFormatFunction) {\n this.logger.deprecate(`init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting`);\n }\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n if (s.formatter.init) s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = (...args) => this.store[fcName](...args);\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = (...args) => {\n this.store[fcName](...args);\n return this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (this.languages && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initAsync) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language, callback = noop) {\n let usedCallback = callback;\n const usedLng = isString(language) ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng?.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n this.options.preload?.forEach?.(l => append(l));\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (typeof lngs === 'function') {\n callback = lngs;\n lngs = undefined;\n }\n if (typeof ns === 'function') {\n callback = ns;\n ns = undefined;\n }\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n if (!this.resolvedLanguage && this.languages.indexOf(l) < 0 && this.store.hasLanguageSomeTranslations(l)) {\n this.resolvedLanguage = l;\n this.languages.unshift(l);\n }\n }\n changeLanguage(lng, callback) {\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n if (this.isLanguageChangingTo === lng) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n }\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve((...args) => this.t(...args));\n if (callback) callback(err, (...args) => this.t(...args));\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const fl = isString(lngs) ? lngs : lngs && lngs[0];\n const l = this.store.hasLanguageSomeTranslations(fl) ? fl : this.services.languageUtils.getBestMatchFromCodes(isString(lngs) ? [lngs] : lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n this.services.languageDetector?.cacheUserLanguage?.(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix) {\n const fixedT = (key, opts, ...rest) => {\n let o;\n if (typeof opts !== 'object') {\n o = this.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n o = {\n ...opts\n };\n }\n o.lng = o.lng || fixedT.lng;\n o.lngs = o.lngs || fixedT.lngs;\n o.ns = o.ns || fixedT.ns;\n if (o.keyPrefix !== '') o.keyPrefix = o.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const keySeparator = this.options.keySeparator || '.';\n let resultKey;\n if (o.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => {\n if (typeof k === 'function') k = keysFromSelector(k, {\n ...this.options,\n ...opts\n });\n return `${o.keyPrefix}${keySeparator}${k}`;\n });\n } else {\n if (typeof key === 'function') key = keysFromSelector(key, {\n ...this.options,\n ...opts\n });\n resultKey = o.keyPrefix ? `${o.keyPrefix}${keySeparator}${key}` : key;\n }\n return this.t(resultKey, o);\n };\n if (isString(lng)) {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t(...args) {\n return this.translator?.translate(...args);\n }\n exists(...args) {\n return this.translator?.exists(...args);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns, options = {}) {\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 0 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (isString(ns)) ns = [ns];\n ns.forEach(n => {\n if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (isString(lngs)) lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0 && this.services.languageUtils.isSupportedCode(lng));\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages?.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n try {\n const l = new Intl.Locale(lng);\n if (l && l.getTextInfo) {\n const ti = l.getTextInfo();\n if (ti && ti.direction) return ti.direction;\n }\n } catch (e) {}\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services?.languageUtils || new LanguageUtil(get());\n if (lng.toLowerCase().indexOf('-latn') > 1) return 'ltr';\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance(options = {}, callback) {\n return new I18n(options, callback);\n }\n cloneInstance(options = {}, callback = noop) {\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n const clonedData = Object.keys(this.store.data).reduce((prev, l) => {\n prev[l] = {\n ...this.store.data[l]\n };\n prev[l] = Object.keys(prev[l]).reduce((acc, n) => {\n acc[n] = {\n ...prev[l][n]\n };\n return acc;\n }, prev[l]);\n return prev;\n }, {});\n clone.store = new ResourceStore(clonedData, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', (event, ...args) => {\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, keysFromSelector as keyFromSelector, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","/**\n * Get the redirect URL for a plugin based on its configuration and state.\n *\n * @param {Object} plugin The plugin object from API.\n * @param {boolean} forceOnboarding Whether to prioritize onboardingUrl for all plugins (default: false).\n * @returns {string} The resolved redirect path.\n */\nexport const getPluginRedirectUrl = (plugin, forceOnboarding = false) => {\n let redirectUrl = plugin.redirectUrl;\n\n const isRankMath = plugin.slug === 'seo-by-rank-math' || plugin.slug === 'seo-by-rank-math-pro';\n const hasOnboardingUrl = plugin.onboardingUrl && typeof plugin.onboardingUrl === 'string' && plugin.onboardingUrl.trim() !== '';\n\n if (isRankMath) {\n // Safe access to rankMathRegistrationSkip config\n const wpConfig = window.marketplaceConfig?.wpConfig;\n const rankMathRegistrationSkip = wpConfig ? wpConfig.rankMathRegistrationSkip === true : false;\n\n if (!rankMathRegistrationSkip && hasOnboardingUrl) {\n redirectUrl = plugin.onboardingUrl;\n }\n } else if (forceOnboarding && hasOnboardingUrl) {\n redirectUrl = plugin.onboardingUrl;\n }\n\n return redirectUrl;\n};\n\n/**\n * Navigates to the plugin's page in WordPress admin.\n *\n * @param {string} redirectPath The relative path to redirect to.\n */\nexport const navigateToPluginUrl = (redirectPath) => {\n if (redirectPath && redirectPath.trim() !== '') {\n // Get the admin URL from config (provided by PHP)\n const adminUrl = typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.wpConfig?.adminUrl;\n\n if (adminUrl) {\n // Construct full URL using adminUrl from PHP config\n // adminUrl is like \"https://example.com/wp-admin/\"\n // redirectUrl comes as \"wp-admin\\/admin.php?page=termly\" (JSON unescapes \\/ to /)\n // Strip \"wp-admin/\" prefix from redirectUrl if present to avoid duplication\n let cleanPath = redirectPath;\n if (cleanPath.startsWith('wp-admin/')) {\n cleanPath = cleanPath.substring('wp-admin/'.length);\n }\n const fullUrl = `${adminUrl}${cleanPath}`;\n window.location.href = fullUrl;\n } else {\n // Fallback: use window.location.origin if adminUrl not available\n const siteUrl = window.location.origin;\n const fullUrl = `${siteUrl}/${redirectPath}`;\n window.location.href = fullUrl;\n }\n return;\n }\n\n // Fallback to plugins page\n window.location.href = '/wp-admin/plugins.php';\n};\n","import React, { useState, useEffect } from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { formatPluginPrice } from \"../utils/priceFormatter\";\n\nexport default function FeaturedCarousel({ loading = false }) {\n const { plugins, assetsBaseUrl,uiI18n } = useMarketplace();\n const [currentIndex, setCurrentIndex] = useState(0);\n const [slidesPerView, setSlidesPerView] = useState(2);\n\n // Get active plugin slugs from WordPress config\n const activePlugins = typeof window !== \"undefined\" && window.marketplaceConfig?.activePlugins\n ? window.marketplaceConfig.activePlugins\n : [];\n\n // Get active theme author from WordPress config\n const activeThemeAuthor = typeof window !== \"undefined\" && window.marketplaceConfig?.activeThemeAuthor\n ? window.marketplaceConfig.activeThemeAuthor\n : \"\";\n\n useEffect(() => {\n const updateSlidesPerView = () => {\n if (window.innerWidth > 1024) {\n setSlidesPerView(2); // Desktop: show 2 slides\n } else if (window.innerWidth >= 600) {\n setSlidesPerView(1); // Tablet: show 2 slides\n } else {\n setSlidesPerView(1); // Mobile: show 1 slide\n }\n };\n\n updateSlidesPerView();\n window.addEventListener('resize', updateSlidesPerView);\n return () => window.removeEventListener('resize', updateSlidesPerView);\n }, []);\n\n // Helper function to check if a plugin should be visible based on its rules\n const shouldShowPlugin = (plugin) => {\n // If plugin has no rules, show it by default\n if (!plugin.rules) {\n return true;\n }\n\n // Check mustHavePlugins rule\n if (plugin.rules.mustHavePlugins && Array.isArray(plugin.rules.mustHavePlugins)) {\n // If the array is empty, no requirements exist, so show the plugin\n if (plugin.rules.mustHavePlugins.length === 0) {\n return true;\n }\n\n // Plugin should be visible if ANY of the required plugins is active\n const hasRequiredPlugin = plugin.rules.mustHavePlugins.some(requiredSlug =>\n activePlugins.includes(requiredSlug)\n );\n\n // If mustHavePlugins rule exists but no required plugin is active, hide the plugin\n if (!hasRequiredPlugin) {\n return false;\n }\n }\n\n // Check mustHaveThemesByAuthor rule\n if (plugin.rules.mustHaveThemesByAuthor && typeof plugin.rules.mustHaveThemesByAuthor === 'string') {\n // Plugin should be visible only if the active theme author matches the required author\n const requiredAuthor = plugin.rules.mustHaveThemesByAuthor;\n if (activeThemeAuthor !== requiredAuthor) {\n return false;\n }\n }\n\n // Add support for other rule types here in the future\n // For now, if all rules pass (or don't exist), show the plugin\n return true;\n };\n\n // Check activation status of Rank Math plugins\n const rankMathActivated = plugins.find(p => p.slug === \"seo-by-rank-math\")?.activated === true;\n const rankMathProActivated = plugins.find(p => p.slug === \"seo-by-rank-math-pro\")?.activated === true;\n\n // Filter featured plugins that are not active, pass rules check, and handle Rank Math logic\n const featuredPlugins = plugins.filter(plugin => {\n // Skip activated plugins\n if (plugin.activated === true || plugin.featured !== true) {\n return false;\n }\n\n // Handle Rank Math plugin visibility\n if (plugin.slug === \"seo-by-rank-math\") {\n // Show seo-by-rank-math only if BOTH plugins are NOT activated\n return !rankMathActivated && !rankMathProActivated && shouldShowPlugin(plugin);\n }\n\n if (plugin.slug === \"seo-by-rank-math-pro\") {\n // Show seo-by-rank-math-pro only if seo-by-rank-math IS activated\n return rankMathActivated && shouldShowPlugin(plugin);\n }\n\n // For all other plugins, apply normal filtering\n return shouldShowPlugin(plugin);\n }).sort((a, b) => {\n const orderA = a.displayOrder !== undefined ? parseInt(a.displayOrder) : Infinity;\n const orderB = b.displayOrder !== undefined ? parseInt(b.displayOrder) : Infinity;\n return orderA - orderB;\n });\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/icons/` : \"\";\n\n const totalSlides = featuredPlugins.length;\n const maxIndex = Math.max(0, totalSlides - slidesPerView);\n\n const goToPrevious = () => {\n if (currentIndex > 0) {\n setCurrentIndex(prev => prev - 1);\n }\n };\n\n const goToNext = () => {\n if (currentIndex < maxIndex) {\n setCurrentIndex(prev => prev + 1);\n }\n };\n\n // Show skeleton loaders while loading\n if (loading) {\n return (\n
\n
\n
\n
\n\n
\n \n {/* Generate 2 skeleton carousel slides */}\n {[...Array(slidesPerView)].map((_, index) => (\n \n
\n
\n {/* Badge skeleton */}\n
\n\n {/* Title skeleton */}\n
\n\n {/* Description skeletons */}\n
\n
\n
\n\n {/* Footer with button and price skeletons */}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ))}\n \n \n
\n );\n }\n\n // If no featured plugins, don't render anything\n if (!featuredPlugins || featuredPlugins.length === 0) {\n return null;\n }\n\n const goToSlide = (index) => {\n setCurrentIndex(Math.min(index, maxIndex));\n };\n\n // Navigate to plugin detail page\n const handleReadMore = (plugin) => {\n if (typeof window !== \"undefined\") {\n const url = new URL(window.location.href);\n url.searchParams.set(\"plugin\", plugin.slug);\n window.history.pushState({}, \"\", url.toString());\n\n // Dispatch custom event to notify app of navigation\n window.dispatchEvent(new PopStateEvent('popstate'));\n }\n };\n\n return (\n
\n
\n
{uiI18n?.headings?.recommendedHeading}
\n
\n\n
\n \n {featuredPlugins.map((plugin, index) => {\n const title = plugin?.i18n?.featuredTitle;\n const description = plugin?.i18n?.featuredContent;\n const freeLabel = (plugin.i18n.freeTrialPeriod && plugin.i18n.freeTrialPeriod.trim() !== '')\n ? plugin.i18n.freeTrialPeriod\n : (uiI18n?.labels?.free || 'Free');\n const price = formatPluginPrice(plugin, freeLabel, uiI18n);\n const mainImage = plugin.bannerUrl || plugin.image || plugin.thumbnail || 'https://gravity.group.one/guide-images/product-image@2x.png';\n\n // Extract category name from plugin categories array\n const categoryObj = Array.isArray(plugin.categories) && plugin.categories.length\n ? (typeof plugin.categories[0] === 'object' ? plugin.categories[0] : { slug: String(plugin.categories[0]), title: String(plugin.categories[0]), description: null })\n : { slug: \"Others\", title: \"Others\", description: null };\n const categoryName = categoryObj.title || categoryObj.slug || \"Others\";\n\n return (\n \n
\n \n
{plugin?.name}
\n \n {title}\n \n

\n {description}\n

\n\n
\n handleReadMore(plugin)}\n className=\"gv-button gv-button-secondary gv-w-auto gv-flex-shrink-0\"\n >\n {uiI18n?.featuredCta}\n \n\n \n {price}\n {plugin.licenseType !== \"free\" && price && price !== freeLabel && price !== (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal') && /{uiI18n?.labels?.timeMonth}}\n \n
\n
\n
\n \n \n \n \n
\n \n \n );\n })}\n \n \n\n {/* Navigation Controls: Arrows + Dots */}\n {totalSlides > slidesPerView && (\n \n \n \"Previous\"\n \n\n \n {Array.from({ length: maxIndex + 1 }).map((_, index) => (\n goToSlide(index)}\n className=\"gv-carousel-dot\"\n style={{\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n border: 'none',\n background: currentIndex === index ? '#0066CC' : '#D0D0D0',\n cursor: 'pointer',\n padding: 0\n }}\n aria-label={`Go to slide ${index + 1}`}\n />\n ))}\n \n\n = maxIndex}\n className=\"gv-carousel-nav gv-carousel-nav-next\"\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: currentIndex >= maxIndex ? 'not-allowed' : 'pointer',\n opacity: currentIndex >= maxIndex ? 0.5 : 1\n }}\n aria-label=\"Next slide\"\n >\n \"Next\"\n \n \n )}\n
\n );\n}\n","import React from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\n\nexport default function LoadingOverlay() {\n const { loadingAction, loadingPlugin, assetsBaseUrl } = useMarketplace();\n\n // Don't show overlay if no action is in progress\n if (!loadingAction) {\n return null;\n }\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const spinnerSrc = `${assetBase}assets/images/spinner.svg`;\n\n return (\n
\n
\n \n

{loadingAction}

\n
\n
\n );\n}\n","import e from\"void-elements\";var t=/\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g;function n(n){var r={type:\"tag\",name:\"\",voidElement:!1,attrs:{},children:[]},i=n.match(/<\\/?([^\\s]+?)[/\\s>]/);if(i&&(r.name=i[1],(e[i[1]]||\"/\"===n.charAt(n.length-2))&&(r.voidElement=!0),r.name.startsWith(\"!--\"))){var s=n.indexOf(\"--\\x3e\");return{type:\"comment\",comment:-1!==s?n.slice(4,s):\"\"}}for(var a=new RegExp(t),c=null;null!==(c=a.exec(n));)if(c[0].trim())if(c[1]){var o=c[1].trim(),l=[o,\"\"];o.indexOf(\"=\")>-1&&(l=o.split(\"=\")),r.attrs[l[0]]=l[1],a.lastIndex--}else c[2]&&(r.attrs[c[2]]=c[3].trim().substring(1,c[3].length-1));return r}var r=/<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g,i=/^\\s*$/,s=Object.create(null);function a(e,t){switch(t.type){case\"text\":return e+t.content;case\"tag\":return e+=\"<\"+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+'=\"'+e[n]+'\"');return t.length?\" \"+t.join(\" \"):\"\"}(t.attrs):\"\")+(t.voidElement?\"/>\":\">\"),t.voidElement?e:e+t.children.reduce(a,\"\")+\"\";case\"comment\":return e+\"\\x3c!--\"+t.comment+\"--\\x3e\"}}var c={parse:function(e,t){t||(t={}),t.components||(t.components=s);var a,c=[],o=[],l=-1,m=!1;if(0!==e.indexOf(\"<\")){var u=e.indexOf(\"<\");c.push({type:\"text\",content:-1===u?e:e.substring(0,u)})}return e.replace(r,function(r,s){if(m){if(r!==\"\")return;m=!1}var u,f=\"/\"!==r.charAt(1),h=r.startsWith(\"\\x3c!--\"),p=s+r.length,d=e.charAt(p);if(h){var v=n(r);return l<0?(c.push(v),c):((u=o[l]).children.push(v),c)}if(f&&(l++,\"tag\"===(a=n(r)).type&&t.components[a.name]&&(a.type=\"component\",m=!0),a.voidElement||m||!d||\"<\"===d||a.children.push({type:\"text\",content:e.slice(p,e.indexOf(\"<\",p))}),0===l&&c.push(a),(u=o[l-1])&&u.children.push(a),o[l]=a),(!f||a.voidElement)&&(l>-1&&(a.voidElement||a.name===r.slice(2,-1))&&(l--,a=-1===l?c:o[l]),!m&&\"<\"!==d&&d)){u=-1===l?c:o[l].children;var x=e.indexOf(\"<\",p),g=e.slice(p,-1===x?void 0:x);i.test(g)&&(g=\" \"),(x>-1&&l+u.length>=0||\" \"!==g)&&u.push({type:\"text\",content:g})}}),c},stringify:function(e){return e.reduce(function(e,t){return e+a(\"\",t)},\"\")}};export default c;\n//# sourceMappingURL=html-parse-stringify.module.js.map\n","export function normalizePlugins(rawResponse) {\n // Support the new response shape:\n // { error: null, success: true, data: { catalog: [...], locale: \"...\", uiI18n: {...} } }\n\n if (!rawResponse || !rawResponse.data || !Array.isArray(rawResponse.data.catalog)) {\n // Log a clear error when the response is not supported\n // Keeping a minimal, non-crashing fallback of returning an empty object\n console.error(\"Unsupported marketplace response shape. Expected { data: { catalog: [...] } }.\", rawResponse);\n return { plugins: [], uiI18n: {}, locale: null };\n }\n\n const items = rawResponse.data.catalog;\n const uiI18n = rawResponse.data.uiI18n || {};\n const locale = rawResponse.data.locale || null;\n\n if (items.length === 0) return { plugins: [], uiI18n, locale };\n\n // Map to normalized structure\n const normalized = items.map((plugin) => {\n // Prefer description coming from i18n.description, then fallback to description field\n const descriptionFromTextKeys = plugin?.i18n?.description;\n const description =\n (typeof descriptionFromTextKeys === \"string\" && descriptionFromTextKeys)\n ? descriptionFromTextKeys\n : (typeof plugin?.description === \"object\" && plugin.description !== null\n ? (plugin.description[\"en-gb\"] || Object.values(plugin.description)[0] || \"\")\n : (plugin?.description || \"\")\n );\n\n const download = plugin?.download || plugin?.download_url || plugin?.downloadUrl || \"\";\n\n // Author may be a string or an object { name, url }\n const authorName = typeof plugin?.author === \"object\" && plugin.author !== null\n ? (plugin.author.name || \"\")\n : (plugin?.author || \"\");\n const authorUrl = typeof plugin?.author === \"object\" && plugin.author !== null\n ? (plugin.author.url || \"\")\n : \"\";\n\n const priceAmount = typeof plugin?.price === \"object\" && plugin.price !== null\n ? plugin.price.amount\n : undefined;\n const priceCurrency = typeof plugin?.price === \"object\" && plugin.price !== null\n ? plugin.price.currency\n : undefined;\n\n return {\n ...plugin,\n name: plugin?.name || \"Unknown\",\n slug: plugin?.slug || \"\",\n thumbnail: plugin?.thumbnail || \"\",\n description,\n download,\n author: authorName,\n authorUrl,\n priceAmount,\n priceCurrency,\n installed: plugin?.installed ?? false,\n activated: plugin?.activated ?? false,\n i18n: plugin?.i18n || {},\n };\n });\n\n // Deduplicate by slug (first occurrence wins)\n const seen = new Set();\n const plugins = normalized.filter((p) => {\n const key = p.slug || p.name || JSON.stringify(p);\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n\n return { plugins, uiI18n, locale };\n}\n","import React from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { trackButtonClick } from \"../utils/mixpanelTracking\";\nimport { getPluginRedirectUrl, navigateToPluginUrl } from \"../utils/redirectUrlHelper\";\n\nexport default function SuccessNotice({ plugin }) {\n const {\n assetsBaseUrl,\n noticeState,\n setNoticeState,\n handlePluginAction,\n cancelReload,\n uiI18n\n } = useMarketplace();\n\n if (!noticeState || !noticeState.visible || noticeState.pluginSlug !== plugin?.slug) {\n return null;\n }\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/` : \"\";\n\n const handleClose = () => {\n setNoticeState({ visible: false, type: null, pluginSlug: null });\n sessionStorage.removeItem('mp_success_notice');\n };\n\n const handleActivate = () => {\n handlePluginAction(\"activate\", plugin, 'product_detail');\n };\n\n const handleManage = () => {\n // Track the Get Started button click\n trackButtonClick({\n buttonName: 'Get started',\n buttonAction: 'manage_product',\n plugin: plugin,\n context: {\n product_slug: plugin.slug,\n product_name: plugin.name,\n has_redirect_url: !!(plugin.redirectUrl && plugin.redirectUrl.trim() !== ''),\n has_onboarding_url: !!(plugin.onboardingUrl && plugin.onboardingUrl.trim() !== ''),\n }\n });\n\n // Cancel the scheduled reload since user is navigating manually\n cancelReload();\n\n const redirectUrl = getPluginRedirectUrl(plugin, true);\n navigateToPluginUrl(redirectUrl);\n };\n\n const isInstalled = noticeState.type === 'installed';\n const isActivated = noticeState.type === 'activated';\n\n // Helper function to replace {0} with plugin name\n const formatMessage = (message, pluginName) => {\n if (!message) return '';\n return message.replace('{0}', pluginName || '');\n };\n\n const pluginName = plugin?.name || '';\n\n return (\n
\n \"Success\"\n
\n
\n {isInstalled && formatMessage(uiI18n?.notifications?.pluginInstalled || 'Plugin was installed.', pluginName)}\n {isActivated && formatMessage(uiI18n?.notifications?.pluginActivated || 'Plugin was activated.', pluginName)}\n
\n

\n {isInstalled && (uiI18n?.notifications?.activateNow || 'Activate it now to start using it.')}\n {isActivated && formatMessage(uiI18n?.notifications?.manageInMyProducts || '{0} plugin was activated for this site. You can manage it on the My products page.', pluginName)}\n

\n
\n {isInstalled && (\n \n {uiI18n?.activatePluginButton}\n \n )}\n {isActivated && (\n \n {uiI18n?.featuredCta || 'Get Started'}\n \n \n )}\n \n \n \n
\n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport PluginActions from \"./PluginActions\";\nimport SuccessNotice from \"./SuccessNotice\";\nimport ErrorToast from \"./ErrorToast\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { formatPluginPrice, getFullPrice, getRebatePrice } from \"../utils/priceFormatter\";\n\nexport default function ProductDetail({\n plugin,\n onClose,\n usePortal = true,\n loading = false\n}) {\n const {\n assetsBaseUrl,\n useWPHandlers,\n pluginInAction,\n uiI18n,\n subscriptionStatus,\n isCheckingSubscription,\n setNoticeState,\n setErrorState\n } = useMarketplace();\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/icons/` : \"\";\n\n // Show skeleton loaders while loading (even if plugin is null)\n if (loading) {\n const skeletonContent = (\n
\n
\n {/* Breadcrumbs skeleton */}\n \n\n {/* Header skeleton */}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n {/* Pricing / Action Section skeleton */}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n {/* Key features skeleton */}\n
\n
\n
\n
\n
\n
\n {[...Array(3)].map((_, i) => (\n
\n
\n
\n
\n
\n ))}\n
\n
\n
\n
\n\n {/* Benefits skeleton */}\n
\n
\n
\n
    \n {[...Array(3)].map((_, i) => (\n
  • \n
    \n
  • \n ))}\n
\n
\n
\n\n {/* Core Features skeleton */}\n
\n
\n
\n
\n {[...Array(3)].map((_, i) => (\n
\n
\n
\n
\n
\n ))}\n
\n
\n
\n
\n
\n );\n return usePortal ? createPortal(skeletonContent, document.body) : skeletonContent;\n }\n\n // If not loading and plugin is null, return null\n if (!plugin) return null;\n\n // Scroll to top when component mounts or plugin changes\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [plugin]);\n\n // Clear banners when component mounts (handles case when user returns via browser back button)\n useEffect(() => {\n // Clear any existing banners when ProductDetail mounts\n // BUT don't clear them if they are for the current plugin (e.g. just activated and reloaded)\n setNoticeState(prev => (prev.visible && prev.pluginSlug === plugin.slug) ? prev : { visible: false, type: null, pluginSlug: null });\n setErrorState(prev => (prev.visible && prev.pluginSlug === plugin.slug) ? prev : { visible: false, type: null, pluginSlug: null });\n }, [plugin.slug, setNoticeState, setErrorState]);\n\n // Hide banners when user navigates back and returns to the product detail page\n useEffect(() => {\n const handlePopState = () => {\n // Clear notice and error state when navigating via browser back/forward\n setNoticeState({ visible: false, type: null, pluginSlug: null });\n setErrorState({ visible: false, type: null, pluginSlug: null });\n };\n\n window.addEventListener('popstate', handlePopState);\n return () => window.removeEventListener('popstate', handlePopState);\n }, [setNoticeState, setErrorState]);\n\n const imageURL = (typeof window.onecomWpVars !== \"undefined\" && window.onecomWpVars?.imageURL) || assetBase;\n const iconSrc = plugin.thumbnail || `${assetBase}assets/icons/placeholder.svg`;\n const mainImage = plugin.bannerUrl || plugin.image || plugin.thumbnail || 'https://gravity.group.one/guide-images/product-image@2x.png';\n\n // Extract data with fallbacks\n const title = plugin.name || 'Product';\n const description = plugin.i18n?.description || plugin.i18n?.subtitle || plugin.description || plugin.shortDescription || 'No description available.';\n const subTitle = plugin.i18n?.subtitle;\n const isFree = plugin.licenseType === \"free\";\n const freeTrialText = plugin.i18n?.freeTrialText || '';\n const hasFreeTrialText = freeTrialText && freeTrialText.trim() !== '';\n const freeTrialPeriod = plugin.i18n?.freeTrialPeriod || '';\n const hasFreeTrialPeriod = freeTrialPeriod && freeTrialPeriod.trim() !== '';\n\n const price = (hasFreeTrialPeriod || hasFreeTrialText)\n ? (uiI18n?.headings?.freeTrial || 'Free trial*')\n : formatPluginPrice(plugin, uiI18n?.labels?.free || 'Free', uiI18n);\n\n // Check if price is \"Free until renewal\" (rebate amount is 0)\n const isFreeUntilRenewal = price === (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal');\n\n // Extract full and rebate prices using common utility functions\n const fullPriceAmount = getFullPrice(plugin);\n const rebatePriceAmount = getRebatePrice(plugin);\n\n // Helper function to extract numbered properties dynamically from i18n object\n const extractNumberedProps = (obj, baseName) => {\n if (!obj || typeof obj !== 'object') return [];\n const results = [];\n let i = 1;\n while (obj[`${baseName}${i}`]) {\n const value = obj[`${baseName}${i}`];\n if (value && value.trim() !== '') {\n results.push(value);\n }\n i++;\n }\n return results;\n };\n\n // Extract key benefits from i18n (keyBenefitContent1, keyBenefitContent2, etc.)\n const benefitsFromI18n = extractNumberedProps(plugin.i18n, 'keyBenefitContent');\n\n // Extract key features from i18n (keyFeatureContent1 through keyFeatureContent6)\n const keyFeaturesFromI18n = extractNumberedProps(plugin.i18n, 'keyFeatureContent');\n\n // Extract core features (title/content pairs) from i18n\n const coreFeaturesFromI18n = [];\n if (plugin.i18n && typeof plugin.i18n === 'object') {\n let i = 1;\n while (plugin.i18n[`coreFeatureTitle${i}`] || plugin.i18n[`coreFeatureContent${i}`]) {\n const featureTitle = plugin.i18n[`coreFeatureTitle${i}`];\n const content = plugin.i18n[`coreFeatureContent${i}`];\n if (featureTitle && featureTitle.trim() !== '' && content && content.trim() !== '') {\n coreFeaturesFromI18n.push({ name: featureTitle, desc: content });\n }\n i++;\n }\n }\n\n // Use only i18n data - no fallbacks\n const keyFeatures = keyFeaturesFromI18n;\n const benefits = benefitsFromI18n;\n const coreFeatures = coreFeaturesFromI18n;\n\n const content = (\n
\n
\n \n\n\n\n
\n
\n

{title}

\n

{description}

\n {/*{plugin.author && (*/}\n {/*

*/}\n {/* Author: {plugin.authorUrl ? {plugin.author} : plugin.author}*/}\n {/*

*/}\n {/*)}*/}\n
\n
\n \n \n \n \n
\n
\n\n {/* Pricing / Action Section */}\n
\n
\n
\n
\n
\n
\n
\n

{title}

\n

{subTitle}

\n
\n
\n
\n
\n {(hasFreeTrialPeriod || hasFreeTrialText) ? (\n {price}\n ) : (\n <>\n \n {plugin.licenseType === \"premium\" && rebatePriceAmount !== null\n ? (rebatePriceAmount !== null ? rebatePriceAmount : fullPriceAmount)\n : price}\n \n {!isFree && !isFreeUntilRenewal && price && (\n /{uiI18n?.labels?.timeMonth}\n )}\n \n )}\n
\n {(hasFreeTrialPeriod || hasFreeTrialText) ? (\n
\n
{freeTrialText}
\n
\n ) : (\n !isFree && price && fullPriceAmount && rebatePriceAmount !== null &&\n
\n
{uiI18n.labels.untilRenewal} [{rebatePriceAmount}]/{uiI18n?.labels?.timeMonth}
\n
{uiI18n.labels.afterThat} [{fullPriceAmount}]/{uiI18n?.labels?.timeMonth}
\n
\n )}\n
\n {useWPHandlers ? (\n \n ) : (\n plugin.download && (\n \n Download\n \n )\n )}\n
\n
\n
\n
\n\n {keyFeatures.length > 0 && (\n
\n
\n
\n

{uiI18n?.keyFeatureHeading || plugin.i18n?.keyFeatureHeading}

\n
\n
\n {keyFeatures.map((f, i) => (\n
\n
\n {f}\n
\n
\n ))}\n
\n )}\n
\n
\n
\n\n {/* Details / Benefits */}\n
\n {benefits.length > 0 && (\n
\n

{uiI18n?.benefitHeading || plugin.i18n?.benefitHeading || 'Key benefits'}

\n
    \n {benefits.map((b, i) =>
  • {b}
  • )}\n
\n
\n )}\n
\n\n {/* Core Features Overview */}\n {coreFeatures.length > 0 && (\n
\n
\n

{uiI18n?.featureOverviewHeading || plugin.i18n?.featureOverviewHeading || 'Core features overview'}

\n
\n {coreFeatures.map((cf, i) => (\n
\n

{cf.name}

\n

{cf.desc}

\n
\n ))}\n
\n
\n
\n )}\n
\n
\n );\n\n return usePortal ? createPortal(content, document.body) : content;\n}\n","import React, { useEffect } from \"react\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\n\nexport default function ErrorToast({ plugin: propPlugin }) {\n const {\n assetsBaseUrl,\n errorState,\n setErrorState,\n uiI18n,\n plugins\n } = useMarketplace();\n\n const plugin = propPlugin || plugins.find(p => p.slug === errorState.pluginSlug);\n const isVisible = errorState && errorState.visible && errorState.pluginSlug === plugin?.slug;\n\n useEffect(() => {\n if (isVisible) {\n const timer = setTimeout(() => {\n handleClose();\n }, 5000);\n\n return () => clearTimeout(timer);\n }\n }, [isVisible]);\n\n if (!isVisible) {\n return null;\n }\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/` : \"\";\n\n const handleClose = () => {\n setErrorState({ visible: false, type: null, pluginSlug: null });\n };\n\n const isActivateError = errorState.type === 'activate';\n const isDeactivateError = errorState.type === 'deactivate';\n const isInstallError = errorState.type === 'install';\n const isDeleteError = errorState.type === 'delete';\n\n // Helper function to replace {0} with plugin name\n const formatMessage = (message, pluginName) => {\n if (!message) return '';\n return message.replace('{0}', pluginName || '');\n };\n\n const pluginName = plugin?.name || '';\n\n return (\n
\n
\n \n
\n {isActivateError && formatMessage(uiI18n?.notifications?.pluginActivationFailed || \"Couldn't activate plugin.\", pluginName)}\n {isDeactivateError && formatMessage(uiI18n?.notifications?.pluginDeactivationFailed || \"Couldn't deactivate plugin.\", pluginName)}\n {isInstallError && formatMessage(uiI18n?.notifications?.pluginInstallationFailed || \"Couldn't install plugin.\", pluginName)}\n {isDeleteError && formatMessage(uiI18n?.notifications?.pluginDeletionFailed || \"Couldn't delete plugin.\", pluginName)}\n
\n \n
\n
\n );\n }\n","import React, { useState, useEffect, useRef } from \"react\";\nimport {normalizePlugins} from \"./normalised-plugins\";\nimport \"@group.one/gravity\";\nimport { useTranslation } from \"react-i18next\";\nimport ProductDetail from \"./ProductDetail\";\nimport ProductDetailRankMath from \"./ProductDetailRankMath\";\nimport ErrorState from \"./ErrorState\";\nimport WpVersionErrorState from \"./WpVersionErrorState\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { formatPluginPrice, getRebatePrice,getFullPrice } from \"../utils/priceFormatter\";\nimport { trackMarketplaceVisit, trackPluginDetailVisit, trackPageView } from \"../utils/mixpanelTracking\";\n\nexport default function Marketplace() {\n const {\n apiBaseUrl,\n useWPHandlers,\n wpConfig,\n enableDefaultStyles,\n assetsBaseUrl,\n pluginInAction,\n setPluginInAction,\n fetchSubscriptionStatus,\n isOnecomBrand,\n plugins,\n setPlugins,\n uiI18n,\n setUiI18n,\n handlePluginAction,\n allPluginsActivated,\n setAllPluginsActivated,\n catalogError,\n setCatalogError,\n catalogLoading,\n setCatalogLoading,\n shouldShowProvision,\n isSpecialPlugin,\n shouldShowPlugin,\n isWpVersionSupported\n } = useMarketplace();\n\n // Get active plugin slugs from WordPress config\n const activePlugins = typeof window !== \"undefined\" && window.marketplaceConfig?.activePlugins\n ? window.marketplaceConfig.activePlugins\n : [];\n\n // Get active theme author from WordPress config\n const activeThemeAuthor = typeof window !== \"undefined\" && window.marketplaceConfig?.activeThemeAuthor\n ? window.marketplaceConfig.activeThemeAuthor\n : \"\";\n\n const [downloadingPlugins, setDownloadingPlugins] = useState({});\n const [selectedPlugin, setSelectedPlugin] = useState(null);\n\n // Use ref to track if plugins have already been fetched\n const hasFetchedPlugins = useRef(false);\n\n // Use ref to track if marketplace visit has been tracked (prevent duplicates)\n const hasTrackedMarketplaceVisit = useRef(false);\n\n // Use ref to track last tracked plugin detail to prevent duplicate tracking\n const lastTrackedPluginSlug = useRef(null);\n\n // Use ref to store timestamps for tracking\n const contentReceivedTimestamp = useRef(null);\n const contentRenderTimestamp = useRef(null);\n\n // Use ref to store is_cached flag from API response\n const isCachedRef = useRef(false);\n\n // Construct icon base URL with fallback logic\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/icons/` : \"\";\n\n // Determine if a plugin slug is in the URL\n const pluginFromQuery = typeof window !== \"undefined\"\n ? new URLSearchParams(window.location.search).get(\"plugin\")\n : null;\n\n // Get base page URL (without plugin parameter)\n const getBaseUrl = () => {\n if (typeof window === \"undefined\") return \"\";\n const url = new URL(window.location.href);\n url.searchParams.delete(\"plugin\");\n return url.toString();\n };\n\n\n // After plugins load, select plugin from query if present\n useEffect(() => {\n if (pluginFromQuery && plugins.length) {\n const match = plugins.find(p => p.slug === pluginFromQuery);\n if (match) setSelectedPlugin(match);\n } else if (!pluginFromQuery) {\n // Clear selectedPlugin when no plugin parameter in URL\n setSelectedPlugin(null);\n }\n }, [pluginFromQuery, plugins]);\n\n // Listen for browser back/forward navigation\n useEffect(() => {\n const handlePopState = () => {\n const currentPluginParam = new URLSearchParams(window.location.search).get(\"plugin\");\n if (!currentPluginParam) {\n // URL no longer has plugin parameter, clear selection\n setSelectedPlugin(null);\n } else if (plugins.length) {\n // URL has plugin parameter, update selection\n const match = plugins.find(p => p.slug === currentPluginParam);\n if (match) setSelectedPlugin(match);\n }\n };\n\n window.addEventListener('popstate', handlePopState);\n return () => window.removeEventListener('popstate', handlePopState);\n }, [plugins]);\n\n const {t} = useTranslation();\n\n useEffect(() => {\n // Only fetch once\n if (hasFetchedPlugins.current) {\n return;\n }\n\n async function fetchPlugins() {\n try {\n hasFetchedPlugins.current = true;\n const res = await fetch(`${apiBaseUrl}`);\n const json = await res.json();\n\n // Capture timestamp when API content is received\n contentReceivedTimestamp.current = Date.now();\n\n // Extract is_cached flag from API response\n isCachedRef.current = json.is_cached || false;\n\n // Check for API error response (success: false)\n if (json && json.success === false) {\n // Track page view with content render failure\n trackPageView({\n category: 'marketplace_home',\n isContentRendered: false,\n });\n setCatalogError(true);\n setCatalogLoading(false);\n return;\n }\n\n // Check for blank/empty response\n if (!json || !json.data || !json.data.catalog || (Array.isArray(json.data.catalog) && json.data.catalog.length === 0)) {\n console.error(\"API returned empty or blank response\");\n // Track page view with content render failure\n trackPageView({\n category: 'marketplace_home',\n isContentRendered: false,\n });\n setCatalogError(true);\n setCatalogLoading(false);\n return;\n }\n\n const { plugins: normalizedPlugins, uiI18n: apiUiI18n } = normalizePlugins(json);\n setPlugins(normalizedPlugins);\n setUiI18n(apiUiI18n);\n\n // Fetch subscription status for special plugins (wp-rocket, rank-math-pro)\n if (isOnecomBrand) {\n const specialPlugins = normalizedPlugins.filter(p => isSpecialPlugin(p.slug));\n\n // Fetch subscription status for each special plugin\n specialPlugins.forEach(plugin => {\n fetchSubscriptionStatus(plugin.slug);\n });\n }\n } catch (e) {\n // Track page view with content render failure\n trackPageView({\n category: 'marketplace_home',\n isContentRendered: false,\n });\n setCatalogError(true);\n } finally {\n setCatalogLoading(false);\n }\n }\n\n fetchPlugins();\n }, [apiBaseUrl, isOnecomBrand, fetchSubscriptionStatus, setPlugins]);\n\n // Use useMemo to filter plugins based on rules and activation status\n const visiblePlugins = React.useMemo(() => {\n if (!plugins.length) return [];\n\n const bySlug = new Map();\n\n // Check activation status of Rank Math plugins\n const rankMathActivated = plugins.find(p => p.slug === \"seo-by-rank-math\")?.activated === true;\n const rankMathProActivated = plugins.find(p => p.slug === \"seo-by-rank-math-pro\")?.activated === true;\n\n plugins.forEach((p) => {\n // Skip if already in map or activated\n if (bySlug.has(p.slug) || p.activated === true) {\n return;\n }\n\n // Handle Rank Math plugin visibility\n if (p.slug === \"seo-by-rank-math\") {\n // Show seo-by-rank-math only if BOTH plugins are NOT activated\n if (!rankMathActivated && !rankMathProActivated && shouldShowPlugin(p)) {\n bySlug.set(p.slug, p);\n }\n return;\n }\n\n if (p.slug === \"seo-by-rank-math-pro\") {\n // Show seo-by-rank-math-pro only if seo-by-rank-math IS activated\n if (rankMathActivated && shouldShowPlugin(p)) {\n bySlug.set(p.slug, p);\n }\n return;\n }\n\n // Apply filtering based on rules\n if (shouldShowPlugin(p)) {\n bySlug.set(p.slug, p);\n }\n });\n\n return Array.from(bySlug.values());\n }, [plugins, shouldShowPlugin]);\n\n // Update allPluginsActivated in context whenever plugins change\n useEffect(() => {\n if (plugins.length > 0) {\n // If there are no plugins that should be visible (not activated and passing rules), then all are activated/hidden\n const allActivated = visiblePlugins.length === 0;\n setAllPluginsActivated(allActivated);\n }\n }, [plugins, visiblePlugins, setAllPluginsActivated]);\n\n // Track marketplace visit when plugins are loaded and no plugin detail is shown\n useEffect(() => {\n if (!catalogLoading && !catalogError && plugins.length > 0 && !pluginFromQuery && !hasTrackedMarketplaceVisit.current) {\n // Capture timestamp when content is rendered to the page\n contentRenderTimestamp.current = Date.now();\n\n // Check if this is a reload caused by plugin activation\n const skipPageView = sessionStorage.getItem('mp_skip_page_view');\n if (skipPageView === 'true') {\n // Clear the flag and skip tracking\n sessionStorage.removeItem('mp_skip_page_view');\n } else {\n // Normal page load, track the visit\n trackMarketplaceVisit(contentReceivedTimestamp.current, contentRenderTimestamp.current, isCachedRef.current);\n }\n hasTrackedMarketplaceVisit.current = true;\n }\n }, [catalogLoading, catalogError, plugins.length, pluginFromQuery]);\n\n // Track plugin detail page visit when selectedPlugin changes\n useEffect(() => {\n if (selectedPlugin && pluginFromQuery && lastTrackedPluginSlug.current !== selectedPlugin.slug) {\n // Capture timestamp when content is rendered to the page\n contentRenderTimestamp.current = Date.now();\n\n // Check if this is a reload caused by plugin activation\n const skipPageView = sessionStorage.getItem('mp_skip_page_view');\n if (skipPageView === 'true') {\n // Clear the flag and skip tracking\n sessionStorage.removeItem('mp_skip_page_view');\n } else {\n // Normal page load, track the visit\n trackPluginDetailVisit(selectedPlugin, contentReceivedTimestamp.current, contentRenderTimestamp.current, isCachedRef.current);\n }\n lastTrackedPluginSlug.current = selectedPlugin.slug;\n }\n // Reset when returning to marketplace list\n if (!pluginFromQuery) {\n lastTrackedPluginSlug.current = null;\n }\n }, [selectedPlugin, pluginFromQuery]);\n\n const handleDownloadClick = (e, plugin) => {\n e.stopPropagation();\n\n // Set downloading state\n setDownloadingPlugins(prev => ({ ...prev, [plugin.slug]: true }));\n\n // Reset after a short delay (download is triggered immediately)\n // The browser handles the actual download, so we simulate completion\n setTimeout(() => {\n setDownloadingPlugins(prev => ({ ...prev, [plugin.slug]: false }));\n }, 2000);\n };\n\n const openDetail = (plugin, e) => {\n // Debug to confirm click\n setSelectedPlugin(plugin);\n };\n\n\n\n // Helper function to determine if we should use ProductDetailRankMath\n const shouldUseRankMathDetail = (plugin) => {\n if (!plugin) return false;\n const brand = typeof window !== \"undefined\" && window.marketplaceConfig?.brand;\n const isOnecomBrand = brand === \"onecom\";\n const isRankMathPlugin = plugin.slug === \"seo-by-rank-math-pro\" || plugin.slug === \"seo-by-rank-math\";\n return isOnecomBrand && isRankMathPlugin;\n };\n\n\n\n if (catalogLoading) {\n // If there's a plugin parameter in the URL, show appropriate skeleton based on plugin type\n if (pluginFromQuery) {\n // Determine if we should use RankMath detail component based on slug\n const brand = typeof window !== \"undefined\" && window.marketplaceConfig?.brand;\n const isOnecomBrand = brand === \"onecom\";\n const isRankMathPlugin = pluginFromQuery === \"seo-by-rank-math-pro\" || pluginFromQuery === \"seo-by-rank-math\";\n const DetailComponent = (isOnecomBrand && isRankMathPlugin) ? ProductDetailRankMath : ProductDetail;\n return (\n {}}\n usePortal={false}\n loading={true}\n />\n );\n }\n\n // Show catalog skeleton loaders while catalog is loading\n return (\n
\n
\n
\n
\n
\n {/* Generate first 3 skeleton plugin cards */}\n {[...Array(3)].map((_, index) => (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ))}\n
\n\n {/* Additional skeleton loaders after 3 cards */}\n
\n
\n
\n\n\n {/* Generate remaining 3 skeleton plugin cards */}\n {[...Array(3)].map((_, index) => (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ))}\n
\n
\n
\n );\n }\n\n // Show error state if API failed or returned error\n if (catalogError) {\n return ;\n }\n\n // Show WP version error state\n if (!isWpVersionSupported('6.2')) {\n return ;\n }\n\n // Early return: show full page detail instead of list\n if (selectedPlugin && pluginFromQuery) {\n const DetailComponent = shouldUseRankMathDetail(selectedPlugin) ? ProductDetailRankMath : ProductDetail;\n return (\n {\n // Return to listing (clear selection and URL)\n setSelectedPlugin(null);\n // Check if history.back() will work (has navigable history)\n if (typeof window !== \"undefined\" && window.history && window.history.length > 1) {\n window.history.back();\n } else {\n // In new-tab scenario, manually remove plugin parameter from URL\n const url = new URL(window.location.href);\n url.searchParams.delete(\"plugin\");\n window.history.replaceState({}, '', url.toString());\n }\n }}\n usePortal={false}\n loading={catalogLoading}\n />\n );\n }\n\n // Group plugins by a single, specific category (first category), avoid duplicates across headings\n const categoryMap = new Map();\n\n visiblePlugins.forEach((p) => {\n // Handle new category object structure: { id, slug, title, description }\n const categoryObj = Array.isArray(p.categories) && p.categories.length\n ? (typeof p.categories[0] === 'object' ? p.categories[0] : { slug: String(p.categories[0]), title: String(p.categories[0]), description: null })\n : { slug: \"Others\", title: \"Others\", description: null };\n\n const categoryKey = categoryObj.slug || categoryObj.title || \"Others\";\n\n if (!categoryMap.has(categoryKey)) {\n categoryMap.set(categoryKey, { info: categoryObj, plugins: [] });\n }\n categoryMap.get(categoryKey).plugins.push(p);\n });\n\n const categories = Array.from(categoryMap.entries()).filter(([catKey, { plugins: list }]) => list.length > 0);\n\n // If all plugins are activated, show the \"You've got all our plugins!\" message\n if (allPluginsActivated) {\n return (\n
\n
\n
{uiI18n?.notifications?.allPluginsOwned}
\n

{uiI18n?.text?.managePlugins}

\n {\n // Navigate to plugins page\n window.location.href = '/wp-admin/plugins.php';\n }}\n >\n {uiI18n.viewProductsButton}\n \n \n
\n
\n );\n }\n\n return (\n
\n {categories.map(([catKey, { info, plugins: list }]) => (\n
\n

{info.title || catKey}

\n {info.description &&

{info.description}

}\n
\n {list.map((plugin) => {\n const isProvisionable = shouldShowProvision(plugin);\n const freeLabel = (plugin.i18n.freeTrialPeriod && plugin.i18n.freeTrialPeriod.trim() !== '')\n ? plugin.i18n.freeTrialPeriod\n : (uiI18n?.labels?.free || 'Free');\n const price = formatPluginPrice(plugin, freeLabel, uiI18n);\n const fullPriceAmount = getFullPrice(plugin);\n const rebatePriceAmount = getRebatePrice(plugin);\n return (\n
\n
\n {plugin.name}\n
\n
\n
\n

{plugin.name}

\n

{plugin.i18n.listingDescription || plugin.i18n.subtitle}

\n \n <>\n {plugin.licenseType === \"premium\" && (rebatePriceAmount > 0) ? (rebatePriceAmount !== null ? rebatePriceAmount : fullPriceAmount) : price}\n {plugin.licenseType !== \"free\" && price && price !== freeLabel && price !== (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal') && /{uiI18n?.labels?.timeMonth}}\n \n \n
\n
\n
\n {\n e.preventDefault();\n setSelectedPlugin(plugin);\n const url = new URL(window.location.href);\n url.searchParams.set(\"plugin\", plugin.slug);\n window.history.pushState({}, '', url.toString());\n }}\n >\n \n \n\n
\n
\n );\n })}\n
\n
\n ))}\n {/* Remove overlay render (keep for non-query usage) */}\n {selectedPlugin && !pluginFromQuery && (() => {\n const DetailComponent = shouldUseRankMathDetail(selectedPlugin) ? ProductDetailRankMath : ProductDetail;\n return (\n setSelectedPlugin(null)}\n loading={catalogLoading}\n />\n );\n })()}\n
\n );\n}\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\n\n// Import all translations\nimport en_GB from \"./locales/en_GB.json\";\nimport da_DK from \"./locales/da_DK.json\";\nimport de_DE from \"./locales/de_DE.json\";\nimport es_ES from \"./locales/es_ES.json\";\nimport fi_FI from \"./locales/fi_FI.json\";\nimport fr_FR from \"./locales/fr_FR.json\";\nimport it_IT from \"./locales/it_IT.json\";\nimport nl_NL from \"./locales/nl_NL.json\";\nimport no_NO from \"./locales/no_NO.json\";\nimport pt_PT from \"./locales/pt_PT.json\";\nimport sv_SE from \"./locales/sv_SE.json\";\n\nconst resources = {\n\ten_GB: { translation: en_GB },\n\tda_DK: { translation: da_DK },\n\tde_DE: { translation: de_DE },\n\tes_ES: { translation: es_ES },\n\tfi_FI: { translation: fi_FI },\n\tfr_FR: { translation: fr_FR },\n\tit_IT: { translation: it_IT },\n\tnl_NL: { translation: nl_NL },\n\tno_NO: { translation: no_NO },\n\tnb_NO: { translation: no_NO },\n\tpt_PT: { translation: pt_PT },\n\tsv_SE: { translation: sv_SE },\n\tfi: { translation: fi_FI },\n};\n\ni18n.use(initReactI18next).init({\n\tresources,\n\tlng: \"en_GB\", // default fallback\n\tfallbackLng: \"en_GB\",\n\tinterpolation: { escapeValue: false },\n});\n\nexport default i18n;\n","import React, { useState, useEffect } from \"react\";\nimport Marketplace from \"./components/MarketPlace\";\nimport ProductBanner from \"./components/ProductBanner\";\nimport FeaturedCarousel from \"./components/FeaturedCarousel\";\nimport LoadingOverlay from \"./components/LoadingOverlay\";\nimport { MarketplaceProvider, useMarketplace } from \"./context/MarketplaceContext\";\n\n// Inner component that can access the context\nconst MarketplaceContent = () => {\n const { allPluginsActivated, catalogError, catalogLoading, isWpVersionSupported } = useMarketplace();\n\n const isSupportedWpVersion = isWpVersionSupported('6.2');\n\n // Track detail page visibility with state\n const [isDetailPage, setIsDetailPage] = useState(\n typeof window !== \"undefined\" && new URLSearchParams(window.location.search).get(\"plugin\")\n );\n\n // Listen for URL changes (both popstate and custom events)\n useEffect(() => {\n const checkDetailPage = () => {\n const hasPlugin = typeof window !== \"undefined\" && new URLSearchParams(window.location.search).get(\"plugin\");\n setIsDetailPage(!!hasPlugin);\n };\n\n // Listen for browser back/forward\n window.addEventListener('popstate', checkDetailPage);\n\n // Listen for programmatic URL changes (from pushState)\n const originalPushState = window.history.pushState;\n window.history.pushState = function(...args) {\n originalPushState.apply(this, args);\n checkDetailPage();\n };\n\n // Listen for programmatic URL changes (from replaceState)\n const originalReplaceState = window.history.replaceState;\n window.history.replaceState = function(...args) {\n originalReplaceState.apply(this, args);\n checkDetailPage();\n };\n\n return () => {\n window.removeEventListener('popstate', checkDetailPage);\n window.history.pushState = originalPushState;\n window.history.replaceState = originalReplaceState;\n };\n }, []);\n\n return (\n <>\n \n
\n
\n\n {!isDetailPage && !catalogError && isSupportedWpVersion && }\n {!isDetailPage && !allPluginsActivated && isSupportedWpVersion && }\n\n \n
\n
\n \n );\n};\n\nconst MarketplaceApp = ({ apiBaseUrl, useWPHandlers, wpConfig, enableDefaultStyles, assetsBaseUrl }) => {\n return (\n \n \n \n );\n};\n\nexport default MarketplaceApp;\n","module.exports = window[\"ReactDOM\"];","import React from 'react';\nimport { useMarketplace } from '../context/MarketplaceContext';\n\nconst ProductBanner = ({ loading = false }) => {\n const { assetsBaseUrl, uiI18n } = useMarketplace();\n const leftBannerUrl = 'https://wpaddon-static.group-cdn.one/images/wp/marketplace/banners/top-header-left-banner.png';\n const rightBannerUrl = 'https://wpaddon-static.group-cdn.one/images/wp/marketplace/banners/top-header-right-banner.png';\n\n return (\n
\n
\n {loading ? (\n
\n
\n
\n ) : (\n
\n \n \n \"Left\n \n
\n )}\n
\n\n
\n {loading ? (\n <>\n
\n
\n
\n
\n \n ) : (\n <>\n

\n {uiI18n?.headings?.pageTitle}\n

\n

\n {uiI18n?.text?.pageContent}\n

\n \n )}\n
\n\n
\n {loading ? (\n
\n
\n
\n ) : (\n
\n \n \n \"Product\n \n
\n )}\n
\n
\n );\n};\n\nexport default ProductBanner;\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nconst promises = {};\nasync function fetchWithCache(url) {\n if (promises.hasOwnProperty(url)) {\n return promises[url];\n }\n let promise;\n if (url.startsWith(\"data:\") || !(\"caches\" in self)) {\n promise = fetch(url).then((r) => r.text());\n } else {\n promise = caches.open(\"gravity\").then(async (cache) => {\n let response = await cache.match(url);\n if (!response) {\n response = await fetch(url);\n if (response.ok) {\n await cache.put(url, response.clone());\n }\n }\n return response.text();\n });\n }\n promises[url] = promise;\n return promise;\n}\nclass GvFlagElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchFlag(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchFlag(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchFlag(newValue);\n }\n }\n}\n__publicField(GvFlagElement, \"TAG_NAME\", \"gv-flag\");\nclass GvIconElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchIcon(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchIcon(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchIcon(newValue);\n }\n }\n}\n__publicField(GvIconElement, \"TAG_NAME\", \"gv-icon\");\nclass GvIllustrationElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchIllustration(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchIllustration(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchIllustration(newValue);\n }\n }\n}\n__publicField(GvIllustrationElement, \"TAG_NAME\", \"gv-illustration\");\nclass GvIndicatorElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchIndicator(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchIndicator(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchIndicator(newValue);\n }\n }\n}\n__publicField(GvIndicatorElement, \"TAG_NAME\", \"gv-indicator\");\nclass GvLoaderElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchLoader(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchLoader(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchLoader(newValue);\n }\n }\n}\n__publicField(GvLoaderElement, \"TAG_NAME\", \"gv-loader\");\nclass GvLogoElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchLogo(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchLogo(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchLogo(newValue);\n }\n }\n}\n__publicField(GvLogoElement, \"TAG_NAME\", \"gv-logo\");\nclass GvPayIconElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchPayIcon(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchPayIcon(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchPayIcon(newValue);\n }\n }\n}\n__publicField(GvPayIconElement, \"TAG_NAME\", \"gv-pay-icon\");\nclass GvTileElement extends HTMLElement {\n static get observedAttributes() {\n return [\"src\"];\n }\n fetchTile(path) {\n if (!path) {\n return;\n }\n fetchWithCache(path).then((svg) => this.innerHTML = svg);\n }\n connectedCallback() {\n this.fetchTile(this.getAttribute(\"src\"));\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === \"src\" && oldValue !== newValue) {\n this.fetchTile(newValue);\n }\n }\n}\n__publicField(GvTileElement, \"TAG_NAME\", \"gv-tile\");\nfunction defineCustomElement(tagName, elementClass) {\n if (!customElements.get(tagName)) {\n customElements.define(tagName, elementClass);\n }\n}\ndefineCustomElement(GvFlagElement.TAG_NAME, GvFlagElement);\ndefineCustomElement(GvIconElement.TAG_NAME, GvIconElement);\ndefineCustomElement(GvIllustrationElement.TAG_NAME, GvIllustrationElement);\ndefineCustomElement(GvIndicatorElement.TAG_NAME, GvIndicatorElement);\ndefineCustomElement(GvLoaderElement.TAG_NAME, GvLoaderElement);\ndefineCustomElement(GvLogoElement.TAG_NAME, GvLogoElement);\ndefineCustomElement(GvPayIconElement.TAG_NAME, GvPayIconElement);\ndefineCustomElement(GvTileElement.TAG_NAME, GvTileElement);\n","// since es6 imports are static and we run unit tests from the console, window won't be defined when importing this file\nvar win;\nif (typeof(window) === 'undefined') {\n var loc = {\n hostname: ''\n };\n win = {\n crypto: {randomUUID: function() {throw Error('unsupported');}},\n navigator: { userAgent: '', onLine: true },\n document: {\n createElement: function() { return {}; },\n location: loc,\n referrer: ''\n },\n screen: { width: 0, height: 0 },\n location: loc,\n addEventListener: function() {},\n removeEventListener: function() {}\n };\n} else {\n win = window;\n}\n\nfunction _array_like_to_array(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 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}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, 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}\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function construct(Parent, args, Class) {\n var a = [\n null\n ];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _set_prototype_of(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\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}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n return Constructor;\n}\nfunction _extends() {\n _extends = Object.assign || 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}\nfunction _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _get_prototype_of(o);\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 subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nfunction _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n}\nfunction _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _object_without_properties_loose(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 _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _set_prototype_of(o, p);\n}\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(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(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function wrapNativeSuper(Class) {\n if (Class === null || !_is_native_function(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, _get_prototype_of(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 _set_prototype_of(Wrapper, Class);\n };\n return _wrap_native_super(Class);\n}\nfunction _is_native_reflect_construct() {\n try {\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike) {\n if (it) o = it;\n var i = 0;\n return function() {\n if (i >= o.length) {\n return {\n done: true\n };\n }\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nfunction _ts_values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = function(obj, key, value) {\n return key in obj ? __defProp$1(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n }) : obj[key] = value;\n};\nvar __publicField$1 = function(obj, key, value) {\n return __defNormalProp$1(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nvar _a;\nvar __defProp$1$1 = Object.defineProperty;\nvar __defNormalProp$1$1 = function(obj, key, value) {\n return key in obj ? __defProp$1$1(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n }) : obj[key] = value;\n};\nvar __publicField$1$1 = function(obj, key, value) {\n return __defNormalProp$1$1(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nvar NodeType$3 = /* @__PURE__ */ function(NodeType2) {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n}(NodeType$3 || {});\nvar testableAccessors$1 = {\n Node: [\n \"childNodes\",\n \"parentNode\",\n \"parentElement\",\n \"textContent\"\n ],\n ShadowRoot: [\n \"host\",\n \"styleSheets\"\n ],\n Element: [\n \"shadowRoot\",\n \"querySelector\",\n \"querySelectorAll\"\n ],\n MutationObserver: []\n};\nvar testableMethods$1 = {\n Node: [\n \"contains\",\n \"getRootNode\"\n ],\n ShadowRoot: [\n \"getSelection\"\n ],\n Element: [],\n MutationObserver: [\n \"constructor\"\n ]\n};\nvar untaintedBasePrototype$1 = {};\nvar isAngularZonePresent$1 = function() {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key]) return untaintedBasePrototype$1[key];\n var defaultObj = globalThis[key];\n var defaultPrototype = defaultObj.prototype;\n var accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n var isUntaintedAccessors = Boolean(accessorNames && // @ts-expect-error 2345\n accessorNames.every(function(accessor) {\n var _a2, _b;\n return Boolean((_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\"));\n }));\n var methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n var isUntaintedMethods = Boolean(methodNames && methodNames.every(// @ts-expect-error 2345\n function(method) {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }));\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {\n untaintedBasePrototype$1[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n var iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n var win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n var untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch (e) {\n return defaultPrototype;\n }\n}\nvar untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n var cacheKey = key + \".\" + String(accessor);\n if (untaintedAccessorCache$1[cacheKey]) return untaintedAccessorCache$1[cacheKey].call(instance);\n var untaintedPrototype = getUntaintedPrototype$1(key);\n var untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(untaintedPrototype, accessor)) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nvar untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n var cacheKey = key + \".\" + String(method);\n if (untaintedMethodCache$1[cacheKey]) return untaintedMethodCache$1[cacheKey].bind(instance);\n var untaintedPrototype = getUntaintedPrototype$1(key);\n var untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nfunction patch$1(source, name, replacement) {\n try {\n if (!(name in source)) {\n return function() {};\n }\n var original = source[name];\n var wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return function() {\n source[name] = original;\n };\n } catch (e) {\n return function() {};\n }\n}\nvar index$1 = {\n childNodes: childNodes$1,\n parentNode: parentNode$1,\n parentElement: parentElement$1,\n textContent: textContent$1,\n contains: contains$1,\n getRootNode: getRootNode$1,\n host: host$1,\n styleSheets: styleSheets$1,\n shadowRoot: shadowRoot$1,\n querySelector: querySelector$1,\n querySelectorAll: querySelectorAll$1,\n mutationObserver: mutationObserverCtor$1,\n patch: patch$1\n};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n var hostEl = // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null;\n return Boolean(hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2);\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(/\\sbackground-clip:\\s*text;/g, \" -webkit-background-clip: text; background-clip: text;\");\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n var cssText = rule2.cssText;\n if (cssText.split('\"').length < 3) return cssText;\n var statement = [\n \"@import\",\n \"url(\" + JSON.stringify(rule2.href) + \")\"\n ];\n if (rule2.layerName === \"\") {\n statement.push(\"layer\");\n } else if (rule2.layerName) {\n statement.push(\"layer(\" + rule2.layerName + \")\");\n }\n if (rule2.supportsText) {\n statement.push(\"supports(\" + rule2.supportsText + \")\");\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n try {\n var rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n var sheetHref = s2.href;\n if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n sheetHref = s2.ownerNode.ownerDocument.location.href;\n }\n var stringifiedRules = Array.from(rules2, function(rule2) {\n return stringifyRule(rule2, sheetHref);\n }).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n var importStringified;\n try {\n importStringified = // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n var ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n var regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nvar Mirror = /*#__PURE__*/ function() {\n function Mirror() {\n __publicField$1$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n var _proto = Mirror.prototype;\n _proto.getId = function getId(n2) {\n var _a2;\n if (!n2) return -1;\n var id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id != null ? id : -1;\n };\n _proto.getNode = function getNode(id) {\n return this.idNodeMap.get(id) || null;\n };\n _proto.getIds = function getIds() {\n return Array.from(this.idNodeMap.keys());\n };\n _proto.getMeta = function getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n };\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n _proto.removeNodeFromMap = function removeNodeFromMap(n2) {\n var _this = this;\n var id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(function(childNode) {\n return _this.removeNodeFromMap(childNode);\n });\n }\n };\n _proto.has = function has(id) {\n return this.idNodeMap.has(id);\n };\n _proto.hasNode = function hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n };\n _proto.add = function add(n2, meta) {\n var id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n };\n _proto.replace = function replace(id, n2) {\n var oldNode = this.getNode(id);\n if (oldNode) {\n var meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n };\n _proto.reset = function reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n };\n return Mirror;\n}();\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue(param) {\n var element = param.element, maskInputOptions = param.maskInputOptions, tagName = param.tagName, type = param.type, value = param.value, maskInputFn = param.maskInputFn;\n var text = value || \"\";\n var actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nvar ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n var ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n var chunkSize = 50;\n for(var x2 = 0; x2 < canvas.width; x2 += chunkSize){\n for(var y = 0; y < canvas.height; y += chunkSize){\n var getImageData = ctx.getImageData;\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n var pixelBuffer = new Uint32Array(// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(ctx, x2, y, Math.min(chunkSize, canvas.width - x2), Math.min(chunkSize, canvas.height - y)).data.buffer);\n if (pixelBuffer.some(function(pixel) {\n return pixel !== 0;\n })) return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n var type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n var url;\n try {\n url = new URL(path, baseURL != null ? baseURL : window.location.href);\n } catch (err) {\n return null;\n }\n var regex = /\\.([0-9a-z]+)(?:$)/i;\n var match = url.pathname.match(regex);\n var _ref;\n return (_ref = match == null ? void 0 : match[1]) != null ? _ref : null;\n}\nfunction extractOrigin(url) {\n var origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nvar URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nvar URL_WWW_MATCH = /^www\\..*/i;\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(URL_IN_CSS_REF, function(origin, quote1, path1, quote2, path2, path3) {\n var filePath = path1 || path2 || path3;\n var maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return \"url(\" + maybeQuote + filePath + maybeQuote + \")\";\n }\n if (DATA_URI.test(filePath)) {\n return \"url(\" + maybeQuote + filePath + maybeQuote + \")\";\n }\n if (filePath[0] === \"/\") {\n return \"url(\" + maybeQuote + (extractOrigin(href) + filePath) + maybeQuote + \")\";\n }\n var stack = href.split(\"/\");\n var parts = filePath.split(\"/\");\n stack.pop();\n for(var _iterator = _create_for_of_iterator_helper_loose(parts), _step; !(_step = _iterator()).done;){\n var part = _step.value;\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return \"url(\" + maybeQuote + stack.join(\"/\") + maybeQuote + \")\";\n });\n}\nfunction normalizeCssString(cssText, _testNoPxNorm) {\n if (_testNoPxNorm === void 0) _testNoPxNorm = false;\n if (_testNoPxNorm) {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n } else {\n return cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\").replace(/0px/g, \"0\");\n }\n}\nfunction splitCssText(cssText, style, _testNoPxNorm) {\n if (_testNoPxNorm === void 0) _testNoPxNorm = false;\n var childNodes2 = Array.from(style.childNodes);\n var splits = [];\n var iterCount = 0;\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n var cssTextNorm = normalizeCssString(cssText, _testNoPxNorm);\n var normFactor = cssTextNorm.length / cssText.length;\n for(var i2 = 1; i2 < childNodes2.length; i2++){\n if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n var textContentNorm = normalizeCssString(childNodes2[i2].textContent, _testNoPxNorm);\n var jLimit = 100;\n var j = 3;\n for(; j < textContentNorm.length; j++){\n if (// keep consuming css identifiers (to get a decent chunk more quickly)\n textContentNorm[j].match(/[a-zA-Z0-9]/) || // substring needs to be unique to this section\n textContentNorm.indexOf(textContentNorm.substring(0, j), 1) !== -1) {\n continue;\n }\n break;\n }\n for(; j < textContentNorm.length; j++){\n var startSubstring = textContentNorm.substring(0, j);\n var cssNormSplits = cssTextNorm.split(startSubstring);\n var splitNorm = -1;\n if (cssNormSplits.length === 2) {\n splitNorm = cssNormSplits[0].length;\n } else if (cssNormSplits.length > 2 && cssNormSplits[0] === \"\" && childNodes2[i2 - 1].textContent !== \"\") {\n splitNorm = cssTextNorm.indexOf(startSubstring, 1);\n } else if (cssNormSplits.length === 1) {\n startSubstring = startSubstring.substring(0, startSubstring.length - 1);\n cssNormSplits = cssTextNorm.split(startSubstring);\n if (cssNormSplits.length <= 1) {\n splits.push(cssText);\n return splits;\n }\n j = jLimit + 1;\n } else if (j === textContentNorm.length - 1) {\n splitNorm = cssTextNorm.indexOf(startSubstring);\n }\n if (cssNormSplits.length >= 2 && j > jLimit) {\n var prevTextContent = childNodes2[i2 - 1].textContent;\n if (prevTextContent && typeof prevTextContent === \"string\") {\n var prevMinLength = normalizeCssString(prevTextContent).length;\n splitNorm = cssTextNorm.indexOf(startSubstring, prevMinLength);\n }\n if (splitNorm === -1) {\n splitNorm = cssNormSplits[0].length;\n }\n }\n if (splitNorm !== -1) {\n var k = Math.floor(splitNorm / normFactor);\n for(; k > 0 && k < cssText.length;){\n iterCount += 1;\n if (iterCount > 50 * childNodes2.length) {\n splits.push(cssText);\n return splits;\n }\n var normPart = normalizeCssString(cssText.substring(0, k), _testNoPxNorm);\n if (normPart.length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n cssTextNorm = cssTextNorm.substring(splitNorm);\n break;\n } else if (normPart.length < splitNorm) {\n k += Math.max(1, Math.floor((splitNorm - normPart.length) / normFactor));\n } else {\n k -= Math.max(1, Math.floor((normPart.length - splitNorm) * normFactor));\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText);\n return splits;\n}\nfunction markCssSplits(cssText, style) {\n return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nvar _id = 1;\nvar tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nvar IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (_instanceof(element, HTMLFormElement)) {\n return \"form\";\n }\n var processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nvar canvasService;\nvar canvasCtx;\nvar SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nvar SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n var pos = 0;\n function collectCharacters(regEx) {\n var chars2;\n var match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars2 = match[0];\n pos += chars2.length;\n return chars2;\n }\n return \"\";\n }\n var output = [];\n while(true){\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n var url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n var descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n var inParens = false;\n while(true){\n var c2 = attributeValue.charAt(pos);\n if (c2 === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c2 === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c2 === \"(\") {\n inParens = true;\n }\n } else {\n if (c2 === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c2;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nvar cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n var a2 = cachedDocument.get(doc);\n if (!a2) {\n a2 = doc.createElement(\"a\");\n cachedDocument.set(doc, a2);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a2.setAttribute(\"href\", customHref);\n return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for(var eIndex = element.classList.length; eIndex--;){\n var className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e2) {}\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n }\n for(var eIndex = node2.classList.length; eIndex--;){\n var className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n var el;\n if (isElement(node2)) {\n el = node2;\n if (!index$1.childNodes(el).length) {\n return false;\n }\n } else if (index$1.parentElement(node2) === null) {\n return false;\n } else {\n el = index$1.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(\".\" + maskTextClass)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e2) {}\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n var win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n var fired = false;\n var readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n var timer = setTimeout(function() {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", function() {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n var blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n var fired = false;\n var styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n var timer = setTimeout(function() {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", function() {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n var doc = options.doc, mirror2 = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, needsMask = options.needsMask, inlineStylesheet = options.inlineStylesheet, _options_maskInputOptions = options.maskInputOptions, maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _options_newlyAddedElement = options.newlyAddedElement, newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement, _options_cssCaptured = options.cssCaptured, cssCaptured = _options_cssCaptured === void 0 ? false : _options_cssCaptured;\n var rootId = getRootId(doc, mirror2);\n switch(n2.nodeType){\n case n2.DOCUMENT_NODE:\n if (n2.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType$3.Document,\n childNodes: [],\n compatMode: n2.compatMode\n };\n } else {\n return {\n type: NodeType$3.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$3.DocumentType,\n name: n2.name,\n publicId: n2.publicId,\n systemId: n2.systemId,\n rootId: rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc: doc,\n blockClass: blockClass,\n blockSelector: blockSelector,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskInputFn: maskInputFn,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n keepIframeSrcFn: keepIframeSrcFn,\n newlyAddedElement: newlyAddedElement,\n rootId: rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc: doc,\n needsMask: needsMask,\n maskTextFn: maskTextFn,\n rootId: rootId,\n cssCaptured: cssCaptured\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$3.CDATA,\n textContent: \"\",\n rootId: rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$3.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId: rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n var docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n var needsMask = options.needsMask, maskTextFn = options.maskTextFn, rootId = options.rootId, cssCaptured = options.cssCaptured;\n var parent = index$1.parentNode(n2);\n var parentTagName = parent && parent.tagName;\n var textContent2 = \"\";\n var isStyle = parentTagName === \"STYLE\" ? true : void 0;\n var isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isScript) {\n textContent2 = \"SCRIPT_PLACEHOLDER\";\n } else if (!cssCaptured) {\n textContent2 = index$1.textContent(n2);\n if (isStyle && textContent2) {\n textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent2 && needsMask) {\n textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$3.Text,\n textContent: textContent2 || \"\",\n rootId: rootId\n };\n}\nfunction serializeElementNode(n2, options) {\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _options_maskInputOptions = options.maskInputOptions, maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions, maskInputFn = options.maskInputFn, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _options_newlyAddedElement = options.newlyAddedElement, newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement, rootId = options.rootId;\n var needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n var tagName = getValidTagName$1(n2);\n var attributes = {};\n var len = n2.attributes.length;\n for(var i2 = 0; i2 < len; i2++){\n var attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value);\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n var stylesheet = Array.from(doc.styleSheets).find(function(s2) {\n return s2.href === n2.href;\n });\n var cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"style\" && n2.sheet) {\n var cssText1 = stringifyStylesheet(n2.sheet);\n if (cssText1) {\n if (n2.childNodes.length > 1) {\n cssText1 = markCssSplits(cssText1, n2);\n }\n attributes._cssText = cssText1;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n var value = n2.value;\n var checked = n2.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n2,\n type: getInputType(n2),\n tagName: tagName,\n value: value,\n maskInputOptions: maskInputOptions,\n maskInputFn: maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n2.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n2.open) {\n attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n2.__context === \"2d\") {\n if (!is2DCanvasBlank(n2)) {\n attributes.rr_dataURL = n2.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n }\n } else if (!(\"__context\" in n2)) {\n var canvasDataURL = n2.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n var blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n var image = n2;\n var imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"\";\n var priorCrossOrigin = image.crossOrigin;\n var recordInlineImage = function() {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\"Cannot inline img src=\" + imageSrc + \"! Error: \" + err);\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n var mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n mediaAttributes.rr_mediaMuted = n2.muted;\n mediaAttributes.rr_mediaLoop = n2.loop;\n mediaAttributes.rr_mediaVolume = n2.volume;\n }\n if (!newlyAddedElement) {\n if (n2.scrollLeft) {\n attributes.rr_scrollLeft = n2.scrollLeft;\n }\n if (n2.scrollTop) {\n attributes.rr_scrollTop = n2.scrollTop;\n }\n }\n if (needBlock) {\n var _n2_getBoundingClientRect = n2.getBoundingClientRect(), width = _n2_getBoundingClientRect.width, height = _n2_getBoundingClientRect.height;\n attributes = {\n class: attributes.class,\n rr_width: \"\" + width + \"px\",\n rr_height: \"\" + height + \"px\"\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n2.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n var isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {}\n return {\n type: NodeType$3.Element,\n tagName: tagName,\n attributes: attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock: needBlock,\n rootId: rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n return true;\n } else if (sn.type === NodeType$3.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" && sn.attributes.as === \"script\" || sn.attributes.rel === \"modulepreload\") || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n2, options) {\n var doc = options.doc, mirror2 = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, _options_skipChild = options.skipChild, skipChild = _options_skipChild === void 0 ? false : _options_skipChild, _options_inlineStylesheet = options.inlineStylesheet, inlineStylesheet = _options_inlineStylesheet === void 0 ? true : _options_inlineStylesheet, _options_maskInputOptions = options.maskInputOptions, maskInputOptions = _options_maskInputOptions === void 0 ? {} : _options_maskInputOptions, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, slimDOMOptions = options.slimDOMOptions, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, _options_inlineImages = options.inlineImages, inlineImages = _options_inlineImages === void 0 ? false : _options_inlineImages, _options_recordCanvas = options.recordCanvas, recordCanvas = _options_recordCanvas === void 0 ? false : _options_recordCanvas, onSerialize = options.onSerialize, onIframeLoad = options.onIframeLoad, _options_iframeLoadTimeout = options.iframeLoadTimeout, iframeLoadTimeout = _options_iframeLoadTimeout === void 0 ? 5e3 : _options_iframeLoadTimeout, onStylesheetLoad = options.onStylesheetLoad, _options_stylesheetLoadTimeout = options.stylesheetLoadTimeout, stylesheetLoadTimeout = _options_stylesheetLoadTimeout === void 0 ? 5e3 : _options_stylesheetLoadTimeout, _options_keepIframeSrcFn = options.keepIframeSrcFn, keepIframeSrcFn = _options_keepIframeSrcFn === void 0 ? function() {\n return false;\n } : _options_keepIframeSrcFn, _options_newlyAddedElement = options.newlyAddedElement, newlyAddedElement = _options_newlyAddedElement === void 0 ? false : _options_newlyAddedElement, _options_cssCaptured = options.cssCaptured, cssCaptured = _options_cssCaptured === void 0 ? false : _options_cssCaptured;\n var needsMask = options.needsMask;\n var _options_preserveWhiteSpace = options.preserveWhiteSpace, preserveWhiteSpace = _options_preserveWhiteSpace === void 0 ? true : _options_preserveWhiteSpace;\n if (!needsMask) {\n var checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(n2, maskTextClass, maskTextSelector, checkAncestors);\n }\n var _serializedNode = serializeNode(n2, {\n doc: doc,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n needsMask: needsMask,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n keepIframeSrcFn: keepIframeSrcFn,\n newlyAddedElement: newlyAddedElement,\n cssCaptured: cssCaptured\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n var id;\n if (mirror2.hasNode(n2)) {\n id = mirror2.getId(n2);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n var serializedNode = Object.assign(_serializedNode, {\n id: id\n });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n var recordChild = !skipChild;\n if (serializedNode.type === NodeType$3.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n var shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl)) serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n var bypassOptions = {\n doc: doc,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n needsMask: needsMask,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: skipChild,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n onStylesheetLoad: onStylesheetLoad,\n stylesheetLoadTimeout: stylesheetLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn,\n cssCaptured: false\n };\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n bypassOptions.cssCaptured = true;\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(Array.from(index$1.childNodes(n2))), _step; !(_step = _iterator()).done;){\n var childN = _step.value;\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n var shadowRootEl1 = null;\n if (isElement(n2) && (shadowRootEl1 = index$1.shadowRoot(n2))) {\n for(var _iterator1 = _create_for_of_iterator_helper_loose(Array.from(index$1.childNodes(shadowRootEl1))), _step1; !(_step1 = _iterator1()).done;){\n var childN1 = _step1.value;\n var serializedChildNode1 = serializeNodeWithId(childN1, bypassOptions);\n if (serializedChildNode1) {\n isNativeShadowDom(shadowRootEl1) && (serializedChildNode1.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode1);\n }\n }\n }\n }\n var parent = index$1.parentNode(n2);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(n2, function() {\n var iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n needsMask: needsMask,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: false,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n onStylesheetLoad: onStylesheetLoad,\n stylesheetLoadTimeout: stylesheetLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(n2, serializedIframeNode);\n }\n }\n }, iframeLoadTimeout);\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(n2, function() {\n if (onStylesheetLoad) {\n var serializedLinkNode = serializeNodeWithId(n2, {\n doc: doc,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n needsMask: needsMask,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: false,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n onStylesheetLoad: onStylesheetLoad,\n stylesheetLoadTimeout: stylesheetLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(n2, serializedLinkNode);\n }\n }\n }, stylesheetLoadTimeout);\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n var _ref = options || {}, tmp = _ref.mirror, mirror2 = tmp === void 0 ? new Mirror() : tmp, _ref_blockClass = _ref.blockClass, blockClass = _ref_blockClass === void 0 ? \"rr-block\" : _ref_blockClass, _ref_blockSelector = _ref.blockSelector, blockSelector = _ref_blockSelector === void 0 ? null : _ref_blockSelector, _ref_maskTextClass = _ref.maskTextClass, maskTextClass = _ref_maskTextClass === void 0 ? \"rr-mask\" : _ref_maskTextClass, _ref_maskTextSelector = _ref.maskTextSelector, maskTextSelector = _ref_maskTextSelector === void 0 ? null : _ref_maskTextSelector, _ref_inlineStylesheet = _ref.inlineStylesheet, inlineStylesheet = _ref_inlineStylesheet === void 0 ? true : _ref_inlineStylesheet, _ref_inlineImages = _ref.inlineImages, inlineImages = _ref_inlineImages === void 0 ? false : _ref_inlineImages, _ref_recordCanvas = _ref.recordCanvas, recordCanvas = _ref_recordCanvas === void 0 ? false : _ref_recordCanvas, _ref_maskAllInputs = _ref.maskAllInputs, maskAllInputs = _ref_maskAllInputs === void 0 ? false : _ref_maskAllInputs, maskTextFn = _ref.maskTextFn, maskInputFn = _ref.maskInputFn, _ref_slimDOM = _ref.slimDOM, slimDOM = _ref_slimDOM === void 0 ? false : _ref_slimDOM, dataURLOptions = _ref.dataURLOptions, preserveWhiteSpace = _ref.preserveWhiteSpace, onSerialize = _ref.onSerialize, onIframeLoad = _ref.onIframeLoad, iframeLoadTimeout = _ref.iframeLoadTimeout, onStylesheetLoad = _ref.onStylesheetLoad, stylesheetLoadTimeout = _ref.stylesheetLoadTimeout, _ref_keepIframeSrcFn = _ref.keepIframeSrcFn, keepIframeSrcFn = _ref_keepIframeSrcFn === void 0 ? function() {\n return false;\n } : _ref_keepIframeSrcFn;\n var maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true,\n hidden: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n var slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n } : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n skipChild: false,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n inlineImages: inlineImages,\n recordCanvas: recordCanvas,\n preserveWhiteSpace: preserveWhiteSpace,\n onSerialize: onSerialize,\n onIframeLoad: onIframeLoad,\n iframeLoadTimeout: iframeLoadTimeout,\n onStylesheetLoad: onStylesheetLoad,\n stylesheetLoadTimeout: stylesheetLoadTimeout,\n keepIframeSrcFn: keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nfunction getDefaultExportFromCjs$1(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace$1(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (_instanceof(this, a22)) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", {\n value: true\n });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function get() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = {\n exports: {}\n};\nvar x$1 = String;\nvar create$1 = function create$1() {\n return {\n isColorSupported: false,\n reset: x$1,\n bold: x$1,\n dim: x$1,\n italic: x$1,\n underline: x$1,\n inverse: x$1,\n hidden: x$1,\n strikethrough: x$1,\n black: x$1,\n red: x$1,\n green: x$1,\n yellow: x$1,\n blue: x$1,\n magenta: x$1,\n cyan: x$1,\n white: x$1,\n gray: x$1,\n bgBlack: x$1,\n bgRed: x$1,\n bgGreen: x$1,\n bgYellow: x$1,\n bgBlue: x$1,\n bgMagenta: x$1,\n bgCyan: x$1,\n bgWhite: x$1\n };\n};\npicocolors_browser$1.exports = create$1();\npicocolors_browser$1.exports.createColors = create$1;\nvar picocolors_browserExports$1 = picocolors_browser$1.exports;\nvar __viteBrowserExternal$2 = {};\nvar __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, {\n value: \"Module\"\n}));\nvar require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nvar pico$1 = picocolors_browserExports$1;\nvar terminalHighlight$1$1 = require$$2$1;\nvar CssSyntaxError$3$1 = /*#__PURE__*/ function(Error1) {\n _inherits(CssSyntaxError, Error1);\n function CssSyntaxError(message, line, column, source, file, plugin22) {\n var _this;\n _this = Error1.call(this, message) || this;\n _this.name = \"CssSyntaxError\";\n _this.reason = message;\n if (file) {\n _this.file = file;\n }\n if (source) {\n _this.source = source;\n }\n if (plugin22) {\n _this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n _this.line = line;\n _this.column = column;\n } else {\n _this.line = line.line;\n _this.column = line.column;\n _this.endLine = column.line;\n _this.endColumn = column.column;\n }\n }\n _this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_this, CssSyntaxError);\n }\n return _this;\n }\n var _proto = CssSyntaxError.prototype;\n _proto.setMessage = function setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n };\n _proto.showSourceCode = function showSourceCode(color) {\n var _this = this;\n if (!this.source) return \"\";\n var css = this.source;\n if (color == null) color = pico$1.isColorSupported;\n if (terminalHighlight$1$1) {\n if (color) css = terminalHighlight$1$1(css);\n }\n var lines = css.split(/\\r?\\n/);\n var start = Math.max(this.line - 3, 0);\n var end = Math.min(this.line + 2, lines.length);\n var maxWidth = String(end).length;\n var mark, aside;\n if (color) {\n var _pico$1_createColors = pico$1.createColors(true), bold = _pico$1_createColors.bold, gray = _pico$1_createColors.gray, red = _pico$1_createColors.red;\n mark = function(text) {\n return bold(red(text));\n };\n aside = function(text) {\n return gray(text);\n };\n } else {\n mark = aside = function(str) {\n return str;\n };\n }\n return lines.slice(start, end).map(function(line, index2) {\n var number = start + 1 + index2;\n var gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === _this.line) {\n var spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, _this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n };\n _proto.toString = function toString() {\n var code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n };\n return CssSyntaxError;\n}(_wrap_native_super(Error));\nvar cssSyntaxError$1 = CssSyntaxError$3$1;\nCssSyntaxError$3$1.default = CssSyntaxError$3$1;\nvar symbols$1 = {};\nsymbols$1.isClean = Symbol(\"isClean\");\nsymbols$1.my = Symbol(\"my\");\nvar DEFAULT_RAW$1 = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize$1(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nvar Stringifier$2$1 = /*#__PURE__*/ function() {\n function Stringifier(builder) {\n this.builder = builder;\n }\n var _proto = Stringifier.prototype;\n _proto.atrule = function atrule(node2, semicolon) {\n var name = \"@\" + node2.name;\n var params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n var end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n };\n _proto.beforeAfter = function beforeAfter(node2, detect) {\n var value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n var buf = node2.parent;\n var depth = 0;\n while(buf && buf.type !== \"root\"){\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n var indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for(var step = 0; step < depth; step++)value += indent;\n }\n }\n return value;\n };\n _proto.block = function block(node2, start) {\n var between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n var after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n };\n _proto.body = function body(node2) {\n var last = node2.nodes.length - 1;\n while(last > 0){\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n var semicolon = this.raw(node2, \"semicolon\");\n for(var i2 = 0; i2 < node2.nodes.length; i2++){\n var child = node2.nodes[i2];\n var before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n };\n _proto.comment = function comment(node2) {\n var left = this.raw(node2, \"left\", \"commentLeft\");\n var right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n };\n _proto.decl = function decl(node2, semicolon) {\n var between = this.raw(node2, \"between\", \"colon\");\n var string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n };\n _proto.document = function document1(node2) {\n this.body(node2);\n };\n _proto.raw = function raw(node2, own, detect) {\n var value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n var parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW$1[detect];\n var root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n var method = \"raw\" + capitalize$1(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk(function(i2) {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW$1[detect];\n root2.rawCache[detect] = value;\n return value;\n };\n _proto.rawBeforeClose = function rawBeforeClose(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n };\n _proto.rawBeforeComment = function rawBeforeComment(root2, node2) {\n var value;\n root2.walkComments(function(i2) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n };\n _proto.rawBeforeDecl = function rawBeforeDecl(root2, node2) {\n var value;\n root2.walkDecls(function(i2) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n };\n _proto.rawBeforeOpen = function rawBeforeOpen(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawBeforeRule = function rawBeforeRule(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n };\n _proto.rawColon = function rawColon(root2) {\n var value;\n root2.walkDecls(function(i2) {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n };\n _proto.rawEmptyBody = function rawEmptyBody(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawIndent = function rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n var value;\n root2.walk(function(i2) {\n var p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n var parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n };\n _proto.rawSemicolon = function rawSemicolon(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawValue = function rawValue(node2, prop) {\n var value = node2[prop];\n var raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n };\n _proto.root = function root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n };\n _proto.rule = function rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n };\n _proto.stringify = function stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\");\n }\n this[node2.type](node2, semicolon);\n };\n return Stringifier;\n}();\nvar stringifier$1 = Stringifier$2$1;\nStringifier$2$1.default = Stringifier$2$1;\nvar Stringifier$1$1 = stringifier$1;\nfunction stringify$4$1(node2, builder) {\n var str = new Stringifier$1$1(builder);\n str.stringify(node2);\n}\nvar stringify_1$1 = stringify$4$1;\nstringify$4$1.default = stringify$4$1;\nvar isClean$2$1 = symbols$1.isClean, my$2$1 = symbols$1.my;\nvar CssSyntaxError$2$1 = cssSyntaxError$1;\nvar Stringifier2$1 = stringifier$1;\nvar stringify$3$1 = stringify_1$1;\nfunction cloneNode$1(obj, parent) {\n var cloned = new obj.constructor();\n for(var i2 in obj){\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n var value = obj[i2];\n var type = typeof value === \"undefined\" ? \"undefined\" : _type_of(value);\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map(function(j) {\n return cloneNode$1(j, cloned);\n });\n } else {\n if (type === \"object\" && value !== null) value = cloneNode$1(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nvar Node$4$1 = /*#__PURE__*/ function() {\n function Node2(defaults) {\n if (defaults === void 0) defaults = {};\n this.raws = {};\n this[isClean$2$1] = false;\n this[my$2$1] = true;\n for(var name in defaults){\n if (name === \"nodes\") {\n this.nodes = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(defaults[name]), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n var _proto = Node2.prototype;\n _proto.addToError = function addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n var s2 = this.source;\n error.stack = error.stack.replace(/\\n\\s{4}at /, \"$&\" + s2.input.from + \":\" + s2.start.line + \":\" + s2.start.column + \"$&\");\n }\n return error;\n };\n _proto.after = function after(add) {\n this.parent.insertAfter(this, add);\n return this;\n };\n _proto.assign = function assign(overrides) {\n if (overrides === void 0) overrides = {};\n for(var name in overrides){\n this[name] = overrides[name];\n }\n return this;\n };\n _proto.before = function before(add) {\n this.parent.insertBefore(this, add);\n return this;\n };\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n };\n _proto.clone = function clone(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = cloneNode$1(this);\n for(var name in overrides){\n cloned[name] = overrides[name];\n }\n return cloned;\n };\n _proto.cloneAfter = function cloneAfter(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n };\n _proto.cloneBefore = function cloneBefore(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n };\n _proto.error = function error(message, opts) {\n if (opts === void 0) opts = {};\n if (this.source) {\n var _this_rangeBy = this.rangeBy(opts), end = _this_rangeBy.end, start = _this_rangeBy.start;\n return this.source.input.error(message, {\n column: start.column,\n line: start.line\n }, {\n column: end.column,\n line: end.line\n }, opts);\n }\n return new CssSyntaxError$2$1(message);\n };\n _proto.getProxyProcessor = function getProxyProcessor() {\n return {\n get: function get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return function() {\n return node2.root().toProxy();\n };\n } else {\n return node2[prop];\n }\n },\n set: function set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */ prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n };\n _proto.markDirty = function markDirty() {\n if (this[isClean$2$1]) {\n this[isClean$2$1] = false;\n var next = this;\n while(next = next.parent){\n next[isClean$2$1] = false;\n }\n }\n };\n _proto.next = function next() {\n if (!this.parent) return void 0;\n var index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n };\n _proto.positionBy = function positionBy(opts, stringRepresentation) {\n var pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n var index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n };\n _proto.positionInside = function positionInside(index2, stringRepresentation) {\n var string = stringRepresentation || this.toString();\n var column = this.source.start.column;\n var line = this.source.start.line;\n for(var i2 = 0; i2 < index2; i2++){\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return {\n column: column,\n line: line\n };\n };\n _proto.prev = function prev() {\n if (!this.parent) return void 0;\n var index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n };\n _proto.rangeBy = function rangeBy(opts) {\n var start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n var end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n var stringRepresentation = this.toString();\n var index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = {\n column: start.column + 1,\n line: start.line\n };\n }\n return {\n end: end,\n start: start\n };\n };\n _proto.raw = function raw(prop, defaultType) {\n var str = new Stringifier2$1();\n return str.raw(this, prop, defaultType);\n };\n _proto.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n };\n _proto.replaceWith = function replaceWith() {\n for(var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++){\n nodes[_key] = arguments[_key];\n }\n if (this.parent) {\n var bookmark = this;\n var foundSelf = false;\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n };\n _proto.root = function root() {\n var result2 = this;\n while(result2.parent && result2.parent.type !== \"document\"){\n result2 = result2.parent;\n }\n return result2;\n };\n _proto.toJSON = function toJSON(_, inputs) {\n var fixed = {};\n var emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n var inputsNextIndex = 0;\n for(var name in this){\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n var value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map(function(i2) {\n if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if ((typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n var inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId: inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [].concat(inputs.keys()).map(function(input2) {\n return input2.toJSON();\n });\n }\n return fixed;\n };\n _proto.toProxy = function toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n };\n _proto.toString = function toString(stringifier2) {\n if (stringifier2 === void 0) stringifier2 = stringify$3$1;\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n var result2 = \"\";\n stringifier2(this, function(i2) {\n result2 += i2;\n });\n return result2;\n };\n _proto.warn = function warn(result2, text, opts) {\n var data = {\n node: this\n };\n for(var i2 in opts)data[i2] = opts[i2];\n return result2.warn(text, data);\n };\n _create_class(Node2, [\n {\n key: \"proxyOf\",\n get: function get() {\n return this;\n }\n }\n ]);\n return Node2;\n}();\nvar node$1 = Node$4$1;\nNode$4$1.default = Node$4$1;\nvar Node$3$1 = node$1;\nvar Declaration$4$1 = /*#__PURE__*/ function(Node$3$1) {\n _inherits(Declaration, Node$3$1);\n function Declaration(defaults) {\n var _this;\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = _extends({}, defaults, {\n value: String(defaults.value)\n });\n }\n _this = Node$3$1.call(this, defaults) || this;\n _this.type = \"decl\";\n return _this;\n }\n _create_class(Declaration, [\n {\n key: \"variable\",\n get: function get() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n }\n ]);\n return Declaration;\n}(Node$3$1);\nvar declaration$1 = Declaration$4$1;\nDeclaration$4$1.default = Declaration$4$1;\nvar urlAlphabet$1 = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nvar nanoid$1$1 = function(size) {\n if (size === void 0) size = 21;\n var id = \"\";\n var i2 = size;\n while(i2--){\n id += urlAlphabet$1[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure$1 = {\n nanoid: nanoid$1$1\n};\nvar SourceMapConsumer$2$1 = require$$2$1.SourceMapConsumer, SourceMapGenerator$2$1 = require$$2$1.SourceMapGenerator;\nvar existsSync$1 = require$$2$1.existsSync, readFileSync$1 = require$$2$1.readFileSync;\nvar dirname$1$1 = require$$2$1.dirname, join$1 = require$$2$1.join;\nfunction fromBase64$1(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nvar PreviousMap$2$1 = /*#__PURE__*/ function() {\n function PreviousMap(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n var prev = opts.map ? opts.map.prev : void 0;\n var text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1$1(this.mapFile);\n if (text) this.text = text;\n }\n var _proto = PreviousMap.prototype;\n _proto.consumer = function consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2$1(this.text);\n }\n return this.consumerCache;\n };\n _proto.decodeInline = function decodeInline(text) {\n var baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n var baseUri = /^data:application\\/json;base64,/;\n var charsetUri = /^data:application\\/json;charset=utf-?8,/;\n var uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64$1(text.substr(RegExp.lastMatch.length));\n }\n var encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n };\n _proto.getAnnotationURL = function getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n };\n _proto.isMap = function isMap(map) {\n if ((typeof map === \"undefined\" ? \"undefined\" : _type_of(map)) !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n };\n _proto.loadAnnotation = function loadAnnotation(css) {\n var comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n var start = css.lastIndexOf(comments.pop());\n var end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n };\n _proto.loadFile = function loadFile(path) {\n this.root = dirname$1$1(path);\n if (existsSync$1(path)) {\n this.mapFile = path;\n return readFileSync$1(path, \"utf-8\").toString().trim();\n }\n };\n _proto.loadMap = function loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n var prevPath = prev(file);\n if (prevPath) {\n var map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\"Unable to load previous source map: \" + prevPath.toString());\n }\n return map;\n }\n } else if (_instanceof(prev, SourceMapConsumer$2$1)) {\n return SourceMapGenerator$2$1.fromSourceMap(prev).toString();\n } else if (_instanceof(prev, SourceMapGenerator$2$1)) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\"Unsupported previous source map format: \" + prev.toString());\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n var map1 = this.annotation;\n if (file) map1 = join$1(dirname$1$1(file), map1);\n return this.loadFile(map1);\n }\n };\n _proto.startWith = function startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n };\n _proto.withContent = function withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n };\n return PreviousMap;\n}();\nvar previousMap$1 = PreviousMap$2$1;\nPreviousMap$2$1.default = PreviousMap$2$1;\nvar SourceMapConsumer$1$1 = require$$2$1.SourceMapConsumer, SourceMapGenerator$1$1 = require$$2$1.SourceMapGenerator;\nvar fileURLToPath$1 = require$$2$1.fileURLToPath, pathToFileURL$1$1 = require$$2$1.pathToFileURL;\nvar isAbsolute$1 = require$$2$1.isAbsolute, resolve$1$1 = require$$2$1.resolve;\nvar nanoid$2 = nonSecure$1.nanoid;\nvar terminalHighlight$2 = require$$2$1;\nvar CssSyntaxError$1$1 = cssSyntaxError$1;\nvar PreviousMap$1$1 = previousMap$1;\nvar fromOffsetCache$1 = Symbol(\"fromOffsetCache\");\nvar sourceMapAvailable$1$1 = Boolean(SourceMapConsumer$1$1 && SourceMapGenerator$1$1);\nvar pathAvailable$1$1 = Boolean(resolve$1$1 && isAbsolute$1);\nvar Input$4$1 = /*#__PURE__*/ function() {\n function Input(css, opts) {\n if (opts === void 0) opts = {};\n if (css === null || typeof css === \"undefined\" || (typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && !css.toString) {\n throw new Error(\"PostCSS received \" + css + \" instead of CSS string\");\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute$1(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1$1(opts.from);\n }\n }\n if (pathAvailable$1$1 && sourceMapAvailable$1$1) {\n var map = new PreviousMap$1$1(this.css, opts);\n if (map.text) {\n this.map = map;\n var file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n var _proto = Input.prototype;\n _proto.error = function error(message, line, column, opts) {\n if (opts === void 0) opts = {};\n var result2, endLine, endColumn;\n if (line && (typeof line === \"undefined\" ? \"undefined\" : _type_of(line)) === \"object\") {\n var start = line;\n var end = column;\n if (typeof start.offset === \"number\") {\n var pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n var pos1 = this.fromOffset(end.offset);\n endLine = pos1.line;\n endColumn = pos1.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n var pos2 = this.fromOffset(line);\n line = pos2.line;\n column = pos2.col;\n }\n var origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1$1(message, origin.endLine === void 0 ? origin.line : {\n column: origin.column,\n line: origin.line\n }, origin.endLine === void 0 ? origin.column : {\n column: origin.endColumn,\n line: origin.endLine\n }, origin.source, origin.file, opts.plugin);\n } else {\n result2 = new CssSyntaxError$1$1(message, endLine === void 0 ? line : {\n column: column,\n line: line\n }, endLine === void 0 ? column : {\n column: endColumn,\n line: endLine\n }, this.css, this.file, opts.plugin);\n }\n result2.input = {\n column: column,\n endColumn: endColumn,\n endLine: endLine,\n line: line,\n source: this.css\n };\n if (this.file) {\n if (pathToFileURL$1$1) {\n result2.input.url = pathToFileURL$1$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n };\n _proto.fromOffset = function fromOffset(offset) {\n var lastLine, lineToIndex;\n if (!this[fromOffsetCache$1]) {\n var lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n var prevIndex = 0;\n for(var i2 = 0, l2 = lines.length; i2 < l2; i2++){\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache$1] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache$1];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n var min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n var max = lineToIndex.length - 2;\n var mid;\n while(min < max){\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n };\n _proto.mapResolve = function mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n };\n _proto.origin = function origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n var consumer = this.map.consumer();\n var from = consumer.originalPositionFor({\n column: column,\n line: line\n });\n if (!from.source) return false;\n var to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({\n column: endColumn,\n line: endLine\n });\n }\n var fromUrl;\n if (isAbsolute$1(from.source)) {\n fromUrl = pathToFileURL$1$1(from.source);\n } else {\n fromUrl = new URL(from.source, this.map.consumer().sourceRoot || pathToFileURL$1$1(this.map.mapFile));\n }\n var result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath$1) {\n result2.file = fileURLToPath$1(fromUrl);\n } else {\n throw new Error(\"file: protocol is not available in this PostCSS build\");\n }\n }\n var source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n };\n _proto.toJSON = function toJSON() {\n var json = {};\n for(var _i = 0, _iter = [\n \"hasBOM\",\n \"css\",\n \"file\",\n \"id\"\n ]; _i < _iter.length; _i++){\n var name = _iter[_i];\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = _extends({}, this.map);\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n };\n _create_class(Input, [\n {\n key: \"from\",\n get: function get() {\n return this.file || this.id;\n }\n }\n ]);\n return Input;\n}();\nvar input$1 = Input$4$1;\nInput$4$1.default = Input$4$1;\nif (terminalHighlight$2 && terminalHighlight$2.registerInput) {\n terminalHighlight$2.registerInput(Input$4$1);\n}\nvar SourceMapConsumer$3 = require$$2$1.SourceMapConsumer, SourceMapGenerator$3 = require$$2$1.SourceMapGenerator;\nvar dirname$2 = require$$2$1.dirname, relative$1 = require$$2$1.relative, resolve$2 = require$$2$1.resolve, sep$1 = require$$2$1.sep;\nvar pathToFileURL$2 = require$$2$1.pathToFileURL;\nvar Input$3$1 = input$1;\nvar sourceMapAvailable$2 = Boolean(SourceMapConsumer$3 && SourceMapGenerator$3);\nvar pathAvailable$2 = Boolean(dirname$2 && resolve$2 && relative$1 && sep$1);\nvar MapGenerator$2$1 = /*#__PURE__*/ function() {\n function MapGenerator(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n var _proto = MapGenerator.prototype;\n _proto.addAnnotation = function addAnnotation() {\n var content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n var eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n };\n _proto.applyPrevMaps = function applyPrevMaps() {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.previous()), _step; !(_step = _iterator()).done;){\n var prev = _step.value;\n var from = this.toUrl(this.path(prev.file));\n var root2 = prev.root || dirname$2(prev.file);\n var map = void 0;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer$3(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n };\n _proto.clearAnnotation = function clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n var node2;\n for(var i2 = this.root.nodes.length - 1; i2 >= 0; i2--){\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n };\n _proto.generate = function generate() {\n this.clearAnnotation();\n if (pathAvailable$2 && sourceMapAvailable$2 && this.isMap()) {\n return this.generateMap();\n } else {\n var result2 = \"\";\n this.stringify(this.root, function(i2) {\n result2 += i2;\n });\n return [\n result2\n ];\n }\n };\n _proto.generateMap = function generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n var prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator$3.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: {\n column: 0,\n line: 1\n },\n original: {\n column: 0,\n line: 1\n },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [\n this.css\n ];\n } else {\n return [\n this.css,\n this.map\n ];\n }\n };\n _proto.generateString = function generateString() {\n var _this = this;\n this.css = \"\";\n this.map = new SourceMapGenerator$3({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n var line = 1;\n var column = 1;\n var noSource = \"\";\n var mapping = {\n generated: {\n column: 0,\n line: 0\n },\n original: {\n column: 0,\n line: 0\n },\n source: \"\"\n };\n var lines, last;\n this.stringify(this.root, function(str, node2, type) {\n _this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = _this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n _this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n _this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n var p = node2.parent || {\n raws: {}\n };\n var childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = _this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n _this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n _this.map.addMapping(mapping);\n }\n }\n }\n });\n };\n _proto.isAnnotation = function isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.annotation;\n });\n }\n return true;\n };\n _proto.isInline = function isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n var annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.inline;\n });\n }\n return true;\n };\n _proto.isMap = function isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n };\n _proto.isSourcesContent = function isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.withContent();\n });\n }\n return true;\n };\n _proto.outputFile = function outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n };\n _proto.path = function path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n var cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n var from = this.opts.to ? dirname$2(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname$2(resolve$2(from, this.mapOpts.annotation));\n }\n var path = relative$1(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n };\n _proto.previous = function previous() {\n var _this = this;\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk(function(node2) {\n if (node2.source && node2.source.input.map) {\n var map = node2.source.input.map;\n if (!_this.previousMaps.includes(map)) {\n _this.previousMaps.push(map);\n }\n }\n });\n } else {\n var input2 = new Input$3$1(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n };\n _proto.setSourcesContent = function setSourcesContent() {\n var _this = this;\n var already = {};\n if (this.root) {\n this.root.walk(function(node2) {\n if (node2.source) {\n var from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n var fromUrl = _this.usesFileUrls ? _this.toFileUrl(from) : _this.toUrl(_this.path(from));\n _this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n var from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n };\n _proto.sourcePath = function sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n };\n _proto.toBase64 = function toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n };\n _proto.toFileUrl = function toFileUrl(path) {\n var cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL$2) {\n var fileURL = pathToFileURL$2(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\"`map.absolute` option is not available in this PostCSS build\");\n }\n };\n _proto.toUrl = function toUrl(path) {\n var cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep$1 === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n var url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n };\n return MapGenerator;\n}();\nvar mapGenerator$1 = MapGenerator$2$1;\nvar Node$2$1 = node$1;\nvar Comment$4$1 = /*#__PURE__*/ function(Node$2$1) {\n _inherits(Comment, Node$2$1);\n function Comment(defaults) {\n var _this;\n _this = Node$2$1.call(this, defaults) || this;\n _this.type = \"comment\";\n return _this;\n }\n return Comment;\n}(Node$2$1);\nvar comment$1 = Comment$4$1;\nComment$4$1.default = Comment$4$1;\nvar isClean$1$1 = symbols$1.isClean, my$1$1 = symbols$1.my;\nvar Declaration$3$1 = declaration$1;\nvar Comment$3$1 = comment$1;\nvar Node$1$1 = node$1;\nvar parse$4$1, Rule$4$1, AtRule$4$1, Root$6$1;\nfunction cleanSource$1(nodes) {\n return nodes.map(function(i2) {\n if (i2.nodes) i2.nodes = cleanSource$1(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp$1(node2) {\n node2[isClean$1$1] = false;\n if (node2.proxyOf.nodes) {\n for(var _iterator = _create_for_of_iterator_helper_loose(node2.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n markDirtyUp$1(i2);\n }\n }\n}\nvar Container$7$1 = /*#__PURE__*/ function(Node$1$1) {\n _inherits(Container, Node$1$1);\n function Container() {\n return Node$1$1.apply(this, arguments) || this;\n }\n var _proto = Container.prototype;\n _proto.append = function append() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n var child = _step.value;\n var nodes = this.normalize(child, this.last);\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var node2 = _step1.value;\n this.proxyOf.nodes.push(node2);\n }\n }\n this.markDirty();\n return this;\n };\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n Node$1$1.prototype.cleanRaws.call(this, keepBetween);\n if (this.nodes) {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.cleanRaws(keepBetween);\n }\n }\n };\n _proto.each = function each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n var iterator = this.getIterator();\n var index2, result2;\n while(this.indexes[iterator] < this.proxyOf.nodes.length){\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n };\n _proto.every = function every(condition) {\n return this.nodes.every(condition);\n };\n _proto.getIterator = function getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n var iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n };\n _proto.getProxyProcessor = function getProxyProcessor() {\n return {\n get: function get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\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 var _node2;\n return (_node2 = node2)[prop].apply(_node2, [].concat(args.map(function(i2) {\n if (typeof i2 === \"function\") {\n return function(child, index2) {\n return i2(child.toProxy(), index2);\n };\n } else {\n return i2;\n }\n })));\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return function(cb) {\n return node2[prop](function(child) {\n for(var _len = arguments.length, other = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n other[_key - 1] = arguments[_key];\n }\n return cb.apply(void 0, [].concat([\n child.toProxy()\n ], other));\n });\n };\n } else if (prop === \"root\") {\n return function() {\n return node2.root().toProxy();\n };\n } else if (prop === \"nodes\") {\n return node2.nodes.map(function(i2) {\n return i2.toProxy();\n });\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set: function set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n };\n _proto.index = function index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n };\n _proto.insertAfter = function insertAfter(exist, add) {\n var existIndex = this.index(exist);\n var nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n }\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.insertBefore = function insertBefore(exist, add) {\n var existIndex = this.index(exist);\n var type = existIndex === 0 ? \"prepend\" : false;\n var nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n this.proxyOf.nodes.splice(existIndex, 0, node2);\n }\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.normalize = function normalize(nodes, sample) {\n var _this = this;\n if (typeof nodes === \"string\") {\n nodes = cleanSource$1(parse$4$1(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var i21 = _step1.value;\n if (i21.parent) i21.parent.removeChild(i21, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [\n nodes\n ];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [\n new Declaration$3$1(nodes)\n ];\n } else if (nodes.selector) {\n nodes = [\n new Rule$4$1(nodes)\n ];\n } else if (nodes.name) {\n nodes = [\n new AtRule$4$1(nodes)\n ];\n } else if (nodes.text) {\n nodes = [\n new Comment$3$1(nodes)\n ];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n var processed = nodes.map(function(i2) {\n if (!i2[my$1$1]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1$1]) markDirtyUp$1(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = _this.proxyOf;\n return i2;\n });\n return processed;\n };\n _proto.prepend = function prepend() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n children = children.reverse();\n for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n var child = _step.value;\n var nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var node2 = _step1.value;\n this.proxyOf.nodes.unshift(node2);\n }\n for(var id in this.indexes){\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.push = function push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n };\n _proto.removeAll = function removeAll() {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.parent = void 0;\n }\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n };\n _proto.removeChild = function removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.replaceValues = function replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls(function(decl) {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n };\n _proto.some = function some(condition) {\n return this.nodes.some(condition);\n };\n _proto.walk = function walk(callback) {\n return this.each(function(child, i2) {\n var result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n };\n _proto.walkAtRules = function walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(name, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n };\n _proto.walkComments = function walkComments(callback) {\n return this.walk(function(child, i2) {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n };\n _proto.walkDecls = function walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk(function(child, i2) {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(prop, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n };\n _proto.walkRules = function walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk(function(child, i2) {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(selector, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n };\n _create_class(Container, [\n {\n key: \"first\",\n get: function get() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n },\n {\n key: \"last\",\n get: function get() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n }\n ]);\n return Container;\n}(Node$1$1);\nContainer$7$1.registerParse = function(dependant) {\n parse$4$1 = dependant;\n};\nContainer$7$1.registerRule = function(dependant) {\n Rule$4$1 = dependant;\n};\nContainer$7$1.registerAtRule = function(dependant) {\n AtRule$4$1 = dependant;\n};\nContainer$7$1.registerRoot = function(dependant) {\n Root$6$1 = dependant;\n};\nvar container$1 = Container$7$1;\nContainer$7$1.default = Container$7$1;\nContainer$7$1.rebuild = function(node2) {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4$1.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4$1.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3$1.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3$1.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6$1.prototype);\n }\n node2[my$1$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach(function(child) {\n Container$7$1.rebuild(child);\n });\n }\n};\nvar Container$6$1 = container$1;\nvar LazyResult$4$1, Processor$3$1;\nvar Document$3$1 = /*#__PURE__*/ function(Container$6$1) {\n _inherits(Document2, Container$6$1);\n function Document2(defaults) {\n var _this;\n _this = Container$6$1.call(this, _extends({\n type: \"document\"\n }, defaults)) || this;\n if (!_this.nodes) {\n _this.nodes = [];\n }\n return _this;\n }\n var _proto = Document2.prototype;\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) opts = {};\n var lazy = new LazyResult$4$1(new Processor$3$1(), this, opts);\n return lazy.stringify();\n };\n return Document2;\n}(Container$6$1);\nDocument$3$1.registerLazyResult = function(dependant) {\n LazyResult$4$1 = dependant;\n};\nDocument$3$1.registerProcessor = function(dependant) {\n Processor$3$1 = dependant;\n};\nvar document$1$1 = Document$3$1;\nDocument$3$1.default = Document$3$1;\nvar printed$1 = {};\nvar warnOnce$2$1 = function warnOnce(message) {\n if (printed$1[message]) return;\n printed$1[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nvar Warning$2$1 = /*#__PURE__*/ function() {\n function Warning(text, opts) {\n if (opts === void 0) opts = {};\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n var range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for(var opt in opts)this[opt] = opts[opt];\n }\n var _proto = Warning.prototype;\n _proto.toString = function toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n };\n return Warning;\n}();\nvar warning$1 = Warning$2$1;\nWarning$2$1.default = Warning$2$1;\nvar Warning$1$1 = warning$1;\nvar Result$3$1 = /*#__PURE__*/ function() {\n function Result(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n var _proto = Result.prototype;\n _proto.toString = function toString() {\n return this.css;\n };\n _proto.warn = function warn(text, opts) {\n if (opts === void 0) opts = {};\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n var warning2 = new Warning$1$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n };\n _proto.warnings = function warnings() {\n return this.messages.filter(function(i2) {\n return i2.type === \"warning\";\n });\n };\n _create_class(Result, [\n {\n key: \"content\",\n get: function get() {\n return this.css;\n }\n }\n ]);\n return Result;\n}();\nvar result$1 = Result$3$1;\nResult$3$1.default = Result$3$1;\nvar SINGLE_QUOTE$1 = \"'\".charCodeAt(0);\nvar DOUBLE_QUOTE$1 = '\"'.charCodeAt(0);\nvar BACKSLASH$1 = \"\\\\\".charCodeAt(0);\nvar SLASH$1 = \"/\".charCodeAt(0);\nvar NEWLINE$1 = \"\\n\".charCodeAt(0);\nvar SPACE$1 = \" \".charCodeAt(0);\nvar FEED$1 = \"\\f\".charCodeAt(0);\nvar TAB$1 = \"\t\".charCodeAt(0);\nvar CR$1 = \"\\r\".charCodeAt(0);\nvar OPEN_SQUARE$1 = \"[\".charCodeAt(0);\nvar CLOSE_SQUARE$1 = \"]\".charCodeAt(0);\nvar OPEN_PARENTHESES$1 = \"(\".charCodeAt(0);\nvar CLOSE_PARENTHESES$1 = \")\".charCodeAt(0);\nvar OPEN_CURLY$1 = \"{\".charCodeAt(0);\nvar CLOSE_CURLY$1 = \"}\".charCodeAt(0);\nvar SEMICOLON$1 = \";\".charCodeAt(0);\nvar ASTERISK$1 = \"*\".charCodeAt(0);\nvar COLON$1 = \":\".charCodeAt(0);\nvar AT$1 = \"@\".charCodeAt(0);\nvar RE_AT_END$1 = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nvar RE_WORD_END$1 = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET$1 = /.[\\r\\n\"'(/\\\\]/;\nvar RE_HEX_ESCAPE$1 = /[\\da-f]/i;\nvar tokenize$1 = function tokenizer(input2, options) {\n if (options === void 0) options = {};\n var css = input2.css.valueOf();\n var ignore = options.ignoreErrors;\n var code, next, quote, content, escape;\n var escaped, escapePos, prev, n2, currentToken;\n var length = css.length;\n var pos = 0;\n var buffer = [];\n var returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n var ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch(code){\n case NEWLINE$1:\n case SPACE$1:\n case TAB$1:\n case CR$1:\n case FEED$1:\n {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n }while (code === SPACE$1 || code === NEWLINE$1 || code === TAB$1 || code === CR$1 || code === FEED$1);\n currentToken = [\n \"space\",\n css.slice(pos, next)\n ];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE$1:\n case CLOSE_SQUARE$1:\n case OPEN_CURLY$1:\n case CLOSE_CURLY$1:\n case COLON$1:\n case SEMICOLON$1:\n case CLOSE_PARENTHESES$1:\n {\n var controlChar = String.fromCharCode(code);\n currentToken = [\n controlChar,\n controlChar,\n pos\n ];\n break;\n }\n case OPEN_PARENTHESES$1:\n {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE$1 && n2 !== DOUBLE_QUOTE$1 && n2 !== SPACE$1 && n2 !== NEWLINE$1 && n2 !== TAB$1 && n2 !== FEED$1 && n2 !== CR$1) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while(css.charCodeAt(escapePos - 1) === BACKSLASH$1){\n escapePos -= 1;\n escaped = !escaped;\n }\n }while (escaped);\n currentToken = [\n \"brackets\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET$1.test(content)) {\n currentToken = [\n \"(\",\n \"(\",\n pos\n ];\n } else {\n currentToken = [\n \"brackets\",\n content,\n pos,\n next\n ];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE$1:\n case DOUBLE_QUOTE$1:\n {\n quote = code === SINGLE_QUOTE$1 ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while(css.charCodeAt(escapePos - 1) === BACKSLASH$1){\n escapePos -= 1;\n escaped = !escaped;\n }\n }while (escaped);\n currentToken = [\n \"string\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n case AT$1:\n {\n RE_AT_END$1.lastIndex = pos + 1;\n RE_AT_END$1.test(css);\n if (RE_AT_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END$1.lastIndex - 2;\n }\n currentToken = [\n \"at-word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n case BACKSLASH$1:\n {\n next = pos;\n escape = true;\n while(css.charCodeAt(next + 1) === BACKSLASH$1){\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH$1 && code !== SPACE$1 && code !== NEWLINE$1 && code !== TAB$1 && code !== CR$1 && code !== FEED$1) {\n next += 1;\n if (RE_HEX_ESCAPE$1.test(css.charAt(next))) {\n while(RE_HEX_ESCAPE$1.test(css.charAt(next + 1))){\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE$1) {\n next += 1;\n }\n }\n }\n currentToken = [\n \"word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n default:\n {\n if (code === SLASH$1 && css.charCodeAt(pos + 1) === ASTERISK$1) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\n \"comment\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n } else {\n RE_WORD_END$1.lastIndex = pos + 1;\n RE_WORD_END$1.test(css);\n if (RE_WORD_END$1.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END$1.lastIndex - 2;\n }\n currentToken = [\n \"word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back: back,\n endOfFile: endOfFile,\n nextToken: nextToken,\n position: position\n };\n};\nvar Container$5$1 = container$1;\nvar AtRule$3$1 = /*#__PURE__*/ function(Container$5$1) {\n _inherits(AtRule, Container$5$1);\n function AtRule(defaults) {\n var _this;\n _this = Container$5$1.call(this, defaults) || this;\n _this.type = \"atrule\";\n return _this;\n }\n var _proto = AtRule.prototype;\n _proto.append = function append() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n var _Container$5$1_prototype_append;\n if (!this.proxyOf.nodes) this.nodes = [];\n return (_Container$5$1_prototype_append = Container$5$1.prototype.append).call.apply(_Container$5$1_prototype_append, [].concat([\n this\n ], children));\n };\n _proto.prepend = function prepend() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n var _Container$5$1_prototype_prepend;\n if (!this.proxyOf.nodes) this.nodes = [];\n return (_Container$5$1_prototype_prepend = Container$5$1.prototype.prepend).call.apply(_Container$5$1_prototype_prepend, [].concat([\n this\n ], children));\n };\n return AtRule;\n}(Container$5$1);\nvar atRule$1 = AtRule$3$1;\nAtRule$3$1.default = AtRule$3$1;\nContainer$5$1.registerAtRule(AtRule$3$1);\nvar Container$4$1 = container$1;\nvar LazyResult$3$1, Processor$2$1;\nvar Root$5$1 = /*#__PURE__*/ function(Container$4$1) {\n _inherits(Root, Container$4$1);\n function Root(defaults) {\n var _this;\n _this = Container$4$1.call(this, defaults) || this;\n _this.type = \"root\";\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n var _proto = Root.prototype;\n _proto.normalize = function normalize(child, sample, type) {\n var nodes = Container$4$1.prototype.normalize.call(this, child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n };\n _proto.removeChild = function removeChild(child, ignore) {\n var index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return Container$4$1.prototype.removeChild.call(this, child);\n };\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) opts = {};\n var lazy = new LazyResult$3$1(new Processor$2$1(), this, opts);\n return lazy.stringify();\n };\n return Root;\n}(Container$4$1);\nRoot$5$1.registerLazyResult = function(dependant) {\n LazyResult$3$1 = dependant;\n};\nRoot$5$1.registerProcessor = function(dependant) {\n Processor$2$1 = dependant;\n};\nvar root$1 = Root$5$1;\nRoot$5$1.default = Root$5$1;\nContainer$4$1.registerRoot(Root$5$1);\nvar list$2$1 = {\n comma: function comma(string) {\n return list$2$1.split(string, [\n \",\"\n ], true);\n },\n space: function space(string) {\n var spaces = [\n \" \",\n \"\\n\",\n \"\t\"\n ];\n return list$2$1.split(string, spaces);\n },\n split: function split(string, separators, last) {\n var array = [];\n var current = \"\";\n var split = false;\n var func = 0;\n var inQuote = false;\n var prevQuote = \"\";\n var escape = false;\n for(var _iterator = _create_for_of_iterator_helper_loose(string), _step; !(_step = _iterator()).done;){\n var letter = _step.value;\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1$1 = list$2$1;\nlist$2$1.default = list$2$1;\nvar Container$3$1 = container$1;\nvar list$1$1 = list_1$1;\nvar Rule$3$1 = /*#__PURE__*/ function(Container$3$1) {\n _inherits(Rule, Container$3$1);\n function Rule(defaults) {\n var _this;\n _this = Container$3$1.call(this, defaults) || this;\n _this.type = \"rule\";\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n _create_class(Rule, [\n {\n key: \"selectors\",\n get: function get() {\n return list$1$1.comma(this.selector);\n },\n set: function set(values) {\n var match = this.selector ? this.selector.match(/,\\s*/) : null;\n var sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n }\n ]);\n return Rule;\n}(Container$3$1);\nvar rule$1 = Rule$3$1;\nRule$3$1.default = Rule$3$1;\nContainer$3$1.registerRule(Rule$3$1);\nvar Declaration$2$1 = declaration$1;\nvar tokenizer2$1 = tokenize$1;\nvar Comment$2$1 = comment$1;\nvar AtRule$2$1 = atRule$1;\nvar Root$4$1 = root$1;\nvar Rule$2$1 = rule$1;\nvar SAFE_COMMENT_NEIGHBOR$1 = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition$1(tokens) {\n for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n var token = tokens[i2];\n var pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nvar Parser$1$1 = /*#__PURE__*/ function() {\n function Parser(input2) {\n this.input = input2;\n this.root = new Root$4$1();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = {\n input: input2,\n start: {\n column: 1,\n line: 1,\n offset: 0\n }\n };\n }\n var _proto = Parser.prototype;\n _proto.atrule = function atrule(token) {\n var node2 = new AtRule$2$1();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n var type;\n var prev;\n var shift;\n var last = false;\n var open = false;\n var params = [];\n var brackets = [];\n while(!this.tokenizer.endOfFile()){\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while(prev && prev[0] === \"space\"){\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n };\n _proto.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n var colon = this.colon(tokens);\n if (colon === false) return;\n var founded = 0;\n var token;\n for(var j = colon - 1; j >= 0; j--){\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\"Missed semicolon\", token[0] === \"word\" ? token[3] + 1 : token[2]);\n };\n _proto.colon = function colon(tokens) {\n var brackets = 0;\n var token, type, prev;\n for(var _iterator = _create_for_of_iterator_helper_loose(tokens.entries()), _step; !(_step = _iterator()).done;){\n var _step_value = _step.value, i2 = _step_value[0], element = _step_value[1];\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n };\n _proto.comment = function comment(token) {\n var node2 = new Comment$2$1();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n var text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n var match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n };\n _proto.createTokenizer = function createTokenizer() {\n this.tokenizer = tokenizer2$1(this.input);\n };\n _proto.decl = function decl(tokens, customProperty) {\n var node2 = new Declaration$2$1();\n this.init(node2, tokens[0][2]);\n var last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(last[3] || last[2] || findLastWithPosition$1(tokens));\n node2.source.end.offset++;\n while(tokens[0][0] !== \"word\"){\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while(tokens.length){\n var type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n var token;\n while(tokens.length){\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([\n token\n ]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n var firstSpaces = [];\n var next;\n while(tokens.length){\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n var string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n var cache = tokens.slice(0);\n var str = \"\";\n for(var j = i2; j > 0; j--){\n var type1 = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type1 !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n var hasWord = tokens.some(function(i2) {\n return i2[0] !== \"space\" && i2[0] !== \"comment\";\n });\n if (hasWord) {\n node2.raws.between += firstSpaces.map(function(i2) {\n return i2[1];\n }).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n };\n _proto.doubleColon = function doubleColon(token) {\n throw this.input.error(\"Double colon\", {\n offset: token[2]\n }, {\n offset: token[2] + token[1].length\n });\n };\n _proto.emptyRule = function emptyRule(token) {\n var node2 = new Rule$2$1();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n };\n _proto.end = function end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n };\n _proto.endFile = function endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n };\n _proto.freeSemicolon = function freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n var prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n };\n // Helpers\n _proto.getPosition = function getPosition(offset) {\n var pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset: offset\n };\n };\n _proto.init = function init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n };\n _proto.other = function other(start) {\n var end = false;\n var type = null;\n var colon = false;\n var bracket = null;\n var brackets = [];\n var customProperty = start[1].startsWith(\"--\");\n var tokens = [];\n var token = start;\n while(token){\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while(tokens.length){\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n };\n _proto.parse = function parse() {\n var token;\n while(!this.tokenizer.endOfFile()){\n token = this.tokenizer.nextToken();\n switch(token[0]){\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n };\n _proto.precheckMissedSemicolon = function precheckMissedSemicolon() {};\n _proto.raw = function raw(node2, prop, tokens, customProperty) {\n var token, type;\n var length = tokens.length;\n var value = \"\";\n var clean = true;\n var next, prev;\n for(var i2 = 0; i2 < length; i2 += 1){\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR$1[prev] && !SAFE_COMMENT_NEIGHBOR$1[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n var raw = tokens.reduce(function(all, i2) {\n return all + i2[1];\n }, \"\");\n node2.raws[prop] = {\n raw: raw,\n value: value\n };\n }\n node2[prop] = value;\n };\n _proto.rule = function rule(tokens) {\n tokens.pop();\n var node2 = new Rule$2$1();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n };\n _proto.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) {\n var lastTokenType;\n var spaces = \"\";\n while(tokens.length){\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n // Errors\n _proto.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) {\n var next;\n var spaces = \"\";\n while(tokens.length){\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n };\n _proto.spacesFromEnd = function spacesFromEnd(tokens) {\n var lastTokenType;\n var spaces = \"\";\n while(tokens.length){\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n _proto.stringFrom = function stringFrom(tokens, from) {\n var result2 = \"\";\n for(var i2 = from; i2 < tokens.length; i2++){\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n };\n _proto.unclosedBlock = function unclosedBlock() {\n var pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n };\n _proto.unclosedBracket = function unclosedBracket(bracket) {\n throw this.input.error(\"Unclosed bracket\", {\n offset: bracket[2]\n }, {\n offset: bracket[2] + 1\n });\n };\n _proto.unexpectedClose = function unexpectedClose(token) {\n throw this.input.error(\"Unexpected }\", {\n offset: token[2]\n }, {\n offset: token[2] + 1\n });\n };\n _proto.unknownWord = function unknownWord(tokens) {\n throw this.input.error(\"Unknown word\", {\n offset: tokens[0][2]\n }, {\n offset: tokens[0][2] + tokens[0][1].length\n });\n };\n _proto.unnamedAtrule = function unnamedAtrule(node2, token) {\n throw this.input.error(\"At-rule without name\", {\n offset: token[2]\n }, {\n offset: token[2] + token[1].length\n });\n };\n return Parser;\n}();\nvar parser$1 = Parser$1$1;\nvar Container$2$1 = container$1;\nvar Parser2$1 = parser$1;\nvar Input$2$1 = input$1;\nfunction parse$3$1(css, opts) {\n var input2 = new Input$2$1(css, opts);\n var parser2 = new Parser2$1(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1$1 = parse$3$1;\nparse$3$1.default = parse$3$1;\nContainer$2$1.registerParse(parse$3$1);\nvar isClean$3 = symbols$1.isClean, my$3 = symbols$1.my;\nvar MapGenerator$1$1 = mapGenerator$1;\nvar stringify$2$1 = stringify_1$1;\nvar Container$1$1 = container$1;\nvar Document$2$1 = document$1$1;\nvar warnOnce$1$1 = warnOnce$2$1;\nvar Result$2$1 = result$1;\nvar parse$2$1 = parse_1$1;\nvar Root$3$1 = root$1;\nvar TYPE_TO_CLASS_NAME$1 = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nvar PLUGIN_PROPS$1 = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nvar NOT_VISITORS$1 = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nvar CHILDREN$1 = 0;\nfunction isPromise$1(obj) {\n return (typeof obj === \"undefined\" ? \"undefined\" : _type_of(obj)) === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents$1(node2) {\n var key = false;\n var type = TYPE_TO_CLASS_NAME$1[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN$1,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [\n type,\n type + \"-\" + key,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (node2.append) {\n return [\n type,\n CHILDREN$1,\n type + \"Exit\"\n ];\n } else {\n return [\n type,\n type + \"Exit\"\n ];\n }\n}\nfunction toStack$1(node2) {\n var events;\n if (node2.type === \"document\") {\n events = [\n \"Document\",\n CHILDREN$1,\n \"DocumentExit\"\n ];\n } else if (node2.type === \"root\") {\n events = [\n \"Root\",\n CHILDREN$1,\n \"RootExit\"\n ];\n } else {\n events = getEvents$1(node2);\n }\n return {\n eventIndex: 0,\n events: events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks$1(node2) {\n node2[isClean$3] = false;\n if (node2.nodes) node2.nodes.forEach(function(i2) {\n return cleanMarks$1(i2);\n });\n return node2;\n}\nvar postcss$2$1 = {};\nvar LazyResult$2$1 = /*#__PURE__*/ function() {\n function LazyResult(processor2, css, opts) {\n var _this = this;\n this.stringified = false;\n this.processed = false;\n var root2;\n if ((typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks$1(css);\n } else if (_instanceof(css, LazyResult) || _instanceof(css, Result$2$1)) {\n root2 = cleanMarks$1(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n var parser2 = parse$2$1;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my$3]) {\n Container$1$1.rebuild(root2);\n }\n }\n this.result = new Result$2$1(processor2, root2, opts);\n this.helpers = _extends({}, postcss$2$1, {\n postcss: postcss$2$1,\n result: this.result\n });\n this.plugins = this.processor.plugins.map(function(plugin22) {\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.prepare) {\n return _extends({}, plugin22, plugin22.prepare(_this.result));\n } else {\n return plugin22;\n }\n });\n }\n var _proto = LazyResult.prototype;\n _proto.async = function async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n };\n _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n _proto.getAsyncError = function getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n };\n _proto.handleError = function handleError(error, node2) {\n var plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n var pluginName = plugin22.postcssPlugin;\n var pluginVer = plugin22.postcssVersion;\n var runtimeVer = this.result.processor.version;\n var a2 = pluginVer.split(\".\");\n var b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\");\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n };\n _proto.prepareVisitors = function prepareVisitors() {\n var _this = this;\n this.listeners = {};\n var add = function(plugin22, type, cb) {\n if (!_this.listeners[type]) _this.listeners[type] = [];\n _this.listeners[type].push([\n plugin22,\n cb\n ]);\n };\n for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n var plugin22 = _step.value;\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\") {\n for(var event in plugin22){\n if (!PLUGIN_PROPS$1[event] && /^[A-Z]/.test(event)) {\n throw new Error(\"Unknown event \" + event + \" in \" + plugin22.postcssPlugin + \". Try to update PostCSS (\" + this.processor.version + \" now).\");\n }\n if (!NOT_VISITORS$1[event]) {\n if (_type_of(plugin22[event]) === \"object\") {\n for(var filter in plugin22[event]){\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(plugin22, event + \"-\" + filter.toLowerCase(), plugin22[event][filter]);\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n };\n _proto.runAsync = function runAsync() {\n var _this = this;\n return _async_to_generator(function() {\n var i2, plugin22, promise, error, root2, stack, promise1, e2, node2, _loop, _iterator, _step;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _this.plugin = 0;\n i2 = 0;\n _state.label = 1;\n case 1:\n if (!(i2 < _this.plugins.length)) return [\n 3,\n 6\n ];\n plugin22 = _this.plugins[i2];\n promise = _this.runOnRoot(plugin22);\n if (!isPromise$1(promise)) return [\n 3,\n 5\n ];\n _state.label = 2;\n case 2:\n _state.trys.push([\n 2,\n 4,\n ,\n 5\n ]);\n return [\n 4,\n promise\n ];\n case 3:\n _state.sent();\n return [\n 3,\n 5\n ];\n case 4:\n error = _state.sent();\n throw _this.handleError(error);\n case 5:\n i2++;\n return [\n 3,\n 1\n ];\n case 6:\n _this.prepareVisitors();\n if (!_this.hasListener) return [\n 3,\n 18\n ];\n root2 = _this.result.root;\n _state.label = 7;\n case 7:\n if (!!root2[isClean$3]) return [\n 3,\n 14\n ];\n root2[isClean$3] = true;\n stack = [\n toStack$1(root2)\n ];\n _state.label = 8;\n case 8:\n if (!(stack.length > 0)) return [\n 3,\n 13\n ];\n promise1 = _this.visitTick(stack);\n if (!isPromise$1(promise1)) return [\n 3,\n 12\n ];\n _state.label = 9;\n case 9:\n _state.trys.push([\n 9,\n 11,\n ,\n 12\n ]);\n return [\n 4,\n promise1\n ];\n case 10:\n _state.sent();\n return [\n 3,\n 12\n ];\n case 11:\n e2 = _state.sent();\n node2 = stack[stack.length - 1].node;\n throw _this.handleError(e2, node2);\n case 12:\n return [\n 3,\n 8\n ];\n case 13:\n return [\n 3,\n 7\n ];\n case 14:\n if (!_this.listeners.OnceExit) return [\n 3,\n 18\n ];\n _loop = function() {\n var _step_value, plugin22, visitor, roots, e2;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n _this.result.lastPlugin = plugin22;\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 6,\n ,\n 7\n ]);\n if (!(root2.type === \"document\")) return [\n 3,\n 3\n ];\n roots = root2.nodes.map(function(subRoot) {\n return visitor(subRoot, _this.helpers);\n });\n return [\n 4,\n Promise.all(roots)\n ];\n case 2:\n _state.sent();\n return [\n 3,\n 5\n ];\n case 3:\n return [\n 4,\n visitor(root2, _this.helpers)\n ];\n case 4:\n _state.sent();\n _state.label = 5;\n case 5:\n return [\n 3,\n 7\n ];\n case 6:\n e2 = _state.sent();\n throw _this.handleError(e2);\n case 7:\n return [\n 2\n ];\n }\n });\n };\n _iterator = _create_for_of_iterator_helper_loose(_this.listeners.OnceExit);\n _state.label = 15;\n case 15:\n if (!!(_step = _iterator()).done) return [\n 3,\n 18\n ];\n return [\n 5,\n _ts_values(_loop())\n ];\n case 16:\n _state.sent();\n _state.label = 17;\n case 17:\n return [\n 3,\n 15\n ];\n case 18:\n _this.processed = true;\n return [\n 2,\n _this.stringify()\n ];\n }\n });\n })();\n };\n _proto.runOnRoot = function runOnRoot(plugin22) {\n var _this = this;\n this.result.lastPlugin = plugin22;\n try {\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n var roots = this.result.root.nodes.map(function(root2) {\n return plugin22.Once(root2, _this.helpers);\n });\n if (isPromise$1(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n };\n _proto.stringify = function stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n var opts = this.result.opts;\n var str = stringify$2$1;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n var map = new MapGenerator$1$1(str, this.result.root, this.result.opts);\n var data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n };\n _proto.sync = function sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n var plugin22 = _step.value;\n var promise = this.runOnRoot(plugin22);\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n var root2 = this.result.root;\n while(!root2[isClean$3]){\n root2[isClean$3] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for(var _iterator1 = _create_for_of_iterator_helper_loose(root2.nodes), _step1; !(_step1 = _iterator1()).done;){\n var subRoot = _step1.value;\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n };\n _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1$1(\"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\");\n }\n }\n return this.async().then(onFulfilled, onRejected);\n };\n _proto.toString = function toString() {\n return this.css;\n };\n _proto.visitSync = function visitSync(visitors, node2) {\n for(var _iterator = _create_for_of_iterator_helper_loose(visitors), _step; !(_step = _iterator()).done;){\n var _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n this.result.lastPlugin = plugin22;\n var promise = void 0;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise$1(promise)) {\n throw this.getAsyncError();\n }\n }\n };\n _proto.visitTick = function visitTick(stack) {\n var visit2 = stack[stack.length - 1];\n var node2 = visit2.node, visitors = visit2.visitors;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n var _visitors_visit2_visitorIndex = visitors[visit2.visitorIndex], plugin22 = _visitors_visit2_visitorIndex[0], visitor = _visitors_visit2_visitorIndex[1];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n var iterator = visit2.iterator;\n var child;\n while(child = node2.nodes[node2.indexes[iterator]]){\n node2.indexes[iterator] += 1;\n if (!child[isClean$3]) {\n child[isClean$3] = true;\n stack.push(toStack$1(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n var events = visit2.events;\n while(visit2.eventIndex < events.length){\n var event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN$1) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean$3] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n };\n _proto.walkSync = function walkSync(node2) {\n var _this = this;\n node2[isClean$3] = true;\n var events = getEvents$1(node2);\n for(var _iterator = _create_for_of_iterator_helper_loose(events), _step; !(_step = _iterator()).done;){\n var event = _step.value;\n if (event === CHILDREN$1) {\n if (node2.nodes) {\n node2.each(function(child) {\n if (!child[isClean$3]) _this.walkSync(child);\n });\n }\n } else {\n var visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n };\n _proto.warnings = function warnings() {\n return this.sync().warnings();\n };\n _create_class(LazyResult, [\n {\n key: \"content\",\n get: function get() {\n return this.stringify().content;\n }\n },\n {\n key: \"css\",\n get: function get() {\n return this.stringify().css;\n }\n },\n {\n key: \"map\",\n get: function get() {\n return this.stringify().map;\n }\n },\n {\n key: \"messages\",\n get: function get() {\n return this.sync().messages;\n }\n },\n {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n },\n {\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n },\n {\n key: \"root\",\n get: function get() {\n return this.sync().root;\n }\n },\n {\n key: Symbol.toStringTag,\n get: function get() {\n return \"LazyResult\";\n }\n }\n ]);\n return LazyResult;\n}();\nLazyResult$2$1.registerPostcss = function(dependant) {\n postcss$2$1 = dependant;\n};\nvar lazyResult$1 = LazyResult$2$1;\nLazyResult$2$1.default = LazyResult$2$1;\nRoot$3$1.registerLazyResult(LazyResult$2$1);\nDocument$2$1.registerLazyResult(LazyResult$2$1);\nvar MapGenerator2$1 = mapGenerator$1;\nvar stringify$1$1 = stringify_1$1;\nvar warnOnce2$1 = warnOnce$2$1;\nvar parse$1$1 = parse_1$1;\nvar Result$1$1 = result$1;\nvar NoWorkResult$1$1 = /*#__PURE__*/ function() {\n function NoWorkResult(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n var root2;\n var str = stringify$1$1;\n this.result = new Result$1$1(this._processor, root2, this._opts);\n this.result.css = css;\n var self = this;\n Object.defineProperty(this.result, \"root\", {\n get: function get() {\n return self.root;\n }\n });\n var map = new MapGenerator2$1(str, root2, this._opts, css);\n if (map.isMap()) {\n var _map_generate = map.generate(), generatedCSS = _map_generate[0], generatedMap = _map_generate[1];\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n var _proto = NoWorkResult.prototype;\n _proto.async = function async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n };\n _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n _proto.sync = function sync() {\n if (this.error) throw this.error;\n return this.result;\n };\n _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2$1(\"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\");\n }\n }\n return this.async().then(onFulfilled, onRejected);\n };\n _proto.toString = function toString() {\n return this._css;\n };\n _proto.warnings = function warnings() {\n return [];\n };\n _create_class(NoWorkResult, [\n {\n key: \"content\",\n get: function get() {\n return this.result.css;\n }\n },\n {\n key: \"css\",\n get: function get() {\n return this.result.css;\n }\n },\n {\n key: \"map\",\n get: function get() {\n return this.result.map;\n }\n },\n {\n key: \"messages\",\n get: function get() {\n return [];\n }\n },\n {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n },\n {\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n },\n {\n key: \"root\",\n get: function get() {\n if (this._root) {\n return this._root;\n }\n var root2;\n var parser2 = parse$1$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n },\n {\n key: Symbol.toStringTag,\n get: function get() {\n return \"NoWorkResult\";\n }\n }\n ]);\n return NoWorkResult;\n}();\nvar noWorkResult$1 = NoWorkResult$1$1;\nNoWorkResult$1$1.default = NoWorkResult$1$1;\nvar NoWorkResult2$1 = noWorkResult$1;\nvar LazyResult$1$1 = lazyResult$1;\nvar Document$1$1 = document$1$1;\nvar Root$2$1 = root$1;\nvar Processor$1$1 = /*#__PURE__*/ function() {\n function Processor(plugins) {\n if (plugins === void 0) plugins = [];\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n var _proto = Processor.prototype;\n _proto.normalize = function normalize(plugins) {\n var normalized = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(plugins), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\");\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n };\n _proto.process = function process1(css, opts) {\n if (opts === void 0) opts = {};\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult2$1(this, css, opts);\n } else {\n return new LazyResult$1$1(this, css, opts);\n }\n };\n _proto.use = function use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([\n plugin22\n ]));\n return this;\n };\n return Processor;\n}();\nvar processor$1 = Processor$1$1;\nProcessor$1$1.default = Processor$1$1;\nRoot$2$1.registerProcessor(Processor$1$1);\nDocument$1$1.registerProcessor(Processor$1$1);\nvar Declaration$1$1 = declaration$1;\nvar PreviousMap2$1 = previousMap$1;\nvar Comment$1$1 = comment$1;\nvar AtRule$1$1 = atRule$1;\nvar Input$1$1 = input$1;\nvar Root$1$1 = root$1;\nvar Rule$1$1 = rule$1;\nfunction fromJSON$1$1(json, inputs) {\n if (Array.isArray(json)) return json.map(function(n2) {\n return fromJSON$1$1(n2);\n });\n var ownInputs = json.inputs, defaults = _object_without_properties_loose(json, [\n \"inputs\"\n ]);\n if (ownInputs) {\n inputs = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(ownInputs), _step; !(_step = _iterator()).done;){\n var input2 = _step.value;\n var inputHydrated = _extends({}, input2, {\n __proto__: Input$1$1.prototype\n });\n if (inputHydrated.map) {\n inputHydrated.map = _extends({}, inputHydrated.map, {\n __proto__: PreviousMap2$1.prototype\n });\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map(function(n2) {\n return fromJSON$1$1(n2, inputs);\n });\n }\n if (defaults.source) {\n var _defaults_source = defaults.source, inputId = _defaults_source.inputId, source = _object_without_properties_loose(_defaults_source, [\n \"inputId\"\n ]);\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1$1 = fromJSON$1$1;\nfromJSON$1$1.default = fromJSON$1$1;\nvar CssSyntaxError2$1 = cssSyntaxError$1;\nvar Declaration2$1 = declaration$1;\nvar LazyResult2$1 = lazyResult$1;\nvar Container2$1 = container$1;\nvar Processor2$1 = processor$1;\nvar stringify$5 = stringify_1$1;\nvar fromJSON$2 = fromJSON_1$1;\nvar Document22 = document$1$1;\nvar Warning2$1 = warning$1;\nvar Comment2$1 = comment$1;\nvar AtRule2$1 = atRule$1;\nvar Result2$1 = result$1;\nvar Input2$1 = input$1;\nvar parse$5 = parse_1$1;\nvar list$3 = list_1$1;\nvar Rule2$1 = rule$1;\nvar Root2$1 = root$1;\nvar Node2$1 = node$1;\nfunction postcss$3() {\n for(var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++){\n plugins[_key] = arguments[_key];\n }\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor2$1(plugins);\n}\npostcss$3.plugin = function plugin(name, initializer) {\n var warningPrinted = false;\n function creator() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\");\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\");\n }\n }\n var transformer = initializer.apply(void 0, [].concat(args));\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor2$1().version;\n return transformer;\n }\n var cache;\n Object.defineProperty(creator, \"postcss\", {\n get: function get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss$3([\n creator(pluginOpts)\n ]).process(css, processOpts);\n };\n return creator;\n};\npostcss$3.stringify = stringify$5;\npostcss$3.parse = parse$5;\npostcss$3.fromJSON = fromJSON$2;\npostcss$3.list = list$3;\npostcss$3.comment = function(defaults) {\n return new Comment2$1(defaults);\n};\npostcss$3.atRule = function(defaults) {\n return new AtRule2$1(defaults);\n};\npostcss$3.decl = function(defaults) {\n return new Declaration2$1(defaults);\n};\npostcss$3.rule = function(defaults) {\n return new Rule2$1(defaults);\n};\npostcss$3.root = function(defaults) {\n return new Root2$1(defaults);\n};\npostcss$3.document = function(defaults) {\n return new Document22(defaults);\n};\npostcss$3.CssSyntaxError = CssSyntaxError2$1;\npostcss$3.Declaration = Declaration2$1;\npostcss$3.Container = Container2$1;\npostcss$3.Processor = Processor2$1;\npostcss$3.Document = Document22;\npostcss$3.Comment = Comment2$1;\npostcss$3.Warning = Warning2$1;\npostcss$3.AtRule = AtRule2$1;\npostcss$3.Result = Result2$1;\npostcss$3.Input = Input2$1;\npostcss$3.Rule = Rule2$1;\npostcss$3.Root = Root2$1;\npostcss$3.Node = Node2$1;\nLazyResult2$1.registerPostcss(postcss$3);\nvar postcss_1$1 = postcss$3;\npostcss$3.default = postcss$3;\nvar postcss$1$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcss_1$1);\npostcss$1$1.stringify;\npostcss$1$1.fromJSON;\npostcss$1$1.plugin;\npostcss$1$1.parse;\npostcss$1$1.list;\npostcss$1$1.document;\npostcss$1$1.comment;\npostcss$1$1.atRule;\npostcss$1$1.rule;\npostcss$1$1.decl;\npostcss$1$1.root;\npostcss$1$1.CssSyntaxError;\npostcss$1$1.Declaration;\npostcss$1$1.Container;\npostcss$1$1.Processor;\npostcss$1$1.Document;\npostcss$1$1.Comment;\npostcss$1$1.Warning;\npostcss$1$1.AtRule;\npostcss$1$1.Result;\npostcss$1$1.Input;\npostcss$1$1.Rule;\npostcss$1$1.Root;\npostcss$1$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = function(obj, key, value) {\n return key in obj ? __defProp2(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n }) : obj[key] = value;\n};\nvar __publicField2 = function(obj, key, value) {\n return __defNormalProp2(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nfunction getDefaultExportFromCjs(x2) {\n return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (_instanceof(this, a22)) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", {\n value: true\n });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function get() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = {\n exports: {}\n};\nvar x = String;\nvar create = function create() {\n return {\n isColorSupported: false,\n reset: x,\n bold: x,\n dim: x,\n italic: x,\n underline: x,\n inverse: x,\n hidden: x,\n strikethrough: x,\n black: x,\n red: x,\n green: x,\n yellow: x,\n blue: x,\n magenta: x,\n cyan: x,\n white: x,\n gray: x,\n bgBlack: x,\n bgRed: x,\n bgGreen: x,\n bgYellow: x,\n bgBlue: x,\n bgMagenta: x,\n bgCyan: x,\n bgWhite: x\n };\n};\npicocolors_browser.exports = create();\npicocolors_browser.exports.createColors = create;\nvar picocolors_browserExports = picocolors_browser.exports;\nvar __viteBrowserExternal = {};\nvar __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, {\n value: \"Module\"\n}));\nvar require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nvar pico = picocolors_browserExports;\nvar terminalHighlight$1 = require$$2;\nvar CssSyntaxError$3 = /*#__PURE__*/ function(Error1) {\n _inherits(CssSyntaxError2, Error1);\n function CssSyntaxError2(message, line, column, source, file, plugin22) {\n var _this;\n _this = Error1.call(this, message) || this;\n _this.name = \"CssSyntaxError\";\n _this.reason = message;\n if (file) {\n _this.file = file;\n }\n if (source) {\n _this.source = source;\n }\n if (plugin22) {\n _this.plugin = plugin22;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n _this.line = line;\n _this.column = column;\n } else {\n _this.line = line.line;\n _this.column = line.column;\n _this.endLine = column.line;\n _this.endColumn = column.column;\n }\n }\n _this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_this, CssSyntaxError2);\n }\n return _this;\n }\n var _proto = CssSyntaxError2.prototype;\n _proto.setMessage = function setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n };\n _proto.showSourceCode = function showSourceCode(color) {\n var _this = this;\n if (!this.source) return \"\";\n var css = this.source;\n if (color == null) color = pico.isColorSupported;\n if (terminalHighlight$1) {\n if (color) css = terminalHighlight$1(css);\n }\n var lines = css.split(/\\r?\\n/);\n var start = Math.max(this.line - 3, 0);\n var end = Math.min(this.line + 2, lines.length);\n var maxWidth = String(end).length;\n var mark, aside;\n if (color) {\n var _pico_createColors = pico.createColors(true), bold = _pico_createColors.bold, gray = _pico_createColors.gray, red = _pico_createColors.red;\n mark = function(text) {\n return bold(red(text));\n };\n aside = function(text) {\n return gray(text);\n };\n } else {\n mark = aside = function(str) {\n return str;\n };\n }\n return lines.slice(start, end).map(function(line, index2) {\n var number = start + 1 + index2;\n var gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === _this.line) {\n var spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, _this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + line + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + line;\n }).join(\"\\n\");\n };\n _proto.toString = function toString() {\n var code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n };\n return CssSyntaxError2;\n}(_wrap_native_super(Error));\nvar cssSyntaxError = CssSyntaxError$3;\nCssSyntaxError$3.default = CssSyntaxError$3;\nvar symbols = {};\nsymbols.isClean = Symbol(\"isClean\");\nsymbols.my = Symbol(\"my\");\nvar DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n};\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\nvar Stringifier$2 = /*#__PURE__*/ function() {\n function Stringifier2(builder) {\n this.builder = builder;\n }\n var _proto = Stringifier2.prototype;\n _proto.atrule = function atrule(node2, semicolon) {\n var name = \"@\" + node2.name;\n var params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n var end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n };\n _proto.beforeAfter = function beforeAfter(node2, detect) {\n var value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n var buf = node2.parent;\n var depth = 0;\n while(buf && buf.type !== \"root\"){\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n var indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for(var step = 0; step < depth; step++)value += indent;\n }\n }\n return value;\n };\n _proto.block = function block(node2, start) {\n var between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n var after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n };\n _proto.body = function body(node2) {\n var last = node2.nodes.length - 1;\n while(last > 0){\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n var semicolon = this.raw(node2, \"semicolon\");\n for(var i2 = 0; i2 < node2.nodes.length; i2++){\n var child = node2.nodes[i2];\n var before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n };\n _proto.comment = function comment(node2) {\n var left = this.raw(node2, \"left\", \"commentLeft\");\n var right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n };\n _proto.decl = function decl(node2, semicolon) {\n var between = this.raw(node2, \"between\", \"colon\");\n var string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n };\n _proto.document = function document1(node2) {\n this.body(node2);\n };\n _proto.raw = function raw(node2, own, detect) {\n var value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n var parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n var root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n var method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk(function(i2) {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n };\n _proto.rawBeforeClose = function rawBeforeClose(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n };\n _proto.rawBeforeComment = function rawBeforeComment(root2, node2) {\n var value;\n root2.walkComments(function(i2) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n };\n _proto.rawBeforeDecl = function rawBeforeDecl(root2, node2) {\n var value;\n root2.walkDecls(function(i2) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n };\n _proto.rawBeforeOpen = function rawBeforeOpen(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawBeforeRule = function rawBeforeRule(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n };\n _proto.rawColon = function rawColon(root2) {\n var value;\n root2.walkDecls(function(i2) {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n };\n _proto.rawEmptyBody = function rawEmptyBody(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawIndent = function rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n var value;\n root2.walk(function(i2) {\n var p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n var parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n };\n _proto.rawSemicolon = function rawSemicolon(root2) {\n var value;\n root2.walk(function(i2) {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n };\n _proto.rawValue = function rawValue(node2, prop) {\n var value = node2[prop];\n var raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n };\n _proto.root = function root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n };\n _proto.rule = function rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n };\n _proto.stringify = function stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\");\n }\n this[node2.type](node2, semicolon);\n };\n return Stringifier2;\n}();\nvar stringifier = Stringifier$2;\nStringifier$2.default = Stringifier$2;\nvar Stringifier$1 = stringifier;\nfunction stringify$4(node2, builder) {\n var str = new Stringifier$1(builder);\n str.stringify(node2);\n}\nvar stringify_1 = stringify$4;\nstringify$4.default = stringify$4;\nvar isClean$2 = symbols.isClean, my$2 = symbols.my;\nvar CssSyntaxError$2 = cssSyntaxError;\nvar Stringifier22 = stringifier;\nvar stringify$3 = stringify_1;\nfunction cloneNode(obj, parent) {\n var cloned = new obj.constructor();\n for(var i2 in obj){\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n var value = obj[i2];\n var type = typeof value === \"undefined\" ? \"undefined\" : _type_of(value);\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map(function(j) {\n return cloneNode(j, cloned);\n });\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n}\nvar Node$4 = /*#__PURE__*/ function() {\n function Node3(defaults) {\n if (defaults === void 0) defaults = {};\n this.raws = {};\n this[isClean$2] = false;\n this[my$2] = true;\n for(var name in defaults){\n if (name === \"nodes\") {\n this.nodes = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(defaults[name]), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n var _proto = Node3.prototype;\n _proto.addToError = function addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n var s2 = this.source;\n error.stack = error.stack.replace(/\\n\\s{4}at /, \"$&\" + s2.input.from + \":\" + s2.start.line + \":\" + s2.start.column + \"$&\");\n }\n return error;\n };\n _proto.after = function after(add) {\n this.parent.insertAfter(this, add);\n return this;\n };\n _proto.assign = function assign(overrides) {\n if (overrides === void 0) overrides = {};\n for(var name in overrides){\n this[name] = overrides[name];\n }\n return this;\n };\n _proto.before = function before(add) {\n this.parent.insertBefore(this, add);\n return this;\n };\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n };\n _proto.clone = function clone(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = cloneNode(this);\n for(var name in overrides){\n cloned[name] = overrides[name];\n }\n return cloned;\n };\n _proto.cloneAfter = function cloneAfter(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n };\n _proto.cloneBefore = function cloneBefore(overrides) {\n if (overrides === void 0) overrides = {};\n var cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n };\n _proto.error = function error(message, opts) {\n if (opts === void 0) opts = {};\n if (this.source) {\n var _this_rangeBy = this.rangeBy(opts), end = _this_rangeBy.end, start = _this_rangeBy.start;\n return this.source.input.error(message, {\n column: start.column,\n line: start.line\n }, {\n column: end.column,\n line: end.line\n }, opts);\n }\n return new CssSyntaxError$2(message);\n };\n _proto.getProxyProcessor = function getProxyProcessor() {\n return {\n get: function get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return function() {\n return node2.root().toProxy();\n };\n } else {\n return node2[prop];\n }\n },\n set: function set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */ prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n };\n _proto.markDirty = function markDirty() {\n if (this[isClean$2]) {\n this[isClean$2] = false;\n var next = this;\n while(next = next.parent){\n next[isClean$2] = false;\n }\n }\n };\n _proto.next = function next() {\n if (!this.parent) return void 0;\n var index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n };\n _proto.positionBy = function positionBy(opts, stringRepresentation) {\n var pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation);\n } else if (opts.word) {\n stringRepresentation = this.toString();\n var index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2, stringRepresentation);\n }\n return pos;\n };\n _proto.positionInside = function positionInside(index2, stringRepresentation) {\n var string = stringRepresentation || this.toString();\n var column = this.source.start.column;\n var line = this.source.start.line;\n for(var i2 = 0; i2 < index2; i2++){\n if (string[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return {\n column: column,\n line: line\n };\n };\n _proto.prev = function prev() {\n if (!this.parent) return void 0;\n var index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n };\n _proto.rangeBy = function rangeBy(opts) {\n var start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n var end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n var stringRepresentation = this.toString();\n var index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2, stringRepresentation);\n end = this.positionInside(index2 + opts.word.length, stringRepresentation);\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = {\n column: start.column + 1,\n line: start.line\n };\n }\n return {\n end: end,\n start: start\n };\n };\n _proto.raw = function raw(prop, defaultType) {\n var str = new Stringifier22();\n return str.raw(this, prop, defaultType);\n };\n _proto.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n };\n _proto.replaceWith = function replaceWith() {\n for(var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++){\n nodes[_key] = arguments[_key];\n }\n if (this.parent) {\n var bookmark = this;\n var foundSelf = false;\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n };\n _proto.root = function root() {\n var result2 = this;\n while(result2.parent && result2.parent.type !== \"document\"){\n result2 = result2.parent;\n }\n return result2;\n };\n _proto.toJSON = function toJSON(_, inputs) {\n var fixed = {};\n var emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n var inputsNextIndex = 0;\n for(var name in this){\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n var value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map(function(i2) {\n if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if ((typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n var inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId: inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [].concat(inputs.keys()).map(function(input2) {\n return input2.toJSON();\n });\n }\n return fixed;\n };\n _proto.toProxy = function toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n };\n _proto.toString = function toString(stringifier2) {\n if (stringifier2 === void 0) stringifier2 = stringify$3;\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n var result2 = \"\";\n stringifier2(this, function(i2) {\n result2 += i2;\n });\n return result2;\n };\n _proto.warn = function warn(result2, text, opts) {\n var data = {\n node: this\n };\n for(var i2 in opts)data[i2] = opts[i2];\n return result2.warn(text, data);\n };\n _create_class(Node3, [\n {\n key: \"proxyOf\",\n get: function get() {\n return this;\n }\n }\n ]);\n return Node3;\n}();\nvar node = Node$4;\nNode$4.default = Node$4;\nvar Node$3 = node;\nvar Declaration$4 = /*#__PURE__*/ function(Node$3) {\n _inherits(Declaration2, Node$3);\n function Declaration2(defaults) {\n var _this;\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = _extends({}, defaults, {\n value: String(defaults.value)\n });\n }\n _this = Node$3.call(this, defaults) || this;\n _this.type = \"decl\";\n return _this;\n }\n _create_class(Declaration2, [\n {\n key: \"variable\",\n get: function get() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n }\n ]);\n return Declaration2;\n}(Node$3);\nvar declaration = Declaration$4;\nDeclaration$4.default = Declaration$4;\nvar urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nvar nanoid$1 = function(size) {\n if (size === void 0) size = 21;\n var id = \"\";\n var i2 = size;\n while(i2--){\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\nvar nonSecure = {\n nanoid: nanoid$1\n};\nvar SourceMapConsumer$2 = require$$2.SourceMapConsumer, SourceMapGenerator$2 = require$$2.SourceMapGenerator;\nvar existsSync = require$$2.existsSync, readFileSync = require$$2.readFileSync;\nvar dirname$1 = require$$2.dirname, join = require$$2.join;\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n}\nvar PreviousMap$2 = /*#__PURE__*/ function() {\n function PreviousMap2(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n var prev = opts.map ? opts.map.prev : void 0;\n var text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname$1(this.mapFile);\n if (text) this.text = text;\n }\n var _proto = PreviousMap2.prototype;\n _proto.consumer = function consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer$2(this.text);\n }\n return this.consumerCache;\n };\n _proto.decodeInline = function decodeInline(text) {\n var baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n var baseUri = /^data:application\\/json;base64,/;\n var charsetUri = /^data:application\\/json;charset=utf-?8,/;\n var uri = /^data:application\\/json,/;\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length));\n }\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n }\n var encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n };\n _proto.getAnnotationURL = function getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n };\n _proto.isMap = function isMap(map) {\n if ((typeof map === \"undefined\" ? \"undefined\" : _type_of(map)) !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n };\n _proto.loadAnnotation = function loadAnnotation(css) {\n var comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm);\n if (!comments) return;\n var start = css.lastIndexOf(comments.pop());\n var end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n };\n _proto.loadFile = function loadFile(path) {\n this.root = dirname$1(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n };\n _proto.loadMap = function loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n var prevPath = prev(file);\n if (prevPath) {\n var map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\"Unable to load previous source map: \" + prevPath.toString());\n }\n return map;\n }\n } else if (_instanceof(prev, SourceMapConsumer$2)) {\n return SourceMapGenerator$2.fromSourceMap(prev).toString();\n } else if (_instanceof(prev, SourceMapGenerator$2)) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\"Unsupported previous source map format: \" + prev.toString());\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n var map1 = this.annotation;\n if (file) map1 = join(dirname$1(file), map1);\n return this.loadFile(map1);\n }\n };\n _proto.startWith = function startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n };\n _proto.withContent = function withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n };\n return PreviousMap2;\n}();\nvar previousMap = PreviousMap$2;\nPreviousMap$2.default = PreviousMap$2;\nvar SourceMapConsumer$1 = require$$2.SourceMapConsumer, SourceMapGenerator$1 = require$$2.SourceMapGenerator;\nvar fileURLToPath = require$$2.fileURLToPath, pathToFileURL$1 = require$$2.pathToFileURL;\nvar isAbsolute = require$$2.isAbsolute, resolve$1 = require$$2.resolve;\nvar nanoid = nonSecure.nanoid;\nvar terminalHighlight = require$$2;\nvar CssSyntaxError$1 = cssSyntaxError;\nvar PreviousMap$1 = previousMap;\nvar fromOffsetCache = Symbol(\"fromOffsetCache\");\nvar sourceMapAvailable$1 = Boolean(SourceMapConsumer$1 && SourceMapGenerator$1);\nvar pathAvailable$1 = Boolean(resolve$1 && isAbsolute);\nvar Input$4 = /*#__PURE__*/ function() {\n function Input2(css, opts) {\n if (opts === void 0) opts = {};\n if (css === null || typeof css === \"undefined\" || (typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && !css.toString) {\n throw new Error(\"PostCSS received \" + css + \" instead of CSS string\");\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n if (opts.from) {\n if (!pathAvailable$1 || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve$1(opts.from);\n }\n }\n if (pathAvailable$1 && sourceMapAvailable$1) {\n var map = new PreviousMap$1(this.css, opts);\n if (map.text) {\n this.map = map;\n var file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"\";\n }\n if (this.map) this.map.file = this.from;\n }\n var _proto = Input2.prototype;\n _proto.error = function error(message, line, column, opts) {\n if (opts === void 0) opts = {};\n var result2, endLine, endColumn;\n if (line && (typeof line === \"undefined\" ? \"undefined\" : _type_of(line)) === \"object\") {\n var start = line;\n var end = column;\n if (typeof start.offset === \"number\") {\n var pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n var pos1 = this.fromOffset(end.offset);\n endLine = pos1.line;\n endColumn = pos1.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n var pos2 = this.fromOffset(line);\n line = pos2.line;\n column = pos2.col;\n }\n var origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError$1(message, origin.endLine === void 0 ? origin.line : {\n column: origin.column,\n line: origin.line\n }, origin.endLine === void 0 ? origin.column : {\n column: origin.endColumn,\n line: origin.endLine\n }, origin.source, origin.file, opts.plugin);\n } else {\n result2 = new CssSyntaxError$1(message, endLine === void 0 ? line : {\n column: column,\n line: line\n }, endLine === void 0 ? column : {\n column: endColumn,\n line: endLine\n }, this.css, this.file, opts.plugin);\n }\n result2.input = {\n column: column,\n endColumn: endColumn,\n endLine: endLine,\n line: line,\n source: this.css\n };\n if (this.file) {\n if (pathToFileURL$1) {\n result2.input.url = pathToFileURL$1(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n };\n _proto.fromOffset = function fromOffset(offset) {\n var lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n var lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n var prevIndex = 0;\n for(var i2 = 0, l2 = lines.length; i2 < l2; i2++){\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n var min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n var max = lineToIndex.length - 2;\n var mid;\n while(min < max){\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n };\n _proto.mapResolve = function mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve$1(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n };\n _proto.origin = function origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n var consumer = this.map.consumer();\n var from = consumer.originalPositionFor({\n column: column,\n line: line\n });\n if (!from.source) return false;\n var to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({\n column: endColumn,\n line: endLine\n });\n }\n var fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL$1(from.source);\n } else {\n fromUrl = new URL(from.source, this.map.consumer().sourceRoot || pathToFileURL$1(this.map.mapFile));\n }\n var result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(\"file: protocol is not available in this PostCSS build\");\n }\n }\n var source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n };\n _proto.toJSON = function toJSON() {\n var json = {};\n for(var _i = 0, _iter = [\n \"hasBOM\",\n \"css\",\n \"file\",\n \"id\"\n ]; _i < _iter.length; _i++){\n var name = _iter[_i];\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = _extends({}, this.map);\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n };\n _create_class(Input2, [\n {\n key: \"from\",\n get: function get() {\n return this.file || this.id;\n }\n }\n ]);\n return Input2;\n}();\nvar input = Input$4;\nInput$4.default = Input$4;\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input$4);\n}\nvar SourceMapConsumer = require$$2.SourceMapConsumer, SourceMapGenerator = require$$2.SourceMapGenerator;\nvar dirname = require$$2.dirname, relative = require$$2.relative, resolve$3 = require$$2.resolve, sep = require$$2.sep;\nvar pathToFileURL = require$$2.pathToFileURL;\nvar Input$3 = input;\nvar sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\nvar pathAvailable = Boolean(dirname && resolve$3 && relative && sep);\nvar MapGenerator$2 = /*#__PURE__*/ function() {\n function MapGenerator2(stringify2, root2, opts, cssString) {\n this.stringify = stringify2;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n var _proto = MapGenerator2.prototype;\n _proto.addAnnotation = function addAnnotation() {\n var content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n var eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n };\n _proto.applyPrevMaps = function applyPrevMaps() {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.previous()), _step; !(_step = _iterator()).done;){\n var prev = _step.value;\n var from = this.toUrl(this.path(prev.file));\n var root2 = prev.root || dirname(prev.file);\n var map = void 0;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n };\n _proto.clearAnnotation = function clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n var node2;\n for(var i2 = this.root.nodes.length - 1; i2 >= 0; i2--){\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.indexOf(\"# sourceMappingURL=\") === 0) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n };\n _proto.generate = function generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n var result2 = \"\";\n this.stringify(this.root, function(i2) {\n result2 += i2;\n });\n return [\n result2\n ];\n }\n };\n _proto.generateMap = function generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n var prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: {\n column: 0,\n line: 1\n },\n original: {\n column: 0,\n line: 1\n },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [\n this.css\n ];\n } else {\n return [\n this.css,\n this.map\n ];\n }\n };\n _proto.generateString = function generateString() {\n var _this = this;\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n var line = 1;\n var column = 1;\n var noSource = \"\";\n var mapping = {\n generated: {\n column: 0,\n line: 0\n },\n original: {\n column: 0,\n line: 0\n },\n source: \"\"\n };\n var lines, last;\n this.stringify(this.root, function(str, node2, type) {\n _this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = _this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n _this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n _this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n var p = node2.parent || {\n raws: {}\n };\n var childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = _this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n _this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n _this.map.addMapping(mapping);\n }\n }\n }\n });\n };\n _proto.isAnnotation = function isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.annotation;\n });\n }\n return true;\n };\n _proto.isInline = function isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n var annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.inline;\n });\n }\n return true;\n };\n _proto.isMap = function isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n };\n _proto.isSourcesContent = function isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some(function(i2) {\n return i2.withContent();\n });\n }\n return true;\n };\n _proto.outputFile = function outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n };\n _proto.path = function path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n var cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n var from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve$3(from, this.mapOpts.annotation));\n }\n var path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n };\n _proto.previous = function previous() {\n var _this = this;\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk(function(node2) {\n if (node2.source && node2.source.input.map) {\n var map = node2.source.input.map;\n if (!_this.previousMaps.includes(map)) {\n _this.previousMaps.push(map);\n }\n }\n });\n } else {\n var input2 = new Input$3(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n };\n _proto.setSourcesContent = function setSourcesContent() {\n var _this = this;\n var already = {};\n if (this.root) {\n this.root.walk(function(node2) {\n if (node2.source) {\n var from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n var fromUrl = _this.usesFileUrls ? _this.toFileUrl(from) : _this.toUrl(_this.path(from));\n _this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n var from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"\";\n this.map.setSourceContent(from, this.css);\n }\n };\n _proto.sourcePath = function sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n };\n _proto.toBase64 = function toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n };\n _proto.toFileUrl = function toFileUrl(path) {\n var cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n var fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\"`map.absolute` option is not available in this PostCSS build\");\n }\n };\n _proto.toUrl = function toUrl(path) {\n var cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n var url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n };\n return MapGenerator2;\n}();\nvar mapGenerator = MapGenerator$2;\nvar Node$2 = node;\nvar Comment$4 = /*#__PURE__*/ function(Node$2) {\n _inherits(Comment2, Node$2);\n function Comment2(defaults) {\n var _this;\n _this = Node$2.call(this, defaults) || this;\n _this.type = \"comment\";\n return _this;\n }\n return Comment2;\n}(Node$2);\nvar comment = Comment$4;\nComment$4.default = Comment$4;\nvar isClean$1 = symbols.isClean, my$1 = symbols.my;\nvar Declaration$3 = declaration;\nvar Comment$3 = comment;\nvar Node$1 = node;\nvar parse$4, Rule$4, AtRule$4, Root$6;\nfunction cleanSource(nodes) {\n return nodes.map(function(i2) {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n}\nfunction markDirtyUp(node2) {\n node2[isClean$1] = false;\n if (node2.proxyOf.nodes) {\n for(var _iterator = _create_for_of_iterator_helper_loose(node2.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n markDirtyUp(i2);\n }\n }\n}\nvar Container$7 = /*#__PURE__*/ function(Node$1) {\n _inherits(Container2, Node$1);\n function Container2() {\n return Node$1.apply(this, arguments) || this;\n }\n var _proto = Container2.prototype;\n _proto.append = function append() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n var child = _step.value;\n var nodes = this.normalize(child, this.last);\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var node2 = _step1.value;\n this.proxyOf.nodes.push(node2);\n }\n }\n this.markDirty();\n return this;\n };\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n Node$1.prototype.cleanRaws.call(this, keepBetween);\n if (this.nodes) {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.cleanRaws(keepBetween);\n }\n }\n };\n _proto.each = function each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n var iterator = this.getIterator();\n var index2, result2;\n while(this.indexes[iterator] < this.proxyOf.nodes.length){\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n };\n _proto.every = function every(condition) {\n return this.nodes.every(condition);\n };\n _proto.getIterator = function getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n var iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n };\n _proto.getProxyProcessor = function getProxyProcessor() {\n return {\n get: function get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\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 var _node2;\n return (_node2 = node2)[prop].apply(_node2, [].concat(args.map(function(i2) {\n if (typeof i2 === \"function\") {\n return function(child, index2) {\n return i2(child.toProxy(), index2);\n };\n } else {\n return i2;\n }\n })));\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return function(cb) {\n return node2[prop](function(child) {\n for(var _len = arguments.length, other = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n other[_key - 1] = arguments[_key];\n }\n return cb.apply(void 0, [].concat([\n child.toProxy()\n ], other));\n });\n };\n } else if (prop === \"root\") {\n return function() {\n return node2.root().toProxy();\n };\n } else if (prop === \"nodes\") {\n return node2.nodes.map(function(i2) {\n return i2.toProxy();\n });\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set: function set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n };\n _proto.index = function index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n };\n _proto.insertAfter = function insertAfter(exist, add) {\n var existIndex = this.index(exist);\n var nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n }\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.insertBefore = function insertBefore(exist, add) {\n var existIndex = this.index(exist);\n var type = existIndex === 0 ? \"prepend\" : false;\n var nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse();\n existIndex = this.index(exist);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n this.proxyOf.nodes.splice(existIndex, 0, node2);\n }\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.normalize = function normalize(nodes, sample) {\n var _this = this;\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse$4(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var i21 = _step1.value;\n if (i21.parent) i21.parent.removeChild(i21, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [\n nodes\n ];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [\n new Declaration$3(nodes)\n ];\n } else if (nodes.selector) {\n nodes = [\n new Rule$4(nodes)\n ];\n } else if (nodes.name) {\n nodes = [\n new AtRule$4(nodes)\n ];\n } else if (nodes.text) {\n nodes = [\n new Comment$3(nodes)\n ];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n var processed = nodes.map(function(i2) {\n if (!i2[my$1]) Container2.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean$1]) markDirtyUp(i2);\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = _this.proxyOf;\n return i2;\n });\n return processed;\n };\n _proto.prepend = function prepend() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n children = children.reverse();\n for(var _iterator = _create_for_of_iterator_helper_loose(children), _step; !(_step = _iterator()).done;){\n var child = _step.value;\n var nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for(var _iterator1 = _create_for_of_iterator_helper_loose(nodes), _step1; !(_step1 = _iterator1()).done;){\n var node2 = _step1.value;\n this.proxyOf.nodes.unshift(node2);\n }\n for(var id in this.indexes){\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.push = function push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n };\n _proto.removeAll = function removeAll() {\n for(var _iterator = _create_for_of_iterator_helper_loose(this.proxyOf.nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.parent = void 0;\n }\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n };\n _proto.removeChild = function removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n var index2;\n for(var id in this.indexes){\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n };\n _proto.replaceValues = function replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls(function(decl) {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n };\n _proto.some = function some(condition) {\n return this.nodes.some(condition);\n };\n _proto.walk = function walk(callback) {\n return this.each(function(child, i2) {\n var result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n };\n _proto.walkAtRules = function walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(name, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n };\n _proto.walkComments = function walkComments(callback) {\n return this.walk(function(child, i2) {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n };\n _proto.walkDecls = function walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk(function(child, i2) {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(prop, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n };\n _proto.walkRules = function walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk(function(child, i2) {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (_instanceof(selector, RegExp)) {\n return this.walk(function(child, i2) {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk(function(child, i2) {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n };\n _create_class(Container2, [\n {\n key: \"first\",\n get: function get() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n },\n {\n key: \"last\",\n get: function get() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n }\n ]);\n return Container2;\n}(Node$1);\nContainer$7.registerParse = function(dependant) {\n parse$4 = dependant;\n};\nContainer$7.registerRule = function(dependant) {\n Rule$4 = dependant;\n};\nContainer$7.registerAtRule = function(dependant) {\n AtRule$4 = dependant;\n};\nContainer$7.registerRoot = function(dependant) {\n Root$6 = dependant;\n};\nvar container = Container$7;\nContainer$7.default = Container$7;\nContainer$7.rebuild = function(node2) {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule$4.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule$4.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration$3.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment$3.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root$6.prototype);\n }\n node2[my$1] = true;\n if (node2.nodes) {\n node2.nodes.forEach(function(child) {\n Container$7.rebuild(child);\n });\n }\n};\nvar Container$6 = container;\nvar LazyResult$4, Processor$3;\nvar Document$3 = /*#__PURE__*/ function(Container$6) {\n _inherits(Document23, Container$6);\n function Document23(defaults) {\n var _this;\n _this = Container$6.call(this, _extends({\n type: \"document\"\n }, defaults)) || this;\n if (!_this.nodes) {\n _this.nodes = [];\n }\n return _this;\n }\n var _proto = Document23.prototype;\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) opts = {};\n var lazy = new LazyResult$4(new Processor$3(), this, opts);\n return lazy.stringify();\n };\n return Document23;\n}(Container$6);\nDocument$3.registerLazyResult = function(dependant) {\n LazyResult$4 = dependant;\n};\nDocument$3.registerProcessor = function(dependant) {\n Processor$3 = dependant;\n};\nvar document$1$2 = Document$3;\nDocument$3.default = Document$3;\nvar printed = {};\nvar warnOnce$2 = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n};\nvar Warning$2 = /*#__PURE__*/ function() {\n function Warning2(text, opts) {\n if (opts === void 0) opts = {};\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n var range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for(var opt in opts)this[opt] = opts[opt];\n }\n var _proto = Warning2.prototype;\n _proto.toString = function toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n };\n return Warning2;\n}();\nvar warning = Warning$2;\nWarning$2.default = Warning$2;\nvar Warning$1 = warning;\nvar Result$3 = /*#__PURE__*/ function() {\n function Result2(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n var _proto = Result2.prototype;\n _proto.toString = function toString() {\n return this.css;\n };\n _proto.warn = function warn(text, opts) {\n if (opts === void 0) opts = {};\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n var warning2 = new Warning$1(text, opts);\n this.messages.push(warning2);\n return warning2;\n };\n _proto.warnings = function warnings() {\n return this.messages.filter(function(i2) {\n return i2.type === \"warning\";\n });\n };\n _create_class(Result2, [\n {\n key: \"content\",\n get: function get() {\n return this.css;\n }\n }\n ]);\n return Result2;\n}();\nvar result = Result$3;\nResult$3.default = Result$3;\nvar SINGLE_QUOTE = \"'\".charCodeAt(0);\nvar DOUBLE_QUOTE = '\"'.charCodeAt(0);\nvar BACKSLASH = \"\\\\\".charCodeAt(0);\nvar SLASH = \"/\".charCodeAt(0);\nvar NEWLINE = \"\\n\".charCodeAt(0);\nvar SPACE = \" \".charCodeAt(0);\nvar FEED = \"\\f\".charCodeAt(0);\nvar TAB = \"\t\".charCodeAt(0);\nvar CR = \"\\r\".charCodeAt(0);\nvar OPEN_SQUARE = \"[\".charCodeAt(0);\nvar CLOSE_SQUARE = \"]\".charCodeAt(0);\nvar OPEN_PARENTHESES = \"(\".charCodeAt(0);\nvar CLOSE_PARENTHESES = \")\".charCodeAt(0);\nvar OPEN_CURLY = \"{\".charCodeAt(0);\nvar CLOSE_CURLY = \"}\".charCodeAt(0);\nvar SEMICOLON = \";\".charCodeAt(0);\nvar ASTERISK = \"*\".charCodeAt(0);\nvar COLON = \":\".charCodeAt(0);\nvar AT = \"@\".charCodeAt(0);\nvar RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\nvar RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\nvar RE_HEX_ESCAPE = /[\\da-f]/i;\nvar tokenize = function tokenizer2(input2, options) {\n if (options === void 0) options = {};\n var css = input2.css.valueOf();\n var ignore = options.ignoreErrors;\n var code, next, quote, content, escape;\n var escaped, escapePos, prev, n2, currentToken;\n var length = css.length;\n var pos = 0;\n var buffer = [];\n var returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n var ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch(code){\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED:\n {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n }while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\n \"space\",\n css.slice(pos, next)\n ];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES:\n {\n var controlChar = String.fromCharCode(code);\n currentToken = [\n controlChar,\n controlChar,\n pos\n ];\n break;\n }\n case OPEN_PARENTHESES:\n {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while(css.charCodeAt(escapePos - 1) === BACKSLASH){\n escapePos -= 1;\n escaped = !escaped;\n }\n }while (escaped);\n currentToken = [\n \"brackets\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\n \"(\",\n \"(\",\n pos\n ];\n } else {\n currentToken = [\n \"brackets\",\n content,\n pos,\n next\n ];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE:\n {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while(css.charCodeAt(escapePos - 1) === BACKSLASH){\n escapePos -= 1;\n escaped = !escaped;\n }\n }while (escaped);\n currentToken = [\n \"string\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n case AT:\n {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\n \"at-word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n case BACKSLASH:\n {\n next = pos;\n escape = true;\n while(css.charCodeAt(next + 1) === BACKSLASH){\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while(RE_HEX_ESCAPE.test(css.charAt(next + 1))){\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\n \"word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n break;\n }\n default:\n {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\n \"comment\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\n \"word\",\n css.slice(pos, next + 1),\n pos,\n next\n ];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back: back,\n endOfFile: endOfFile,\n nextToken: nextToken,\n position: position\n };\n};\nvar Container$5 = container;\nvar AtRule$3 = /*#__PURE__*/ function(Container$5) {\n _inherits(AtRule2, Container$5);\n function AtRule2(defaults) {\n var _this;\n _this = Container$5.call(this, defaults) || this;\n _this.type = \"atrule\";\n return _this;\n }\n var _proto = AtRule2.prototype;\n _proto.append = function append() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n var _Container$5_prototype_append;\n if (!this.proxyOf.nodes) this.nodes = [];\n return (_Container$5_prototype_append = Container$5.prototype.append).call.apply(_Container$5_prototype_append, [].concat([\n this\n ], children));\n };\n _proto.prepend = function prepend() {\n for(var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++){\n children[_key] = arguments[_key];\n }\n var _Container$5_prototype_prepend;\n if (!this.proxyOf.nodes) this.nodes = [];\n return (_Container$5_prototype_prepend = Container$5.prototype.prepend).call.apply(_Container$5_prototype_prepend, [].concat([\n this\n ], children));\n };\n return AtRule2;\n}(Container$5);\nvar atRule = AtRule$3;\nAtRule$3.default = AtRule$3;\nContainer$5.registerAtRule(AtRule$3);\nvar Container$4 = container;\nvar LazyResult$3, Processor$2;\nvar Root$5 = /*#__PURE__*/ function(Container$4) {\n _inherits(Root2, Container$4);\n function Root2(defaults) {\n var _this;\n _this = Container$4.call(this, defaults) || this;\n _this.type = \"root\";\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n var _proto = Root2.prototype;\n _proto.normalize = function normalize(child, sample, type) {\n var nodes = Container$4.prototype.normalize.call(this, child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for(var _iterator = _create_for_of_iterator_helper_loose(nodes), _step; !(_step = _iterator()).done;){\n var node2 = _step.value;\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n };\n _proto.removeChild = function removeChild(child, ignore) {\n var index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return Container$4.prototype.removeChild.call(this, child);\n };\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) opts = {};\n var lazy = new LazyResult$3(new Processor$2(), this, opts);\n return lazy.stringify();\n };\n return Root2;\n}(Container$4);\nRoot$5.registerLazyResult = function(dependant) {\n LazyResult$3 = dependant;\n};\nRoot$5.registerProcessor = function(dependant) {\n Processor$2 = dependant;\n};\nvar root = Root$5;\nRoot$5.default = Root$5;\nContainer$4.registerRoot(Root$5);\nvar list$2 = {\n comma: function comma(string) {\n return list$2.split(string, [\n \",\"\n ], true);\n },\n space: function space(string) {\n var spaces = [\n \" \",\n \"\\n\",\n \"\t\"\n ];\n return list$2.split(string, spaces);\n },\n split: function split(string, separators, last) {\n var array = [];\n var current = \"\";\n var split = false;\n var func = 0;\n var inQuote = false;\n var prevQuote = \"\";\n var escape = false;\n for(var _iterator = _create_for_of_iterator_helper_loose(string), _step; !(_step = _iterator()).done;){\n var letter = _step.value;\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n};\nvar list_1 = list$2;\nlist$2.default = list$2;\nvar Container$3 = container;\nvar list$1 = list_1;\nvar Rule$3 = /*#__PURE__*/ function(Container$3) {\n _inherits(Rule2, Container$3);\n function Rule2(defaults) {\n var _this;\n _this = Container$3.call(this, defaults) || this;\n _this.type = \"rule\";\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n _create_class(Rule2, [\n {\n key: \"selectors\",\n get: function get() {\n return list$1.comma(this.selector);\n },\n set: function set(values) {\n var match = this.selector ? this.selector.match(/,\\s*/) : null;\n var sep2 = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep2);\n }\n }\n ]);\n return Rule2;\n}(Container$3);\nvar rule = Rule$3;\nRule$3.default = Rule$3;\nContainer$3.registerRule(Rule$3);\nvar Declaration$2 = declaration;\nvar tokenizer22 = tokenize;\nvar Comment$2 = comment;\nvar AtRule$2 = atRule;\nvar Root$4 = root;\nvar Rule$2 = rule;\nvar SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n};\nfunction findLastWithPosition(tokens) {\n for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n var token = tokens[i2];\n var pos = token[3] || token[2];\n if (pos) return pos;\n }\n}\nvar Parser$1 = /*#__PURE__*/ function() {\n function Parser2(input2) {\n this.input = input2;\n this.root = new Root$4();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = {\n input: input2,\n start: {\n column: 1,\n line: 1,\n offset: 0\n }\n };\n }\n var _proto = Parser2.prototype;\n _proto.atrule = function atrule(token) {\n var node2 = new AtRule$2();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n var type;\n var prev;\n var shift;\n var last = false;\n var open = false;\n var params = [];\n var brackets = [];\n while(!this.tokenizer.endOfFile()){\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while(prev && prev[0] === \"space\"){\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n };\n _proto.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n var colon = this.colon(tokens);\n if (colon === false) return;\n var founded = 0;\n var token;\n for(var j = colon - 1; j >= 0; j--){\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\"Missed semicolon\", token[0] === \"word\" ? token[3] + 1 : token[2]);\n };\n _proto.colon = function colon(tokens) {\n var brackets = 0;\n var token, type, prev;\n for(var _iterator = _create_for_of_iterator_helper_loose(tokens.entries()), _step; !(_step = _iterator()).done;){\n var _step_value = _step.value, i2 = _step_value[0], element = _step_value[1];\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n };\n _proto.comment = function comment(token) {\n var node2 = new Comment$2();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n var text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n var match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n };\n _proto.createTokenizer = function createTokenizer() {\n this.tokenizer = tokenizer22(this.input);\n };\n _proto.decl = function decl(tokens, customProperty) {\n var node2 = new Declaration$2();\n this.init(node2, tokens[0][2]);\n var last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(last[3] || last[2] || findLastWithPosition(tokens));\n node2.source.end.offset++;\n while(tokens[0][0] !== \"word\"){\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while(tokens.length){\n var type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n var token;\n while(tokens.length){\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([\n token\n ]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n var firstSpaces = [];\n var next;\n while(tokens.length){\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for(var i2 = tokens.length - 1; i2 >= 0; i2--){\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n var string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n var cache = tokens.slice(0);\n var str = \"\";\n for(var j = i2; j > 0; j--){\n var type1 = cache[j][0];\n if (str.trim().indexOf(\"!\") === 0 && type1 !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf(\"!\") === 0) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n var hasWord = tokens.some(function(i2) {\n return i2[0] !== \"space\" && i2[0] !== \"comment\";\n });\n if (hasWord) {\n node2.raws.between += firstSpaces.map(function(i2) {\n return i2[1];\n }).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n };\n _proto.doubleColon = function doubleColon(token) {\n throw this.input.error(\"Double colon\", {\n offset: token[2]\n }, {\n offset: token[2] + token[1].length\n });\n };\n _proto.emptyRule = function emptyRule(token) {\n var node2 = new Rule$2();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n };\n _proto.end = function end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n };\n _proto.endFile = function endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n };\n _proto.freeSemicolon = function freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n var prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n };\n // Helpers\n _proto.getPosition = function getPosition(offset) {\n var pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset: offset\n };\n };\n _proto.init = function init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n };\n _proto.other = function other(start) {\n var end = false;\n var type = null;\n var colon = false;\n var bracket = null;\n var brackets = [];\n var customProperty = start[1].startsWith(\"--\");\n var tokens = [];\n var token = start;\n while(token){\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while(tokens.length){\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n };\n _proto.parse = function parse() {\n var token;\n while(!this.tokenizer.endOfFile()){\n token = this.tokenizer.nextToken();\n switch(token[0]){\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n };\n _proto.precheckMissedSemicolon = function precheckMissedSemicolon() {};\n _proto.raw = function raw(node2, prop, tokens, customProperty) {\n var token, type;\n var length = tokens.length;\n var value = \"\";\n var clean = true;\n var next, prev;\n for(var i2 = 0; i2 < length; i2 += 1){\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n var raw = tokens.reduce(function(all, i2) {\n return all + i2[1];\n }, \"\");\n node2.raws[prop] = {\n raw: raw,\n value: value\n };\n }\n node2[prop] = value;\n };\n _proto.rule = function rule(tokens) {\n tokens.pop();\n var node2 = new Rule$2();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n };\n _proto.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) {\n var lastTokenType;\n var spaces = \"\";\n while(tokens.length){\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n // Errors\n _proto.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) {\n var next;\n var spaces = \"\";\n while(tokens.length){\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n };\n _proto.spacesFromEnd = function spacesFromEnd(tokens) {\n var lastTokenType;\n var spaces = \"\";\n while(tokens.length){\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n _proto.stringFrom = function stringFrom(tokens, from) {\n var result2 = \"\";\n for(var i2 = from; i2 < tokens.length; i2++){\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n };\n _proto.unclosedBlock = function unclosedBlock() {\n var pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n };\n _proto.unclosedBracket = function unclosedBracket(bracket) {\n throw this.input.error(\"Unclosed bracket\", {\n offset: bracket[2]\n }, {\n offset: bracket[2] + 1\n });\n };\n _proto.unexpectedClose = function unexpectedClose(token) {\n throw this.input.error(\"Unexpected }\", {\n offset: token[2]\n }, {\n offset: token[2] + 1\n });\n };\n _proto.unknownWord = function unknownWord(tokens) {\n throw this.input.error(\"Unknown word\", {\n offset: tokens[0][2]\n }, {\n offset: tokens[0][2] + tokens[0][1].length\n });\n };\n _proto.unnamedAtrule = function unnamedAtrule(node2, token) {\n throw this.input.error(\"At-rule without name\", {\n offset: token[2]\n }, {\n offset: token[2] + token[1].length\n });\n };\n return Parser2;\n}();\nvar parser = Parser$1;\nvar Container$2 = container;\nvar Parser22 = parser;\nvar Input$2 = input;\nfunction parse$3(css, opts) {\n var input2 = new Input$2(css, opts);\n var parser2 = new Parser22(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n}\nvar parse_1 = parse$3;\nparse$3.default = parse$3;\nContainer$2.registerParse(parse$3);\nvar isClean = symbols.isClean, my = symbols.my;\nvar MapGenerator$1 = mapGenerator;\nvar stringify$2 = stringify_1;\nvar Container$1 = container;\nvar Document$2 = document$1$2;\nvar warnOnce$1 = warnOnce$2;\nvar Result$2 = result;\nvar parse$2 = parse_1;\nvar Root$3 = root;\nvar TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n};\nvar PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n};\nvar NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n};\nvar CHILDREN = 0;\nfunction isPromise(obj) {\n return (typeof obj === \"undefined\" ? \"undefined\" : _type_of(obj)) === \"object\" && typeof obj.then === \"function\";\n}\nfunction getEvents(node2) {\n var key = false;\n var type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [\n type,\n type + \"-\" + key,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (node2.append) {\n return [\n type,\n CHILDREN,\n type + \"Exit\"\n ];\n } else {\n return [\n type,\n type + \"Exit\"\n ];\n }\n}\nfunction toStack(node2) {\n var events;\n if (node2.type === \"document\") {\n events = [\n \"Document\",\n CHILDREN,\n \"DocumentExit\"\n ];\n } else if (node2.type === \"root\") {\n events = [\n \"Root\",\n CHILDREN,\n \"RootExit\"\n ];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events: events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n}\nfunction cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach(function(i2) {\n return cleanMarks(i2);\n });\n return node2;\n}\nvar postcss$2 = {};\nvar LazyResult$2 = /*#__PURE__*/ function() {\n function LazyResult2(processor2, css, opts) {\n var _this = this;\n this.stringified = false;\n this.processed = false;\n var root2;\n if ((typeof css === \"undefined\" ? \"undefined\" : _type_of(css)) === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (_instanceof(css, LazyResult2) || _instanceof(css, Result$2)) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n var parser2 = parse$2;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container$1.rebuild(root2);\n }\n }\n this.result = new Result$2(processor2, root2, opts);\n this.helpers = _extends({}, postcss$2, {\n postcss: postcss$2,\n result: this.result\n });\n this.plugins = this.processor.plugins.map(function(plugin22) {\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.prepare) {\n return _extends({}, plugin22, plugin22.prepare(_this.result));\n } else {\n return plugin22;\n }\n });\n }\n var _proto = LazyResult2.prototype;\n _proto.async = function async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n };\n _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n _proto.getAsyncError = function getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n };\n _proto.handleError = function handleError(error, node2) {\n var plugin22 = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin22.postcssPlugin;\n error.setMessage();\n } else if (plugin22.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n var pluginName = plugin22.postcssPlugin;\n var pluginVer = plugin22.postcssVersion;\n var runtimeVer = this.result.processor.version;\n var a2 = pluginVer.split(\".\");\n var b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\");\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n };\n _proto.prepareVisitors = function prepareVisitors() {\n var _this = this;\n this.listeners = {};\n var add = function(plugin22, type, cb) {\n if (!_this.listeners[type]) _this.listeners[type] = [];\n _this.listeners[type].push([\n plugin22,\n cb\n ]);\n };\n for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n var plugin22 = _step.value;\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\") {\n for(var event in plugin22){\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\"Unknown event \" + event + \" in \" + plugin22.postcssPlugin + \". Try to update PostCSS (\" + this.processor.version + \" now).\");\n }\n if (!NOT_VISITORS[event]) {\n if (_type_of(plugin22[event]) === \"object\") {\n for(var filter in plugin22[event]){\n if (filter === \"*\") {\n add(plugin22, event, plugin22[event][filter]);\n } else {\n add(plugin22, event + \"-\" + filter.toLowerCase(), plugin22[event][filter]);\n }\n }\n } else if (typeof plugin22[event] === \"function\") {\n add(plugin22, event, plugin22[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n };\n _proto.runAsync = function runAsync() {\n var _this = this;\n return _async_to_generator(function() {\n var i2, plugin22, promise, error, root2, stack, promise1, e2, node2, _loop, _iterator, _step;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _this.plugin = 0;\n i2 = 0;\n _state.label = 1;\n case 1:\n if (!(i2 < _this.plugins.length)) return [\n 3,\n 6\n ];\n plugin22 = _this.plugins[i2];\n promise = _this.runOnRoot(plugin22);\n if (!isPromise(promise)) return [\n 3,\n 5\n ];\n _state.label = 2;\n case 2:\n _state.trys.push([\n 2,\n 4,\n ,\n 5\n ]);\n return [\n 4,\n promise\n ];\n case 3:\n _state.sent();\n return [\n 3,\n 5\n ];\n case 4:\n error = _state.sent();\n throw _this.handleError(error);\n case 5:\n i2++;\n return [\n 3,\n 1\n ];\n case 6:\n _this.prepareVisitors();\n if (!_this.hasListener) return [\n 3,\n 18\n ];\n root2 = _this.result.root;\n _state.label = 7;\n case 7:\n if (!!root2[isClean]) return [\n 3,\n 14\n ];\n root2[isClean] = true;\n stack = [\n toStack(root2)\n ];\n _state.label = 8;\n case 8:\n if (!(stack.length > 0)) return [\n 3,\n 13\n ];\n promise1 = _this.visitTick(stack);\n if (!isPromise(promise1)) return [\n 3,\n 12\n ];\n _state.label = 9;\n case 9:\n _state.trys.push([\n 9,\n 11,\n ,\n 12\n ]);\n return [\n 4,\n promise1\n ];\n case 10:\n _state.sent();\n return [\n 3,\n 12\n ];\n case 11:\n e2 = _state.sent();\n node2 = stack[stack.length - 1].node;\n throw _this.handleError(e2, node2);\n case 12:\n return [\n 3,\n 8\n ];\n case 13:\n return [\n 3,\n 7\n ];\n case 14:\n if (!_this.listeners.OnceExit) return [\n 3,\n 18\n ];\n _loop = function() {\n var _step_value, plugin22, visitor, roots, e2;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n _this.result.lastPlugin = plugin22;\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 6,\n ,\n 7\n ]);\n if (!(root2.type === \"document\")) return [\n 3,\n 3\n ];\n roots = root2.nodes.map(function(subRoot) {\n return visitor(subRoot, _this.helpers);\n });\n return [\n 4,\n Promise.all(roots)\n ];\n case 2:\n _state.sent();\n return [\n 3,\n 5\n ];\n case 3:\n return [\n 4,\n visitor(root2, _this.helpers)\n ];\n case 4:\n _state.sent();\n _state.label = 5;\n case 5:\n return [\n 3,\n 7\n ];\n case 6:\n e2 = _state.sent();\n throw _this.handleError(e2);\n case 7:\n return [\n 2\n ];\n }\n });\n };\n _iterator = _create_for_of_iterator_helper_loose(_this.listeners.OnceExit);\n _state.label = 15;\n case 15:\n if (!!(_step = _iterator()).done) return [\n 3,\n 18\n ];\n return [\n 5,\n _ts_values(_loop())\n ];\n case 16:\n _state.sent();\n _state.label = 17;\n case 17:\n return [\n 3,\n 15\n ];\n case 18:\n _this.processed = true;\n return [\n 2,\n _this.stringify()\n ];\n }\n });\n })();\n };\n _proto.runOnRoot = function runOnRoot(plugin22) {\n var _this = this;\n this.result.lastPlugin = plugin22;\n try {\n if ((typeof plugin22 === \"undefined\" ? \"undefined\" : _type_of(plugin22)) === \"object\" && plugin22.Once) {\n if (this.result.root.type === \"document\") {\n var roots = this.result.root.nodes.map(function(root2) {\n return plugin22.Once(root2, _this.helpers);\n });\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin22.Once(this.result.root, this.helpers);\n } else if (typeof plugin22 === \"function\") {\n return plugin22(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n };\n _proto.stringify = function stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n var opts = this.result.opts;\n var str = stringify$2;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n var map = new MapGenerator$1(str, this.result.root, this.result.opts);\n var data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n };\n _proto.sync = function sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(this.plugins), _step; !(_step = _iterator()).done;){\n var plugin22 = _step.value;\n var promise = this.runOnRoot(plugin22);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n var root2 = this.result.root;\n while(!root2[isClean]){\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for(var _iterator1 = _create_for_of_iterator_helper_loose(root2.nodes), _step1; !(_step1 = _iterator1()).done;){\n var subRoot = _step1.value;\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n };\n _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce$1(\"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\");\n }\n }\n return this.async().then(onFulfilled, onRejected);\n };\n _proto.toString = function toString() {\n return this.css;\n };\n _proto.visitSync = function visitSync(visitors, node2) {\n for(var _iterator = _create_for_of_iterator_helper_loose(visitors), _step; !(_step = _iterator()).done;){\n var _step_value = _step.value, plugin22 = _step_value[0], visitor = _step_value[1];\n this.result.lastPlugin = plugin22;\n var promise = void 0;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n };\n _proto.visitTick = function visitTick(stack) {\n var visit2 = stack[stack.length - 1];\n var node2 = visit2.node, visitors = visit2.visitors;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n var _visitors_visit2_visitorIndex = visitors[visit2.visitorIndex], plugin22 = _visitors_visit2_visitorIndex[0], visitor = _visitors_visit2_visitorIndex[1];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin22;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n var iterator = visit2.iterator;\n var child;\n while(child = node2.nodes[node2.indexes[iterator]]){\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n var events = visit2.events;\n while(visit2.eventIndex < events.length){\n var event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n };\n _proto.walkSync = function walkSync(node2) {\n var _this = this;\n node2[isClean] = true;\n var events = getEvents(node2);\n for(var _iterator = _create_for_of_iterator_helper_loose(events), _step; !(_step = _iterator()).done;){\n var event = _step.value;\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each(function(child) {\n if (!child[isClean]) _this.walkSync(child);\n });\n }\n } else {\n var visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n };\n _proto.warnings = function warnings() {\n return this.sync().warnings();\n };\n _create_class(LazyResult2, [\n {\n key: \"content\",\n get: function get() {\n return this.stringify().content;\n }\n },\n {\n key: \"css\",\n get: function get() {\n return this.stringify().css;\n }\n },\n {\n key: \"map\",\n get: function get() {\n return this.stringify().map;\n }\n },\n {\n key: \"messages\",\n get: function get() {\n return this.sync().messages;\n }\n },\n {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n },\n {\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n },\n {\n key: \"root\",\n get: function get() {\n return this.sync().root;\n }\n },\n {\n key: Symbol.toStringTag,\n get: function get() {\n return \"LazyResult\";\n }\n }\n ]);\n return LazyResult2;\n}();\nLazyResult$2.registerPostcss = function(dependant) {\n postcss$2 = dependant;\n};\nvar lazyResult = LazyResult$2;\nLazyResult$2.default = LazyResult$2;\nRoot$3.registerLazyResult(LazyResult$2);\nDocument$2.registerLazyResult(LazyResult$2);\nvar MapGenerator22 = mapGenerator;\nvar stringify$1 = stringify_1;\nvar warnOnce22 = warnOnce$2;\nvar parse$1 = parse_1;\nvar Result$1 = result;\nvar NoWorkResult$1 = /*#__PURE__*/ function() {\n function NoWorkResult2(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n var root2;\n var str = stringify$1;\n this.result = new Result$1(this._processor, root2, this._opts);\n this.result.css = css;\n var self = this;\n Object.defineProperty(this.result, \"root\", {\n get: function get() {\n return self.root;\n }\n });\n var map = new MapGenerator22(str, root2, this._opts, css);\n if (map.isMap()) {\n var _map_generate = map.generate(), generatedCSS = _map_generate[0], generatedMap = _map_generate[1];\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n var _proto = NoWorkResult2.prototype;\n _proto.async = function async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n };\n _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n _proto.sync = function sync() {\n if (this.error) throw this.error;\n return this.result;\n };\n _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce22(\"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\");\n }\n }\n return this.async().then(onFulfilled, onRejected);\n };\n _proto.toString = function toString() {\n return this._css;\n };\n _proto.warnings = function warnings() {\n return [];\n };\n _create_class(NoWorkResult2, [\n {\n key: \"content\",\n get: function get() {\n return this.result.css;\n }\n },\n {\n key: \"css\",\n get: function get() {\n return this.result.css;\n }\n },\n {\n key: \"map\",\n get: function get() {\n return this.result.map;\n }\n },\n {\n key: \"messages\",\n get: function get() {\n return [];\n }\n },\n {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n },\n {\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n },\n {\n key: \"root\",\n get: function get() {\n if (this._root) {\n return this._root;\n }\n var root2;\n var parser2 = parse$1;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n },\n {\n key: Symbol.toStringTag,\n get: function get() {\n return \"NoWorkResult\";\n }\n }\n ]);\n return NoWorkResult2;\n}();\nvar noWorkResult = NoWorkResult$1;\nNoWorkResult$1.default = NoWorkResult$1;\nvar NoWorkResult22 = noWorkResult;\nvar LazyResult$1 = lazyResult;\nvar Document$1 = document$1$2;\nvar Root$2 = root;\nvar Processor$1 = /*#__PURE__*/ function() {\n function Processor2(plugins) {\n if (plugins === void 0) plugins = [];\n this.version = \"8.4.38\";\n this.plugins = this.normalize(plugins);\n }\n var _proto = Processor2.prototype;\n _proto.normalize = function normalize(plugins) {\n var normalized = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(plugins), _step; !(_step = _iterator()).done;){\n var i2 = _step.value;\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if ((typeof i2 === \"undefined\" ? \"undefined\" : _type_of(i2)) === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\");\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n };\n _proto.process = function process1(css, opts) {\n if (opts === void 0) opts = {};\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult22(this, css, opts);\n } else {\n return new LazyResult$1(this, css, opts);\n }\n };\n _proto.use = function use(plugin22) {\n this.plugins = this.plugins.concat(this.normalize([\n plugin22\n ]));\n return this;\n };\n return Processor2;\n}();\nvar processor = Processor$1;\nProcessor$1.default = Processor$1;\nRoot$2.registerProcessor(Processor$1);\nDocument$1.registerProcessor(Processor$1);\nvar Declaration$1 = declaration;\nvar PreviousMap22 = previousMap;\nvar Comment$1 = comment;\nvar AtRule$1 = atRule;\nvar Input$1 = input;\nvar Root$1 = root;\nvar Rule$1 = rule;\nfunction fromJSON$1(json, inputs) {\n if (Array.isArray(json)) return json.map(function(n2) {\n return fromJSON$1(n2);\n });\n var ownInputs = json.inputs, defaults = _object_without_properties_loose(json, [\n \"inputs\"\n ]);\n if (ownInputs) {\n inputs = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(ownInputs), _step; !(_step = _iterator()).done;){\n var input2 = _step.value;\n var inputHydrated = _extends({}, input2, {\n __proto__: Input$1.prototype\n });\n if (inputHydrated.map) {\n inputHydrated.map = _extends({}, inputHydrated.map, {\n __proto__: PreviousMap22.prototype\n });\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map(function(n2) {\n return fromJSON$1(n2, inputs);\n });\n }\n if (defaults.source) {\n var _defaults_source = defaults.source, inputId = _defaults_source.inputId, source = _object_without_properties_loose(_defaults_source, [\n \"inputId\"\n ]);\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root$1(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration$1(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule$1(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment$1(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule$1(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n}\nvar fromJSON_1 = fromJSON$1;\nfromJSON$1.default = fromJSON$1;\nvar CssSyntaxError22 = cssSyntaxError;\nvar Declaration22 = declaration;\nvar LazyResult22 = lazyResult;\nvar Container22 = container;\nvar Processor22 = processor;\nvar stringify$6 = stringify_1;\nvar fromJSON = fromJSON_1;\nvar Document222 = document$1$2;\nvar Warning22 = warning;\nvar Comment22 = comment;\nvar AtRule22 = atRule;\nvar Result22 = result;\nvar Input22 = input;\nvar parse = parse_1;\nvar list = list_1;\nvar Rule22 = rule;\nvar Root22 = root;\nvar Node22 = node;\nfunction postcss() {\n for(var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++){\n plugins[_key] = arguments[_key];\n }\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor22(plugins);\n}\npostcss.plugin = function plugin2(name, initializer) {\n var warningPrinted = false;\n function creator() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\");\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\");\n }\n }\n var transformer = initializer.apply(void 0, [].concat(args));\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor22().version;\n return transformer;\n }\n var cache;\n Object.defineProperty(creator, \"postcss\", {\n get: function get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss([\n creator(pluginOpts)\n ]).process(css, processOpts);\n };\n return creator;\n};\npostcss.stringify = stringify$6;\npostcss.parse = parse;\npostcss.fromJSON = fromJSON;\npostcss.list = list;\npostcss.comment = function(defaults) {\n return new Comment22(defaults);\n};\npostcss.atRule = function(defaults) {\n return new AtRule22(defaults);\n};\npostcss.decl = function(defaults) {\n return new Declaration22(defaults);\n};\npostcss.rule = function(defaults) {\n return new Rule22(defaults);\n};\npostcss.root = function(defaults) {\n return new Root22(defaults);\n};\npostcss.document = function(defaults) {\n return new Document222(defaults);\n};\npostcss.CssSyntaxError = CssSyntaxError22;\npostcss.Declaration = Declaration22;\npostcss.Container = Container22;\npostcss.Processor = Processor22;\npostcss.Document = Document222;\npostcss.Comment = Comment22;\npostcss.Warning = Warning22;\npostcss.AtRule = AtRule22;\npostcss.Result = Result22;\npostcss.Input = Input22;\npostcss.Rule = Rule22;\npostcss.Root = Root22;\npostcss.Node = Node22;\nLazyResult22.registerPostcss(postcss);\nvar postcss_1 = postcss;\npostcss.default = postcss;\nvar postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs(postcss_1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nvar BaseRRNode = /*#__PURE__*/ function() {\n function BaseRRNode() {\n for(var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++){\n _args[_key] = arguments[_key];\n }\n __publicField2(this, \"parentElement\", null);\n __publicField2(this, \"parentNode\", null);\n __publicField2(this, \"ownerDocument\");\n __publicField2(this, \"firstChild\", null);\n __publicField2(this, \"lastChild\", null);\n __publicField2(this, \"previousSibling\", null);\n __publicField2(this, \"nextSibling\", null);\n __publicField2(this, \"ELEMENT_NODE\", 1);\n __publicField2(this, \"TEXT_NODE\", 3);\n __publicField2(this, \"nodeType\");\n __publicField2(this, \"nodeName\");\n __publicField2(this, \"RRNodeType\");\n }\n var _proto = BaseRRNode.prototype;\n _proto.contains = function contains(node2) {\n if (!_instanceof(node2, BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while(node2.parentNode){\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _proto.appendChild = function appendChild(_newChild) {\n throw new Error(\"RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.\");\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _proto.insertBefore = function insertBefore(_newChild, _refChild) {\n throw new Error(\"RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.\");\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _proto.removeChild = function removeChild(_node) {\n throw new Error(\"RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.\");\n };\n _proto.toString = function toString() {\n return \"RRNode\";\n };\n _create_class(BaseRRNode, [\n {\n key: \"childNodes\",\n get: function get() {\n var childNodes2 = [];\n var childIterator = this.firstChild;\n while(childIterator){\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n }\n ]);\n return BaseRRNode;\n}();\nvar testableAccessors = {\n Node: [\n \"childNodes\",\n \"parentNode\",\n \"parentElement\",\n \"textContent\"\n ],\n ShadowRoot: [\n \"host\",\n \"styleSheets\"\n ],\n Element: [\n \"shadowRoot\",\n \"querySelector\",\n \"querySelectorAll\"\n ],\n MutationObserver: []\n};\nvar testableMethods = {\n Node: [\n \"contains\",\n \"getRootNode\"\n ],\n ShadowRoot: [\n \"getSelection\"\n ],\n Element: [],\n MutationObserver: [\n \"constructor\"\n ]\n};\nvar untaintedBasePrototype = {};\nvar isAngularZonePresent = function() {\n return !!globalThis.Zone;\n};\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key]) return untaintedBasePrototype[key];\n var defaultObj = globalThis[key];\n var defaultPrototype = defaultObj.prototype;\n var accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n var isUntaintedAccessors = Boolean(accessorNames && // @ts-expect-error 2345\n accessorNames.every(function(accessor) {\n var _a2, _b;\n return Boolean((_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\"));\n }));\n var methodNames = key in testableMethods ? testableMethods[key] : void 0;\n var isUntaintedMethods = Boolean(methodNames && methodNames.every(// @ts-expect-error 2345\n function(method) {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }));\n if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {\n untaintedBasePrototype[key] = defaultObj.prototype;\n return defaultObj.prototype;\n }\n try {\n var iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n var win = iframeEl.contentWindow;\n if (!win) return defaultObj.prototype;\n var untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch (e) {\n return defaultPrototype;\n }\n}\nvar untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n var cacheKey = key + \".\" + String(accessor);\n if (untaintedAccessorCache[cacheKey]) return untaintedAccessorCache[cacheKey].call(instance);\n var untaintedPrototype = getUntaintedPrototype(key);\n var untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(untaintedPrototype, accessor)) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nvar untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n var cacheKey = key + \".\" + String(method);\n if (untaintedMethodCache[cacheKey]) return untaintedMethodCache[cacheKey].bind(instance);\n var untaintedPrototype = getUntaintedPrototype(key);\n var untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nfunction patch$2(source, name, replacement) {\n try {\n if (!(name in source)) {\n return function() {};\n }\n var original = source[name];\n var wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return function() {\n source[name] = original;\n };\n } catch (e) {\n return function() {};\n }\n}\nvar index = {\n childNodes: childNodes,\n parentNode: parentNode,\n parentElement: parentElement,\n textContent: textContent,\n contains: contains,\n getRootNode: getRootNode,\n host: host,\n styleSheets: styleSheets,\n shadowRoot: shadowRoot,\n querySelector: querySelector,\n querySelectorAll: querySelectorAll,\n mutationObserver: mutationObserverCtor,\n patch: patch$2\n};\nfunction on(type, fn, target) {\n if (target === void 0) target = document;\n var options = {\n capture: true,\n passive: true\n };\n target.addEventListener(type, fn, options);\n return function() {\n return target.removeEventListener(type, fn, options);\n };\n}\nvar DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nvar _mirror = {\n map: {},\n getId: function getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode: function getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap: function removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has: function has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset: function reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get: function get(target, prop, receiver) {\n if (prop === \"map\") {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction throttle(func, wait, options) {\n if (options === void 0) options = {};\n var timeout = null;\n var previous = 0;\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 var now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n var remaining = wait - (now - previous);\n var context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(function() {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win) {\n if (win === void 0) win = window;\n var original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(target, key, isRevoked ? d : {\n set: function set(value) {\n var _this = this;\n setTimeout(function() {\n d.set.call(_this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n });\n return function() {\n return hookSetter(target, key, original || {}, true);\n };\n}\nvar nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = function() {\n return /* @__PURE__ */ new Date().getTime();\n };\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n var doc = win.document;\n return {\n left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n };\n}\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n if (!node2) {\n return null;\n }\n var el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n if (!node2) {\n return false;\n }\n var el = closestElementOfNode(node2);\n if (!el) {\n return false;\n }\n try {\n if (typeof blockClass === \"string\") {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e2) {}\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\nfunction isSerialized(n2, mirror2) {\n return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n if (isShadowRoot(target)) {\n return false;\n }\n var id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n var parent = index.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win) {\n if (win === void 0) win = window;\n if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype.forEach;\n }\n if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2));\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (_instanceof(n2, BaseRRNode) && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nvar StyleSheetMirror = /*#__PURE__*/ function() {\n function StyleSheetMirror() {\n __publicField$1(this, \"id\", 1);\n __publicField$1(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n var _proto = StyleSheetMirror.prototype;\n _proto.getId = function getId(stylesheet) {\n var _this_styleIDMap_get;\n return (_this_styleIDMap_get = this.styleIDMap.get(stylesheet)) != null ? _this_styleIDMap_get : -1;\n };\n _proto.has = function has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n };\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */ _proto.add = function add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n var newId;\n if (id === void 0) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n };\n _proto.getStyle = function getStyle(id) {\n return this.idStyleMap.get(id) || null;\n };\n _proto.reset = function reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n };\n _proto.generateId = function generateId() {\n return this.id++;\n };\n return StyleSheetMirror;\n}();\nfunction getShadowHost(n2) {\n var _a2;\n var shadowHost = null;\n if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2))) shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n var rootShadowHost = n2;\n var shadowHost;\n while(shadowHost = getShadowHost(rootShadowHost))rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n var doc = n2.ownerDocument;\n if (!doc) return false;\n var shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n var doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ function(EventType2) {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n}(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ function(IncrementalSource2) {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n}(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ function(MouseInteractions2) {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n}(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ function(PointerTypes2) {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n}(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ function(CanvasContext2) {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n}(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ function(MediaInteractions2) {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n}(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ function(NodeType2) {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n}(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n return \"__ln\" in n2;\n}\nvar DoubleLinkedList = /*#__PURE__*/ function() {\n function DoubleLinkedList() {\n __publicField$1(this, \"length\", 0);\n __publicField$1(this, \"head\", null);\n __publicField$1(this, \"tail\", null);\n }\n var _proto = DoubleLinkedList.prototype;\n _proto.get = function get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n var current = this.head;\n for(var index2 = 0; index2 < position; index2++){\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n };\n _proto.addNode = function addNode(n2) {\n var node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n var current = n2.previousSibling.__ln.next;\n node2.next = current;\n node2.previous = n2.previousSibling.__ln;\n n2.previousSibling.__ln.next = node2;\n if (current) {\n current.previous = node2;\n }\n } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n var current1 = n2.nextSibling.__ln.previous;\n node2.previous = current1;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current1) {\n current1.next = node2;\n }\n } else {\n if (this.head) {\n this.head.previous = node2;\n }\n node2.next = this.head;\n this.head = node2;\n }\n if (node2.next === null) {\n this.tail = node2;\n }\n this.length++;\n };\n _proto.removeNode = function removeNode(n2) {\n var current = n2.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n2.__ln) {\n delete n2.__ln;\n }\n this.length--;\n };\n return DoubleLinkedList;\n}();\nvar moveKey = function(id, parentId) {\n return id + \"@\" + parentId;\n};\nvar MutationBuffer = /*#__PURE__*/ function() {\n function MutationBuffer() {\n var _this = this;\n __publicField$1(this, \"frozen\", false);\n __publicField$1(this, \"locked\", false);\n __publicField$1(this, \"texts\", []);\n __publicField$1(this, \"attributes\", []);\n __publicField$1(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"removes\", []);\n __publicField$1(this, \"mapRemoves\", []);\n __publicField$1(this, \"movedMap\", {});\n /**\n * the browser MutationObserver emits multiple mutations after\n * a delay for performance reasons, making tracing added nodes hard\n * in our `processMutations` callback function.\n * For example, if we append an element el_1 into body, and then append\n * another element el_2 into el_1, these two mutations may be passed to the\n * callback function together when the two operations were done.\n * Generally we need to trace child nodes of newly added nodes, but in this\n * case if we count el_2 as el_1's child node in the first mutation record,\n * then we will count el_2 again in the second mutation record which was\n * duplicated.\n * To avoid of duplicate counting added nodes, we use a Set to store\n * added nodes and its child nodes during iterate mutation records. Then\n * collect added nodes from the Set which have no duplicate copy. But\n * this also causes newly added nodes will not be serialized with id ASAP,\n * which means all the id related calculation should be lazy too.\n */ __publicField$1(this, \"addedSet\", /* @__PURE__ */ new Set());\n __publicField$1(this, \"movedSet\", /* @__PURE__ */ new Set());\n __publicField$1(this, \"droppedSet\", /* @__PURE__ */ new Set());\n __publicField$1(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n __publicField$1(this, \"mutationCb\");\n __publicField$1(this, \"blockClass\");\n __publicField$1(this, \"blockSelector\");\n __publicField$1(this, \"maskTextClass\");\n __publicField$1(this, \"maskTextSelector\");\n __publicField$1(this, \"inlineStylesheet\");\n __publicField$1(this, \"maskInputOptions\");\n __publicField$1(this, \"maskTextFn\");\n __publicField$1(this, \"maskInputFn\");\n __publicField$1(this, \"keepIframeSrcFn\");\n __publicField$1(this, \"recordCanvas\");\n __publicField$1(this, \"inlineImages\");\n __publicField$1(this, \"slimDOMOptions\");\n __publicField$1(this, \"dataURLOptions\");\n __publicField$1(this, \"doc\");\n __publicField$1(this, \"mirror\");\n __publicField$1(this, \"iframeManager\");\n __publicField$1(this, \"stylesheetManager\");\n __publicField$1(this, \"shadowDomManager\");\n __publicField$1(this, \"canvasManager\");\n __publicField$1(this, \"processedNodeManager\");\n __publicField$1(this, \"unattachedDoc\");\n __publicField$1(this, \"processMutations\", function(mutations) {\n mutations.forEach(_this.processMutation);\n _this.emit();\n });\n __publicField$1(this, \"emit\", function() {\n if (_this.frozen || _this.locked) {\n return;\n }\n var adds = [];\n var addedIds = /* @__PURE__ */ new Set();\n var addList = new DoubleLinkedList();\n var getNextId = function(n2) {\n var ns = n2;\n var nextId = IGNORED_NODE;\n while(nextId === IGNORED_NODE){\n ns = ns && ns.nextSibling;\n nextId = ns && _this.mirror.getId(ns);\n }\n return nextId;\n };\n var pushAdd = function(n2) {\n var parent = index.parentNode(n2);\n if (!parent || !inDom(n2)) {\n return;\n }\n var cssCaptured = false;\n if (n2.nodeType === Node.TEXT_NODE) {\n var parentTag = parent.tagName;\n if (parentTag === \"TEXTAREA\") {\n return;\n } else if (parentTag === \"STYLE\" && _this.addedSet.has(parent)) {\n cssCaptured = true;\n }\n }\n var parentId = isShadowRoot(parent) ? _this.mirror.getId(getShadowHost(n2)) : _this.mirror.getId(parent);\n var nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n var sn = serializeNodeWithId(n2, {\n doc: _this.doc,\n mirror: _this.mirror,\n blockClass: _this.blockClass,\n blockSelector: _this.blockSelector,\n maskTextClass: _this.maskTextClass,\n maskTextSelector: _this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: _this.inlineStylesheet,\n maskInputOptions: _this.maskInputOptions,\n maskTextFn: _this.maskTextFn,\n maskInputFn: _this.maskInputFn,\n slimDOMOptions: _this.slimDOMOptions,\n dataURLOptions: _this.dataURLOptions,\n recordCanvas: _this.recordCanvas,\n inlineImages: _this.inlineImages,\n onSerialize: function(currentN) {\n if (isSerializedIframe(currentN, _this.mirror)) {\n _this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, _this.mirror)) {\n _this.stylesheetManager.trackLinkElement(currentN);\n }\n if (hasShadowRoot(n2)) {\n _this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), _this.doc);\n }\n },\n onIframeLoad: function(iframe, childSn) {\n _this.iframeManager.attachIframe(iframe, childSn);\n _this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: function(link, childSn) {\n _this.stylesheetManager.attachLinkElement(link, childSn);\n },\n cssCaptured: cssCaptured\n });\n if (sn) {\n adds.push({\n parentId: parentId,\n nextId: nextId,\n node: sn\n });\n addedIds.add(sn.id);\n }\n };\n while(_this.mapRemoves.length){\n _this.mirror.removeNodeFromMap(_this.mapRemoves.shift());\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(_this.movedSet), _step; !(_step = _iterator()).done;){\n var n2 = _step.value;\n if (isParentRemoved(_this.removesSubTreeCache, n2, _this.mirror) && !_this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for(var _iterator1 = _create_for_of_iterator_helper_loose(_this.addedSet), _step1; !(_step1 = _iterator1()).done;){\n var n21 = _step1.value;\n if (!isAncestorInSet(_this.droppedSet, n21) && !isParentRemoved(_this.removesSubTreeCache, n21, _this.mirror)) {\n pushAdd(n21);\n } else if (isAncestorInSet(_this.movedSet, n21)) {\n pushAdd(n21);\n } else {\n _this.droppedSet.add(n21);\n }\n }\n var candidate = null;\n while(addList.length){\n var node2 = null;\n if (candidate) {\n var parentId = _this.mirror.getId(index.parentNode(candidate.value));\n var nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n var tailNode = addList.tail;\n while(tailNode){\n var _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n var parentId1 = _this.mirror.getId(index.parentNode(_node.value));\n var nextId1 = getNextId(_node.value);\n if (nextId1 === -1) continue;\n else if (parentId1 !== -1) {\n node2 = _node;\n break;\n } else {\n var unhandledNode = _node.value;\n var parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n var shadowHost = index.host(parent);\n var parentId2 = _this.mirror.getId(shadowHost);\n if (parentId2 !== -1) {\n node2 = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node2) {\n while(addList.head){\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node2.previous;\n addList.removeNode(node2.value);\n pushAdd(node2.value);\n }\n var payload = {\n texts: _this.texts.map(function(text) {\n var n2 = text.node;\n var parent = index.parentNode(n2);\n if (parent && parent.tagName === \"TEXTAREA\") {\n _this.genTextAreaValueMutation(parent);\n }\n return {\n id: _this.mirror.getId(n2),\n value: text.value\n };\n }).filter(function(text) {\n return !addedIds.has(text.id);\n }).filter(function(text) {\n return _this.mirror.has(text.id);\n }),\n attributes: _this.attributes.map(function(attribute) {\n var attributes = attribute.attributes;\n if (typeof attributes.style === \"string\") {\n var diffAsStr = JSON.stringify(attribute.styleDiff);\n var unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: _this.mirror.getId(attribute.node),\n attributes: attributes\n };\n }).filter(function(attribute) {\n return !addedIds.has(attribute.id);\n }).filter(function(attribute) {\n return _this.mirror.has(attribute.id);\n }),\n removes: _this.removes,\n adds: adds\n };\n if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n return;\n }\n _this.texts = [];\n _this.attributes = [];\n _this.attributeMap = /* @__PURE__ */ new WeakMap();\n _this.removes = [];\n _this.addedSet = /* @__PURE__ */ new Set();\n _this.movedSet = /* @__PURE__ */ new Set();\n _this.droppedSet = /* @__PURE__ */ new Set();\n _this.removesSubTreeCache = /* @__PURE__ */ new Set();\n _this.movedMap = {};\n _this.mutationCb(payload);\n });\n __publicField$1(this, \"genTextAreaValueMutation\", function(textarea) {\n var item = _this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n _this.attributes.push(item);\n _this.attributeMap.set(textarea, item);\n }\n var value = Array.from(index.childNodes(textarea), function(cn) {\n return index.textContent(cn) || \"\";\n }).join(\"\");\n item.attributes.value = maskInputValue({\n element: textarea,\n maskInputOptions: _this.maskInputOptions,\n tagName: textarea.tagName,\n type: getInputType(textarea),\n value: value,\n maskInputFn: _this.maskInputFn\n });\n });\n __publicField$1(this, \"processMutation\", function(m) {\n if (isIgnored(m.target, _this.mirror, _this.slimDOMOptions)) {\n return;\n }\n switch(m.type){\n case \"characterData\":\n {\n var value = index.textContent(m.target);\n if (!isBlocked(m.target, _this.blockClass, _this.blockSelector, false) && value !== m.oldValue) {\n _this.texts.push({\n value: needMaskingText(m.target, _this.maskTextClass, _this.maskTextSelector, true) && value ? _this.maskTextFn ? _this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n node: m.target\n });\n }\n break;\n }\n case \"attributes\":\n {\n var target = m.target;\n var attributeName = m.attributeName;\n var value1 = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n var type = getInputType(target);\n value1 = maskInputValue({\n element: target,\n maskInputOptions: _this.maskInputOptions,\n tagName: target.tagName,\n type: type,\n value: value1,\n maskInputFn: _this.maskInputFn\n });\n }\n if (isBlocked(m.target, _this.blockClass, _this.blockSelector, false) || value1 === m.oldValue) {\n return;\n }\n var item = _this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !_this.keepIframeSrcFn(value1)) {\n if (!target.contentDocument) {\n attributeName = \"rr_src\";\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n _this.attributes.push(item);\n _this.attributeMap.set(m.target, item);\n }\n if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n target.setAttribute(\"data-rr-is-password\", \"true\");\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(_this.doc, toLowerCase(target.tagName), toLowerCase(attributeName), value1);\n if (attributeName === \"style\") {\n if (!_this.unattachedDoc) {\n try {\n _this.unattachedDoc = document.implementation.createHTMLDocument();\n } catch (e2) {\n _this.unattachedDoc = _this.doc;\n }\n }\n var old = _this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(Array.from(target.style)), _step; !(_step = _iterator()).done;){\n var pname = _step.value;\n var newValue = target.style.getPropertyValue(pname);\n var newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === \"\") {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [\n newValue,\n newPriority\n ];\n }\n } else {\n item._unchangedStyles[pname] = [\n newValue,\n newPriority\n ];\n }\n }\n for(var _iterator1 = _create_for_of_iterator_helper_loose(Array.from(old.style)), _step1; !(_step1 = _iterator1()).done;){\n var pname1 = _step1.value;\n if (target.style.getPropertyValue(pname1) === \"\") {\n item.styleDiff[pname1] = false;\n }\n }\n } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n if (target.matches(\"dialog:modal\")) {\n item.attributes[\"rr_open_mode\"] = \"modal\";\n } else {\n item.attributes[\"rr_open_mode\"] = \"non-modal\";\n }\n }\n }\n break;\n }\n case \"childList\":\n {\n if (isBlocked(m.target, _this.blockClass, _this.blockSelector, true)) return;\n if (m.target.tagName === \"TEXTAREA\") {\n _this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach(function(n2) {\n return _this.genAdds(n2, m.target);\n });\n m.removedNodes.forEach(function(n2) {\n var nodeId = _this.mirror.getId(n2);\n var parentId = isShadowRoot(m.target) ? _this.mirror.getId(index.host(m.target)) : _this.mirror.getId(m.target);\n if (isBlocked(m.target, _this.blockClass, _this.blockSelector, false) || isIgnored(n2, _this.mirror, _this.slimDOMOptions) || !isSerialized(n2, _this.mirror)) {\n return;\n }\n if (_this.addedSet.has(n2)) {\n deepDelete(_this.addedSet, n2);\n _this.droppedSet.add(n2);\n } else if (_this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, _this.mirror)) ;\n else if (_this.movedSet.has(n2) && _this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(_this.movedSet, n2);\n } else {\n _this.removes.push({\n parentId: parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n });\n processRemoves(n2, _this.removesSubTreeCache);\n }\n _this.mapRemoves.push(n2);\n });\n break;\n }\n }\n });\n /**\n * Make sure you check if `n`'s parent is blocked before calling this function\n * */ __publicField$1(this, \"genAdds\", function(n2, target) {\n if (_this.processedNodeManager.inOtherBuffer(n2, _this)) return;\n if (_this.addedSet.has(n2) || _this.movedSet.has(n2)) return;\n if (_this.mirror.hasNode(n2)) {\n if (isIgnored(n2, _this.mirror, _this.slimDOMOptions)) {\n return;\n }\n _this.movedSet.add(n2);\n var targetId = null;\n if (target && _this.mirror.hasNode(target)) {\n targetId = _this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n _this.movedMap[moveKey(_this.mirror.getId(n2), targetId)] = true;\n }\n } else {\n _this.addedSet.add(n2);\n _this.droppedSet.delete(n2);\n }\n if (!isBlocked(n2, _this.blockClass, _this.blockSelector, false)) {\n index.childNodes(n2).forEach(function(childN) {\n return _this.genAdds(childN);\n });\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach(function(childN) {\n _this.processedNodeManager.add(childN, _this);\n _this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n var _proto = MutationBuffer.prototype;\n _proto.init = function init(options) {\n var _this = this;\n [\n \"mutationCb\",\n \"blockClass\",\n \"blockSelector\",\n \"maskTextClass\",\n \"maskTextSelector\",\n \"inlineStylesheet\",\n \"maskInputOptions\",\n \"maskTextFn\",\n \"maskInputFn\",\n \"keepIframeSrcFn\",\n \"recordCanvas\",\n \"inlineImages\",\n \"slimDOMOptions\",\n \"dataURLOptions\",\n \"doc\",\n \"mirror\",\n \"iframeManager\",\n \"stylesheetManager\",\n \"shadowDomManager\",\n \"canvasManager\",\n \"processedNodeManager\"\n ].forEach(function(key) {\n _this[key] = options[key];\n });\n };\n _proto.freeze = function freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n };\n _proto.unfreeze = function unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n };\n _proto.isFrozen = function isFrozen() {\n return this.frozen;\n };\n _proto.lock = function lock() {\n this.locked = true;\n this.canvasManager.lock();\n };\n _proto.unlock = function unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n };\n _proto.reset = function reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n };\n return MutationBuffer;\n}();\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach(function(childN) {\n return deepDelete(addsSet, childN);\n });\n}\nfunction processRemoves(n2, cache) {\n var queue = [\n n2\n ];\n while(queue.length){\n var next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach(function(n22) {\n return queue.push(n22);\n });\n }\n return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n var node2 = index.parentNode(n2);\n if (!node2) return false;\n return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n var parent = index.parentNode(n2);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\nvar errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nvar callbackWrapper = function(cb) {\n if (!errorHandler) {\n return cb;\n }\n var rrwebWrapped = function() {\n for(var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++){\n rest[_key] = arguments[_key];\n }\n try {\n return cb.apply(void 0, [].concat(rest));\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nvar mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n var path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if (\"path\" in event && event.path.length) {\n return event.path[0];\n }\n } catch (e) {}\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n var mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n var observer = new (mutationObserverCtor())(callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer)));\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction initMoveObserver(param) {\n var mousemoveCb = param.mousemoveCb, sampling = param.sampling, doc = param.doc, mirror2 = param.mirror;\n if (sampling.mousemove === false) {\n return function() {};\n }\n var threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n var callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n var positions = [];\n var timeBaseline;\n var wrappedCb = throttle(callbackWrapper(function(source) {\n var totalOffset = Date.now() - timeBaseline;\n mousemoveCb(positions.map(function(p) {\n p.timeOffset -= totalOffset;\n return p;\n }), source);\n positions = [];\n timeBaseline = null;\n }), callbackThreshold);\n var updatePosition = callbackWrapper(throttle(callbackWrapper(function(evt) {\n var target = getEventTarget(evt);\n var _ref = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt, clientX = _ref.clientX, clientY = _ref.clientY;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror2.getId(target),\n timeOffset: nowTimestamp() - timeBaseline\n });\n wrappedCb(typeof DragEvent !== \"undefined\" && _instanceof(evt, DragEvent) ? IncrementalSource.Drag : _instanceof(evt, MouseEvent) ? IncrementalSource.MouseMove : IncrementalSource.TouchMove);\n }), threshold, {\n trailing: false\n }));\n var handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction initMouseInteractionObserver(param) {\n var mouseInteractionCb = param.mouseInteractionCb, doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, sampling = param.sampling;\n if (sampling.mouseInteraction === false) {\n return function() {};\n }\n var disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n var handlers = [];\n var currentPointerType = null;\n var getHandler = function(eventKey) {\n return function(event) {\n var target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n var pointerType = null;\n var thisEventKey = eventKey;\n if (\"pointerType\" in event) {\n switch(event.pointerType){\n case \"mouse\":\n pointerType = PointerTypes.Mouse;\n break;\n case \"touch\":\n pointerType = PointerTypes.Touch;\n break;\n case \"pen\":\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = \"TouchStart\";\n } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = \"TouchEnd\";\n }\n } else if (pointerType === PointerTypes.Pen) ;\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n var e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n var id = mirror2.getId(target);\n var clientX = e2.clientX, clientY = e2.clientY;\n callbackWrapper(mouseInteractionCb)(_extends({\n type: MouseInteractions[thisEventKey],\n id: id,\n x: clientX,\n y: clientY\n }, pointerType !== null && {\n pointerType: pointerType\n }));\n };\n };\n Object.keys(MouseInteractions).filter(function(key) {\n return Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false;\n }).forEach(function(eventKey) {\n var eventName = toLowerCase(eventKey);\n var handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch(MouseInteractions[eventKey]){\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\"mouse\", \"pointer\");\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction initScrollObserver(param) {\n var scrollCb = param.scrollCb, doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, sampling = param.sampling;\n var updatePosition = callbackWrapper(throttle(callbackWrapper(function(evt) {\n var target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n var id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n var scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id: id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id: id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }), sampling.scroll || 100));\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver(param, param1) {\n var viewportResizeCb = param.viewportResizeCb;\n var win = param1.win;\n var lastH = -1;\n var lastW = -1;\n var updateDimension = callbackWrapper(throttle(callbackWrapper(function() {\n var height = getWindowHeight();\n var width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height)\n });\n lastH = height;\n lastW = width;\n }\n }), 200));\n return on(\"resize\", updateDimension, win);\n}\nvar INPUT_TAGS = [\n \"INPUT\",\n \"TEXTAREA\",\n \"SELECT\"\n];\nvar lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver(param) {\n var inputCb = param.inputCb, doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, ignoreClass = param.ignoreClass, ignoreSelector = param.ignoreSelector, maskInputOptions = param.maskInputOptions, maskInputFn = param.maskInputFn, sampling = param.sampling, userTriggeredOnInput = param.userTriggeredOnInput;\n function eventHandler(event) {\n var target = getEventTarget(event);\n var userTriggered = event.isTrusted;\n var tagName = target && target.tagName;\n if (target && tagName === \"OPTION\") {\n target = index.parentElement(target);\n }\n if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n return;\n }\n var text = target.value;\n var isChecked = false;\n var type = getInputType(target) || \"\";\n if (type === \"radio\" || type === \"checkbox\") {\n isChecked = target.checked;\n } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n text = maskInputValue({\n element: target,\n maskInputOptions: maskInputOptions,\n tagName: tagName,\n type: type,\n value: text,\n maskInputFn: maskInputFn\n });\n }\n cbWithDedup(target, userTriggeredOnInput ? {\n text: text,\n isChecked: isChecked,\n userTriggered: userTriggered\n } : {\n text: text,\n isChecked: isChecked\n });\n var name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]').forEach(function(el) {\n if (el !== target) {\n var text2 = el.value;\n cbWithDedup(el, userTriggeredOnInput ? {\n text: text2,\n isChecked: !isChecked,\n userTriggered: false\n } : {\n text: text2,\n isChecked: !isChecked\n });\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n var lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n var id = mirror2.getId(target);\n callbackWrapper(inputCb)(_extends({}, v2, {\n id: id\n }));\n }\n }\n var events = sampling.input === \"last\" ? [\n \"change\"\n ] : [\n \"input\",\n \"change\"\n ];\n var handlers = events.map(function(eventName) {\n return on(eventName, callbackWrapper(eventHandler), doc);\n });\n var currentWindow = doc.defaultView;\n if (!currentWindow) {\n return function() {\n handlers.forEach(function(h) {\n return h();\n });\n };\n }\n var propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, \"value\");\n var hookProperties = [\n [\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n ],\n [\n currentWindow.HTMLInputElement.prototype,\n \"checked\"\n ],\n [\n currentWindow.HTMLSelectElement.prototype,\n \"value\"\n ],\n [\n currentWindow.HTMLTextAreaElement.prototype,\n \"value\"\n ],\n // Some UI library use selectedIndex to set select value\n [\n currentWindow.HTMLSelectElement.prototype,\n \"selectedIndex\"\n ],\n [\n currentWindow.HTMLOptionElement.prototype,\n \"selected\"\n ]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n var _handlers;\n (_handlers = handlers).push.apply(_handlers, [].concat(hookProperties.map(function(p) {\n return hookSetter(p[0], p[1], {\n set: function set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n });\n }\n }, false, currentWindow);\n })));\n }\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n var positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && _instanceof(childRule.parentRule, CSSGroupingRule) || hasNestedCSSRule(\"CSSMediaRule\") && _instanceof(childRule.parentRule, CSSMediaRule) || hasNestedCSSRule(\"CSSSupportsRule\") && _instanceof(childRule.parentRule, CSSSupportsRule) || hasNestedCSSRule(\"CSSConditionRule\") && _instanceof(childRule.parentRule, CSSConditionRule)) {\n var rules2 = Array.from(childRule.parentRule.cssRules);\n var index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n var rules21 = Array.from(childRule.parentStyleSheet.cssRules);\n var index21 = rules21.indexOf(childRule);\n pos.unshift(index21);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n var id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId: styleId,\n id: id\n };\n}\nfunction initStyleSheetObserver(param, param1) {\n var styleSheetRuleCb = param.styleSheetRuleCb, mirror2 = param.mirror, stylesheetManager = param.stylesheetManager;\n var win = param1.win;\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return function() {};\n }\n var insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var rule2 = argumentsList[0], index2 = argumentsList[1];\n var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n adds: [\n {\n rule: rule2,\n index: index2\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2) {\n if (index2 === void 0) index2 = this.cssRules.length;\n var rule2 = selector + \" { \" + styleBlock + \" }\";\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [\n rule2,\n index2\n ]);\n };\n var deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var index2 = argumentsList[0];\n var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n removes: [\n {\n index: index2\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [\n index2\n ]);\n };\n var replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var text = argumentsList[0];\n var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n }\n var replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var text = argumentsList[0];\n var _getIdAndStyleId = getIdAndStyleId(thisArg, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n }\n var supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n var unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(function(param) {\n var typeKey = param[0], type = param[1];\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule\n };\n type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var rule2 = argumentsList[0], index2 = argumentsList[1];\n var _getIdAndStyleId = getIdAndStyleId(thisArg.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n adds: [\n {\n rule: rule2,\n index: [].concat(getNestedCSSRulePositions(thisArg), [\n index2 || 0\n ])\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var index2 = argumentsList[0];\n var _getIdAndStyleId = getIdAndStyleId(thisArg.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id: id,\n styleId: styleId,\n removes: [\n {\n index: [].concat(getNestedCSSRulePositions(thisArg), [\n index2\n ])\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n });\n return callbackWrapper(function() {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(function(param) {\n var typeKey = param[0], type = param[1];\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver(param, host2) {\n var mirror2 = param.mirror, stylesheetManager = param.stylesheetManager;\n var _a2, _b, _c;\n var hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n var patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n var originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(patchTarget == null ? void 0 : patchTarget.prototype, \"adoptedStyleSheets\") : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor) return function() {};\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get: function get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set: function set(sheets) {\n var _a3;\n var result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e2) {}\n }\n return result2;\n }\n });\n return callbackWrapper(function() {\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set\n });\n });\n}\nfunction initStyleDeclarationObserver(param, param1) {\n var styleDeclarationCb = param.styleDeclarationCb, mirror2 = param.mirror, ignoreCSSAttributes = param.ignoreCSSAttributes, stylesheetManager = param.stylesheetManager;\n var win = param1.win;\n var setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var _a2;\n var property = argumentsList[0], value = argumentsList[1], priority = argumentsList[2];\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [\n property,\n value,\n priority\n ]);\n }\n var _getIdAndStyleId = getIdAndStyleId((_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id: id,\n styleId: styleId,\n set: {\n property: property,\n value: value,\n priority: priority\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n var removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(function(target, thisArg, argumentsList) {\n var _a2;\n var property = argumentsList[0];\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [\n property\n ]);\n }\n var _getIdAndStyleId = getIdAndStyleId((_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet, mirror2, stylesheetManager.styleMirror), id = _getIdAndStyleId.id, styleId = _getIdAndStyleId.styleId;\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id: id,\n styleId: styleId,\n remove: {\n property: property\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n })\n });\n return callbackWrapper(function() {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver(param) {\n var mediaInteractionCb = param.mediaInteractionCb, blockClass = param.blockClass, blockSelector = param.blockSelector, mirror2 = param.mirror, sampling = param.sampling, doc = param.doc;\n var handler = callbackWrapper(function(type) {\n return throttle(callbackWrapper(function(event) {\n var target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n var currentTime = target.currentTime, volume = target.volume, muted = target.muted, playbackRate = target.playbackRate, loop = target.loop;\n mediaInteractionCb({\n type: type,\n id: mirror2.getId(target),\n currentTime: currentTime,\n volume: volume,\n muted: muted,\n playbackRate: playbackRate,\n loop: loop\n });\n }), sampling.media || 500);\n });\n var handlers = [\n on(\"play\", handler(MediaInteractions.Play), doc),\n on(\"pause\", handler(MediaInteractions.Pause), doc),\n on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n ];\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction initFontObserver(param) {\n var fontCb = param.fontCb, doc = param.doc;\n var win = doc.defaultView;\n if (!win) {\n return function() {};\n }\n var handlers = [];\n var fontMap = /* @__PURE__ */ new WeakMap();\n var originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n var fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family: family,\n buffer: typeof source !== \"string\",\n descriptors: descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n var restoreHandler = patch$2(doc.fonts, \"add\", function(original) {\n return function(fontFace) {\n setTimeout(callbackWrapper(function() {\n var p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }), 0);\n return original.apply(this, [\n fontFace\n ]);\n };\n });\n handlers.push(function() {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(function() {\n handlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction initSelectionObserver(param) {\n var doc = param.doc, mirror2 = param.mirror, blockClass = param.blockClass, blockSelector = param.blockSelector, selectionCb = param.selectionCb;\n var collapsed = true;\n var updateSelection = callbackWrapper(function() {\n var selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n var ranges = [];\n var count = selection.rangeCount || 0;\n for(var i2 = 0; i2 < count; i2++){\n var range = selection.getRangeAt(i2);\n var startContainer = range.startContainer, startOffset = range.startOffset, endContainer = range.endContainer, endOffset = range.endOffset;\n var blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n if (blocked) continue;\n ranges.push({\n start: mirror2.getId(startContainer),\n startOffset: startOffset,\n end: mirror2.getId(endContainer),\n endOffset: endOffset\n });\n }\n selectionCb({\n ranges: ranges\n });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver(param) {\n var doc = param.doc, customElementCb = param.customElementCb;\n var win = doc.defaultView;\n if (!win || !win.customElements) return function() {};\n var restoreHandler = patch$2(win.customElements, \"define\", function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name: name\n }\n });\n } catch (e2) {\n console.warn(\"Custom element callback failed for \" + name);\n }\n return original.apply(this, [\n name,\n constructor,\n options\n ]);\n };\n });\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n var mutationCb = o2.mutationCb, mousemoveCb = o2.mousemoveCb, mouseInteractionCb = o2.mouseInteractionCb, scrollCb = o2.scrollCb, viewportResizeCb = o2.viewportResizeCb, inputCb = o2.inputCb, mediaInteractionCb = o2.mediaInteractionCb, styleSheetRuleCb = o2.styleSheetRuleCb, styleDeclarationCb = o2.styleDeclarationCb, canvasMutationCb = o2.canvasMutationCb, fontCb = o2.fontCb, selectionCb = o2.selectionCb, customElementCb = o2.customElementCb;\n o2.mutationCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.mutation) {\n var _hooks;\n (_hooks = hooks).mutation.apply(_hooks, [].concat(p));\n }\n mutationCb.apply(void 0, [].concat(p));\n };\n o2.mousemoveCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.mousemove) {\n var _hooks;\n (_hooks = hooks).mousemove.apply(_hooks, [].concat(p));\n }\n mousemoveCb.apply(void 0, [].concat(p));\n };\n o2.mouseInteractionCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.mouseInteraction) {\n var _hooks;\n (_hooks = hooks).mouseInteraction.apply(_hooks, [].concat(p));\n }\n mouseInteractionCb.apply(void 0, [].concat(p));\n };\n o2.scrollCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.scroll) {\n var _hooks;\n (_hooks = hooks).scroll.apply(_hooks, [].concat(p));\n }\n scrollCb.apply(void 0, [].concat(p));\n };\n o2.viewportResizeCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.viewportResize) {\n var _hooks;\n (_hooks = hooks).viewportResize.apply(_hooks, [].concat(p));\n }\n viewportResizeCb.apply(void 0, [].concat(p));\n };\n o2.inputCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.input) {\n var _hooks;\n (_hooks = hooks).input.apply(_hooks, [].concat(p));\n }\n inputCb.apply(void 0, [].concat(p));\n };\n o2.mediaInteractionCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.mediaInteaction) {\n var _hooks;\n (_hooks = hooks).mediaInteaction.apply(_hooks, [].concat(p));\n }\n mediaInteractionCb.apply(void 0, [].concat(p));\n };\n o2.styleSheetRuleCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.styleSheetRule) {\n var _hooks;\n (_hooks = hooks).styleSheetRule.apply(_hooks, [].concat(p));\n }\n styleSheetRuleCb.apply(void 0, [].concat(p));\n };\n o2.styleDeclarationCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.styleDeclaration) {\n var _hooks;\n (_hooks = hooks).styleDeclaration.apply(_hooks, [].concat(p));\n }\n styleDeclarationCb.apply(void 0, [].concat(p));\n };\n o2.canvasMutationCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.canvasMutation) {\n var _hooks;\n (_hooks = hooks).canvasMutation.apply(_hooks, [].concat(p));\n }\n canvasMutationCb.apply(void 0, [].concat(p));\n };\n o2.fontCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.font) {\n var _hooks;\n (_hooks = hooks).font.apply(_hooks, [].concat(p));\n }\n fontCb.apply(void 0, [].concat(p));\n };\n o2.selectionCb = function() {\n for(var _len = arguments.length, p = new Array(_len), _key = 0; _key < _len; _key++){\n p[_key] = arguments[_key];\n }\n if (hooks.selection) {\n var _hooks;\n (_hooks = hooks).selection.apply(_hooks, [].concat(p));\n }\n selectionCb.apply(void 0, [].concat(p));\n };\n o2.customElementCb = function() {\n for(var _len = arguments.length, c2 = new Array(_len), _key = 0; _key < _len; _key++){\n c2[_key] = arguments[_key];\n }\n if (hooks.customElement) {\n var _hooks;\n (_hooks = hooks).customElement.apply(_hooks, [].concat(c2));\n }\n customElementCb.apply(void 0, [].concat(c2));\n };\n}\nfunction initObservers(o2, hooks) {\n if (hooks === void 0) hooks = {};\n var currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return function() {};\n }\n mergeHooks(o2, hooks);\n var mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n var mousemoveHandler = initMoveObserver(o2);\n var mouseInteractionHandler = initMouseInteractionObserver(o2);\n var scrollHandler = initScrollObserver(o2);\n var viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n var inputHandler = initInputObserver(o2);\n var mediaInteractionHandler = initMediaInteractionObserver(o2);\n var styleSheetObserver = function() {};\n var adoptedStyleSheetObserver = function() {};\n var styleDeclarationObserver = function() {};\n var fontObserver = function() {};\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, {\n win: currentWindow\n });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n win: currentWindow\n });\n if (o2.collectFonts) {\n fontObserver = initFontObserver(o2);\n }\n }\n var selectionObserver = initSelectionObserver(o2);\n var customElementObserver = initCustomElementObserver(o2);\n var pluginHandlers = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(o2.plugins), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\n pluginHandlers.push(plugin3.observer(plugin3.callback, currentWindow, plugin3.options));\n }\n return callbackWrapper(function() {\n mutationBuffers.forEach(function(b) {\n return b.reset();\n });\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach(function(h) {\n return h();\n });\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype);\n}\nvar CrossOriginIframeMirror = /*#__PURE__*/ function() {\n function CrossOriginIframeMirror(generateIdFn) {\n __publicField$1(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n var _proto = CrossOriginIframeMirror.prototype;\n _proto.getId = function getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n var idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n var remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n var id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n };\n _proto.getIds = function getIds(iframe, remoteId) {\n var _this = this;\n var idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n var remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(function(id) {\n return _this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap);\n });\n };\n _proto.getRemoteId = function getRemoteId(iframe, id, map) {\n var remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n var remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n };\n _proto.getRemoteIds = function getRemoteIds(iframe, ids) {\n var _this = this;\n var remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map(function(id) {\n return _this.getRemoteId(iframe, id, remoteIdToIdMap);\n });\n };\n _proto.reset = function reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n };\n _proto.getIdToRemoteIdMap = function getIdToRemoteIdMap(iframe) {\n var idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = /* @__PURE__ */ new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n };\n _proto.getRemoteIdToIdMap = function getRemoteIdToIdMap(iframe) {\n var remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = /* @__PURE__ */ new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n };\n return CrossOriginIframeMirror;\n}();\nvar IframeManager = /*#__PURE__*/ function() {\n function IframeManager(options) {\n __publicField$1(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n __publicField$1(this, \"crossOriginIframeStyleMirror\");\n __publicField$1(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"mirror\");\n __publicField$1(this, \"mutationCb\");\n __publicField$1(this, \"wrappedEmit\");\n __publicField$1(this, \"loadListener\");\n __publicField$1(this, \"stylesheetManager\");\n __publicField$1(this, \"recordCrossOriginIframes\");\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n var _proto = IframeManager.prototype;\n _proto.addIframe = function addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow) this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n };\n _proto.addLoadListener = function addLoadListener(cb) {\n this.loadListener = cb;\n };\n _proto.attachIframe = function attachIframe(iframeEl, childSn) {\n var _a2, _b;\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n });\n if (this.recordCrossOriginIframes) (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\"message\", this.handleMessage.bind(this));\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0) this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\n };\n _proto.handleMessage = function handleMessage(message) {\n var crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin) return;\n var iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n var iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n var transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event);\n if (transformedEvent) this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout);\n };\n _proto.transformCrossOriginEvent = function transformCrossOriginEvent(iframeEl, e2) {\n var _this = this;\n var _a2;\n switch(e2.type){\n case EventType.FullSnapshot:\n {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n var rootId = e2.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e2.data.node, rootId);\n return {\n timestamp: e2.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e2.data.node\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n }\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded:\n {\n return false;\n }\n case EventType.Plugin:\n {\n return e2;\n }\n case EventType.Custom:\n {\n this.replaceIds(e2.data.payload, iframeEl, [\n \"id\",\n \"parentId\",\n \"previousId\",\n \"nextId\"\n ]);\n return e2;\n }\n case EventType.IncrementalSnapshot:\n {\n switch(e2.data.source){\n case IncrementalSource.Mutation:\n {\n e2.data.adds.forEach(function(n2) {\n _this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n _this.replaceIdOnNode(n2.node, iframeEl);\n var rootId = _this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && _this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach(function(n2) {\n _this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"id\"\n ]);\n });\n e2.data.attributes.forEach(function(n2) {\n _this.replaceIds(n2, iframeEl, [\n \"id\"\n ]);\n });\n e2.data.texts.forEach(function(n2) {\n _this.replaceIds(n2, iframeEl, [\n \"id\"\n ]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove:\n {\n e2.data.positions.forEach(function(p) {\n _this.replaceIds(p, iframeEl, [\n \"id\"\n ]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize:\n {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input:\n {\n this.replaceIds(e2.data, iframeEl, [\n \"id\"\n ]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration:\n {\n this.replaceIds(e2.data, iframeEl, [\n \"id\"\n ]);\n this.replaceStyleIds(e2.data, iframeEl, [\n \"styleId\"\n ]);\n return e2;\n }\n case IncrementalSource.Font:\n {\n return e2;\n }\n case IncrementalSource.Selection:\n {\n e2.data.ranges.forEach(function(range) {\n _this.replaceIds(range, iframeEl, [\n \"start\",\n \"end\"\n ]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet:\n {\n this.replaceIds(e2.data, iframeEl, [\n \"id\"\n ]);\n this.replaceStyleIds(e2.data, iframeEl, [\n \"styleIds\"\n ]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach(function(style) {\n _this.replaceStyleIds(style, iframeEl, [\n \"styleId\"\n ]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n };\n _proto.replace = function replace(iframeMirror, obj, iframeEl, keys) {\n for(var _iterator = _create_for_of_iterator_helper_loose(keys), _step; !(_step = _iterator()).done;){\n var key = _step.value;\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n };\n _proto.replaceIds = function replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n };\n _proto.replaceStyleIds = function replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n };\n _proto.replaceIdOnNode = function replaceIdOnNode(node2, iframeEl) {\n var _this = this;\n this.replaceIds(node2, iframeEl, [\n \"id\",\n \"rootId\"\n ]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach(function(child) {\n _this.replaceIdOnNode(child, iframeEl);\n });\n }\n };\n _proto.patchRootIdOnNode = function patchRootIdOnNode(node2, rootId) {\n var _this = this;\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach(function(child) {\n _this.patchRootIdOnNode(child, rootId);\n });\n }\n };\n return IframeManager;\n}();\nvar ShadowDomManager = /*#__PURE__*/ function() {\n function ShadowDomManager(options) {\n __publicField$1(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n __publicField$1(this, \"mutationCb\");\n __publicField$1(this, \"scrollCb\");\n __publicField$1(this, \"bypassOptions\");\n __publicField$1(this, \"mirror\");\n __publicField$1(this, \"restoreHandlers\", []);\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n var _proto = ShadowDomManager.prototype;\n _proto.init = function init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n };\n _proto.addShadowRoot = function addShadowRoot(shadowRoot2, doc) {\n var _this = this;\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n var observer = initMutationObserver(_extends({}, this.bypassOptions, {\n doc: doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n }), shadowRoot2);\n this.restoreHandlers.push(function() {\n return observer.disconnect();\n });\n this.restoreHandlers.push(initScrollObserver(_extends({}, this.bypassOptions, {\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot2,\n mirror: this.mirror\n })));\n setTimeout(function() {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0) _this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot2.adoptedStyleSheets, _this.mirror.getId(index.host(shadowRoot2)));\n _this.restoreHandlers.push(initAdoptedStyleSheetObserver({\n mirror: _this.mirror,\n stylesheetManager: _this.bypassOptions.stylesheetManager\n }, shadowRoot2));\n }, 0);\n };\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */ _proto.observeAttachShadow = function observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument);\n };\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */ _proto.patchAttachShadow = function patchAttachShadow(element, doc) {\n var manager = this;\n this.restoreHandlers.push(patch$2(element.prototype, \"attachShadow\", function(original) {\n return function(option) {\n var sRoot = original.call(this, option);\n var shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this)) manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }));\n };\n _proto.reset = function reset() {\n this.restoreHandlers.forEach(function(handler) {\n try {\n handler();\n } catch (e2) {}\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n };\n return ShadowDomManager;\n}();\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor(var i$1 = 0; i$1 < chars.length; i$1++){\n lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function encode(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for(i2 = 0; i2 < len; i2 += 3){\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n};\nvar canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n var contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nvar saveWebGLVar = function(value, win, ctx) {\n if (!value || !(isInstanceOfWebGLObject(value, win) || (typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\")) return;\n var name = value.constructor.name;\n var list2 = variableListFor$1(ctx, name);\n var index2 = list2.indexOf(value);\n if (index2 === -1) {\n index2 = list2.length;\n list2.push(value);\n }\n return index2;\n};\nfunction serializeArg(value, win, ctx) {\n if (_instanceof(value, Array)) {\n return value.map(function(arg) {\n return serializeArg(arg, win, ctx);\n });\n } else if (value === null) {\n return value;\n } else if (_instanceof(value, Float32Array) || _instanceof(value, Float64Array) || _instanceof(value, Int32Array) || _instanceof(value, Uint32Array) || _instanceof(value, Uint8Array) || _instanceof(value, Uint16Array) || _instanceof(value, Int16Array) || _instanceof(value, Int8Array) || _instanceof(value, Uint8ClampedArray)) {\n var name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n Object.values(value)\n ]\n };\n } else if (// SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n _instanceof(value, ArrayBuffer)) {\n var name1 = value.constructor.name;\n var base64 = encode(value);\n return {\n rr_type: name1,\n base64: base64\n };\n } else if (_instanceof(value, DataView)) {\n var name2 = value.constructor.name;\n return {\n rr_type: name2,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (_instanceof(value, HTMLImageElement)) {\n var name3 = value.constructor.name;\n var src = value.src;\n return {\n rr_type: name3,\n src: src\n };\n } else if (_instanceof(value, HTMLCanvasElement)) {\n var name4 = \"HTMLImageElement\";\n var src1 = value.toDataURL();\n return {\n rr_type: name4,\n src: src1\n };\n } else if (_instanceof(value, ImageData)) {\n var name5 = value.constructor.name;\n return {\n rr_type: name5,\n args: [\n serializeArg(value.data, win, ctx),\n value.width,\n value.height\n ]\n };\n } else if (isInstanceOfWebGLObject(value, win) || (typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"object\") {\n var name6 = value.constructor.name;\n var index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name6,\n index: index2\n };\n }\n return value;\n}\nvar serializeArgs = function(args, win, ctx) {\n return args.map(function(arg) {\n return serializeArg(arg, win, ctx);\n });\n};\nvar isInstanceOfWebGLObject = function(value, win) {\n var webGLConstructorNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\",\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n \"WebGLVertexArrayObjectOES\"\n ];\n var supportedWebGLConstructorNames = webGLConstructorNames.filter(function(name) {\n return typeof win[name] === \"function\";\n });\n return Boolean(supportedWebGLConstructorNames.find(function(name) {\n return _instanceof(value, win[name]);\n }));\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n var _loop = function() {\n var prop = _step.value;\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n return \"continue\";\n }\n var restoreHandler = patch$2(win.CanvasRenderingContext2D.prototype, prop, function(original) {\n return function() {\n var _this = this;\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(function() {\n var recordArgs = serializeArgs(args, win, _this);\n cb(_this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: recordArgs\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n });\n handlers.push(restoreHandler);\n } catch (e) {\n var hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\n set: function set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [\n v2\n ],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n };\n var handlers = [];\n var props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\n for(var _iterator = _create_for_of_iterator_helper_loose(props2D), _step; !(_step = _iterator()).done;)_loop();\n return function() {\n handlers.forEach(function(h) {\n return h();\n });\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n var handlers = [];\n try {\n var restoreHandler = patch$2(win.HTMLCanvasElement.prototype, \"getContext\", function(original) {\n return function(contextType) {\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 (!isBlocked(this, blockClass, blockSelector, true)) {\n var ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\n \"webgl\",\n \"webgl2\"\n ].includes(ctxName)) {\n if (args[0] && _type_of(args[0]) === \"object\") {\n var contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true\n });\n }\n }\n }\n return original.apply(this, [].concat([\n contextType\n ], args));\n };\n });\n handlers.push(restoreHandler);\n } catch (e) {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return function() {\n handlers.forEach(function(h) {\n return h();\n });\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n var _loop = function() {\n var prop = _step.value;\n if (//prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)) {\n return \"continue\";\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n return \"continue\";\n }\n var restoreHandler = patch$2(prototype, prop, function(original) {\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 var result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n var recordArgs = serializeArgs(args, win, this);\n var mutation = {\n type: type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n });\n handlers.push(restoreHandler);\n } catch (e) {\n var hookHandler = hookSetter(prototype, prop, {\n set: function set(v2) {\n cb(this.canvas, {\n type: type,\n property: prop,\n args: [\n v2\n ],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n };\n var handlers = [];\n var props = Object.getOwnPropertyNames(prototype);\n for(var _iterator = _create_for_of_iterator_helper_loose(props), _step; !(_step = _iterator()).done;)_loop();\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n var _handlers;\n var handlers = [];\n (_handlers = handlers).push.apply(_handlers, [].concat(patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, win)));\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n var _handlers1;\n (_handlers1 = handlers).push.apply(_handlers1, [].concat(patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, win)));\n }\n return function() {\n handlers.forEach(function(h) {\n return h();\n });\n };\n}\nvar encodedJs = \"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\";\nvar decodeBase64 = function(base64) {\n return Uint8Array.from(atob(base64), function(c2) {\n return c2.charCodeAt(0);\n });\n};\nvar blob = typeof window !== \"undefined\" && window.Blob && new Blob([\n decodeBase64(encodedJs)\n], {\n type: \"text/javascript;charset=utf-8\"\n});\nfunction WorkerWrapper(options) {\n var objURL;\n try {\n objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n var worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", function() {\n (window.URL || window.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\"data:text/javascript;base64,\" + encodedJs, {\n name: options == null ? void 0 : options.name\n });\n } finally{\n objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);\n }\n}\nvar CanvasManager = /*#__PURE__*/ function() {\n function CanvasManager(options) {\n var _this = this;\n __publicField$1(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"rafStamps\", {\n latestId: 0,\n invokeId: null\n });\n __publicField$1(this, \"mirror\");\n __publicField$1(this, \"mutationCb\");\n __publicField$1(this, \"resetObservers\");\n __publicField$1(this, \"frozen\", false);\n __publicField$1(this, \"locked\", false);\n __publicField$1(this, \"processMutation\", function(target, mutation) {\n var newFrame = _this.rafStamps.invokeId && _this.rafStamps.latestId !== _this.rafStamps.invokeId;\n if (newFrame || !_this.rafStamps.invokeId) _this.rafStamps.invokeId = _this.rafStamps.latestId;\n if (!_this.pendingCanvasMutations.has(target)) {\n _this.pendingCanvasMutations.set(target, []);\n }\n _this.pendingCanvasMutations.get(target).push(mutation);\n });\n var _options_sampling = options.sampling, sampling = _options_sampling === void 0 ? \"all\" : _options_sampling, win = options.win, blockClass = options.blockClass, blockSelector = options.blockSelector, recordCanvas = options.recordCanvas, dataURLOptions = options.dataURLOptions;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\") this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\") this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions: dataURLOptions\n });\n }\n var _proto = CanvasManager.prototype;\n _proto.reset = function reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n };\n _proto.freeze = function freeze() {\n this.frozen = true;\n };\n _proto.unfreeze = function unfreeze() {\n this.frozen = false;\n };\n _proto.lock = function lock() {\n this.locked = true;\n };\n _proto.unlock = function unlock() {\n this.locked = false;\n };\n _proto.initCanvasFPSObserver = function initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n var _this = this;\n var canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, true);\n var snapshotInProgressMap = /* @__PURE__ */ new Map();\n var worker = new WorkerWrapper();\n worker.onmessage = function(e2) {\n var id = e2.data.id;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n var _e2_data = e2.data, base64 = _e2_data.base64, type = _e2_data.type, width = _e2_data.width, height = _e2_data.height;\n _this.mutationCb({\n id: id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [\n 0,\n 0,\n width,\n height\n ]\n },\n {\n property: \"drawImage\",\n // draws (semi-transparent) image\n args: [\n {\n rr_type: \"ImageBitmap\",\n args: [\n {\n rr_type: \"Blob\",\n data: [\n {\n rr_type: \"ArrayBuffer\",\n base64: base64\n }\n ],\n type: type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n var timeBetweenSnapshots = 1e3 / fps;\n var lastSnapshotTime = 0;\n var rafId;\n var getCanvas = function() {\n var matchedCanvas = [];\n win.document.querySelectorAll(\"canvas\").forEach(function(canvas) {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n var takeCanvasSnapshots = function(timestamp) {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n var _this1 = _this;\n getCanvas().forEach(/*#__PURE__*/ _async_to_generator(function(canvas) {\n var _a2, id, context, bitmap;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n id = _this1.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return [\n 2\n ];\n if (canvas.width === 0 || canvas.height === 0) return [\n 2\n ];\n snapshotInProgressMap.set(id, true);\n if ([\n \"webgl\",\n \"webgl2\"\n ].includes(canvas.__context)) {\n context = canvas.getContext(canvas.__context);\n if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n return [\n 4,\n createImageBitmap(canvas)\n ];\n case 1:\n bitmap = _state.sent();\n worker.postMessage({\n id: id,\n bitmap: bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions: options.dataURLOptions\n }, [\n bitmap\n ]);\n return [\n 2\n ];\n }\n });\n }));\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = function() {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n };\n _proto.initCanvasMutationObserver = function initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n var canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, false);\n var canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\n var canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\n this.resetObservers = function() {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n };\n _proto.startPendingCanvasMutationFlusher = function startPendingCanvasMutationFlusher() {\n var _this = this;\n requestAnimationFrame(function() {\n return _this.flushPendingCanvasMutations();\n });\n };\n _proto.startRAFTimestamping = function startRAFTimestamping() {\n var _this = this;\n var setLatestRAFTimestamp = function(timestamp) {\n _this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n _proto.flushPendingCanvasMutations = function flushPendingCanvasMutations() {\n var _this = this;\n this.pendingCanvasMutations.forEach(function(_values, canvas) {\n var id = _this.mirror.getId(canvas);\n _this.flushPendingCanvasMutationFor(canvas, id);\n });\n requestAnimationFrame(function() {\n return _this.flushPendingCanvasMutations();\n });\n };\n _proto.flushPendingCanvasMutationFor = function flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n var valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n var values = valuesWithType.map(function(value) {\n value.type; var rest = _object_without_properties_loose(value, [\n \"type\"\n ]);\n return rest;\n });\n var type = valuesWithType[0].type;\n this.mutationCb({\n id: id,\n type: type,\n commands: values\n });\n this.pendingCanvasMutations.delete(canvas);\n };\n return CanvasManager;\n}();\nvar StylesheetManager = /*#__PURE__*/ function() {\n function StylesheetManager(options) {\n __publicField$1(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n __publicField$1(this, \"mutationCb\");\n __publicField$1(this, \"adoptedStyleSheetCb\");\n __publicField$1(this, \"styleMirror\", new StyleSheetMirror());\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n var _proto = StylesheetManager.prototype;\n _proto.attachLinkElement = function attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes) this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn.attributes\n }\n ]\n });\n this.trackLinkElement(linkEl);\n };\n _proto.trackLinkElement = function trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n };\n _proto.adoptStyleSheets = function adoptStyleSheets(sheets, hostId) {\n var _this, _loop = function() {\n var sheet = _step.value;\n var styleId = void 0;\n if (!_this.styleMirror.has(sheet)) {\n styleId = _this.styleMirror.add(sheet);\n styles.push({\n styleId: styleId,\n rules: Array.from(sheet.rules || CSSRule, function(r2, index2) {\n return {\n rule: stringifyRule(r2, sheet.href),\n index: index2\n };\n })\n });\n } else styleId = _this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n };\n if (sheets.length === 0) return;\n var adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n var styles = [];\n for(var _iterator = _create_for_of_iterator_helper_loose(sheets), _step; !(_step = _iterator()).done;)_this = this, _loop();\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n };\n _proto.reset = function reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n };\n // TODO: take snapshot on stylesheet reload by applying event listener\n _proto.trackStylesheetInLinkElement = function trackStylesheetInLinkElement(_linkEl) {};\n return StylesheetManager;\n}();\nvar ProcessedNodeManager = /*#__PURE__*/ function() {\n function ProcessedNodeManager() {\n __publicField$1(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField$1(this, \"active\", false);\n }\n var _proto = ProcessedNodeManager.prototype;\n _proto.inOtherBuffer = function inOtherBuffer(node2, thisBuffer) {\n var buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some(function(buffer) {\n return buffer !== thisBuffer;\n });\n };\n _proto.add = function add(node2, buffer) {\n var _this = this;\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(function() {\n _this.nodeMap = /* @__PURE__ */ new WeakMap();\n _this.active = false;\n });\n }\n this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n };\n _proto.destroy = function destroy() {};\n return ProcessedNodeManager;\n}();\nvar wrappedEmit;\nvar takeFullSnapshot$1;\nvar canvasManager;\nvar recording = false;\ntry {\n if (Array.from([\n 1\n ], function(x2) {\n return x2 * 2;\n })[0] !== 2) {\n var cleanFrame = document.createElement(\"iframe\");\n document.body.appendChild(cleanFrame);\n Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug(\"Unable to override Array.from\", err);\n}\nvar mirror = createMirror$2();\nfunction record(options) {\n if (options === void 0) options = {};\n var emit = options.emit, checkoutEveryNms = options.checkoutEveryNms, checkoutEveryNth = options.checkoutEveryNth, _options_blockClass = options.blockClass, blockClass = _options_blockClass === void 0 ? \"rr-block\" : _options_blockClass, _options_blockSelector = options.blockSelector, blockSelector = _options_blockSelector === void 0 ? null : _options_blockSelector, _options_ignoreClass = options.ignoreClass, ignoreClass = _options_ignoreClass === void 0 ? \"rr-ignore\" : _options_ignoreClass, _options_ignoreSelector = options.ignoreSelector, ignoreSelector = _options_ignoreSelector === void 0 ? null : _options_ignoreSelector, _options_maskTextClass = options.maskTextClass, maskTextClass = _options_maskTextClass === void 0 ? \"rr-mask\" : _options_maskTextClass, _options_maskTextSelector = options.maskTextSelector, maskTextSelector = _options_maskTextSelector === void 0 ? null : _options_maskTextSelector, _options_inlineStylesheet = options.inlineStylesheet, inlineStylesheet = _options_inlineStylesheet === void 0 ? true : _options_inlineStylesheet, maskAllInputs = options.maskAllInputs, _maskInputOptions = options.maskInputOptions, _slimDOMOptions = options.slimDOMOptions, maskInputFn = options.maskInputFn, maskTextFn = options.maskTextFn, hooks = options.hooks, packFn = options.packFn, _options_sampling = options.sampling, sampling = _options_sampling === void 0 ? {} : _options_sampling, _options_dataURLOptions = options.dataURLOptions, dataURLOptions = _options_dataURLOptions === void 0 ? {} : _options_dataURLOptions, mousemoveWait = options.mousemoveWait, _options_recordDOM = options.recordDOM, recordDOM = _options_recordDOM === void 0 ? true : _options_recordDOM, _options_recordCanvas = options.recordCanvas, recordCanvas = _options_recordCanvas === void 0 ? false : _options_recordCanvas, _options_recordCrossOriginIframes = options.recordCrossOriginIframes, recordCrossOriginIframes = _options_recordCrossOriginIframes === void 0 ? false : _options_recordCrossOriginIframes, _options_recordAfter = options.recordAfter, recordAfter = _options_recordAfter === void 0 ? options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\" : _options_recordAfter, _options_userTriggeredOnInput = options.userTriggeredOnInput, userTriggeredOnInput = _options_userTriggeredOnInput === void 0 ? false : _options_userTriggeredOnInput, _options_collectFonts = options.collectFonts, collectFonts = _options_collectFonts === void 0 ? false : _options_collectFonts, _options_inlineImages = options.inlineImages, inlineImages = _options_inlineImages === void 0 ? false : _options_inlineImages, plugins = options.plugins, _options_keepIframeSrcFn = options.keepIframeSrcFn, keepIframeSrcFn = _options_keepIframeSrcFn === void 0 ? function() {\n return false;\n } : _options_keepIframeSrcFn, _options_ignoreCSSAttributes = options.ignoreCSSAttributes, ignoreCSSAttributes = _options_ignoreCSSAttributes === void 0 ? /* @__PURE__ */ new Set([]) : _options_ignoreCSSAttributes, errorHandler2 = options.errorHandler;\n registerErrorHandler(errorHandler2);\n var inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n var passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n } catch (e2) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error(\"emit function is required\");\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return function() {};\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n var maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true,\n hidden: true\n } : _maskInputOptions !== void 0 ? _maskInputOptions : {\n password: true\n };\n var slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === \"all\",\n headMetaDescKeywords: _slimDOMOptions === \"all\",\n headTitleMutations: _slimDOMOptions === \"all\"\n } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n var lastFullSnapshotEvent;\n var incrementalSnapshotCount = 0;\n var eventProcessor = function(e2) {\n for(var _iterator = _create_for_of_iterator_helper_loose(plugins || []), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\n if (plugin3.eventProcessor) {\n e2 = plugin3.eventProcessor(e2);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e2 = packFn(e2);\n }\n return e2;\n };\n wrappedEmit = function(r2, isCheckout) {\n var _a2;\n var e2 = r2;\n e2.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach(function(buf) {\n return buf.unfreeze();\n });\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n var message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout: isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e2.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e2;\n incrementalSnapshotCount = 0;\n } else if (e2.type === EventType.IncrementalSnapshot) {\n if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n var exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n var exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n var wrappedMutationEmit = function(m) {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Mutation\n }, m)\n });\n };\n var wrappedScrollEmit = function(p) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Scroll\n }, p)\n });\n };\n var wrappedCanvasMutationEmit = function(p) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.CanvasMutation\n }, p)\n });\n };\n var wrappedAdoptedStyleSheetEmit = function(a2) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.AdoptedStyleSheet\n }, a2)\n });\n };\n var stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n var iframeManager = new IframeManager({\n mirror: mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager: stylesheetManager,\n recordCrossOriginIframes: recordCrossOriginIframes,\n wrappedEmit: wrappedEmit\n });\n for(var _iterator = _create_for_of_iterator_helper_loose(plugins || []), _step; !(_step = _iterator()).done;){\n var plugin3 = _step.value;\n if (plugin3.getMirror) plugin3.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n var processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas: recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass: blockClass,\n blockSelector: blockSelector,\n mirror: mirror,\n sampling: sampling.canvas,\n dataURLOptions: dataURLOptions\n });\n var shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n inlineStylesheet: inlineStylesheet,\n maskInputOptions: maskInputOptions,\n dataURLOptions: dataURLOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n sampling: sampling,\n slimDOMOptions: slimDOMOptions,\n iframeManager: iframeManager,\n stylesheetManager: stylesheetManager,\n canvasManager: canvasManager,\n keepIframeSrcFn: keepIframeSrcFn,\n processedNodeManager: processedNodeManager\n },\n mirror: mirror\n });\n takeFullSnapshot$1 = function(isCheckout) {\n if (isCheckout === void 0) isCheckout = false;\n if (!recordDOM) {\n return;\n }\n wrappedEmit({\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n }, isCheckout);\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach(function(buf) {\n return buf.lock();\n });\n var node2 = snapshot(document, {\n mirror: mirror,\n blockClass: blockClass,\n blockSelector: blockSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n inlineStylesheet: inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn: maskTextFn,\n maskInputFn: maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n onSerialize: function(n2) {\n if (isSerializedIframe(n2, mirror)) {\n iframeManager.addIframe(n2);\n }\n if (isSerializedStylesheet(n2, mirror)) {\n stylesheetManager.trackLinkElement(n2);\n }\n if (hasShadowRoot(n2)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n }\n },\n onIframeLoad: function(iframe, childSn) {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: function(linkEl, childSn) {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn: keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit({\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n }, isCheckout);\n mutationBuffers.forEach(function(buf) {\n return buf.unlock();\n });\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0) stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\n };\n try {\n var handlers = [];\n var observe = function(doc) {\n var _a2;\n return callbackWrapper(initObservers)({\n mutationCb: wrappedMutationEmit,\n mousemoveCb: function(positions, source) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: source,\n positions: positions\n }\n });\n },\n mouseInteractionCb: function(d) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.MouseInteraction\n }, d)\n });\n },\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: function(d) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.ViewportResize\n }, d)\n });\n },\n inputCb: function(v2) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Input\n }, v2)\n });\n },\n mediaInteractionCb: function(p) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.MediaInteraction\n }, p)\n });\n },\n styleSheetRuleCb: function(r2) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.StyleSheetRule\n }, r2)\n });\n },\n styleDeclarationCb: function(r2) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.StyleDeclaration\n }, r2)\n });\n },\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: function(p) {\n return wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Font\n }, p)\n });\n },\n selectionCb: function(p) {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.Selection\n }, p)\n });\n },\n customElementCb: function(c2) {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: _extends({\n source: IncrementalSource.CustomElement\n }, c2)\n });\n },\n blockClass: blockClass,\n ignoreClass: ignoreClass,\n ignoreSelector: ignoreSelector,\n maskTextClass: maskTextClass,\n maskTextSelector: maskTextSelector,\n maskInputOptions: maskInputOptions,\n inlineStylesheet: inlineStylesheet,\n sampling: sampling,\n recordDOM: recordDOM,\n recordCanvas: recordCanvas,\n inlineImages: inlineImages,\n userTriggeredOnInput: userTriggeredOnInput,\n collectFonts: collectFonts,\n doc: doc,\n maskInputFn: maskInputFn,\n maskTextFn: maskTextFn,\n keepIframeSrcFn: keepIframeSrcFn,\n blockSelector: blockSelector,\n slimDOMOptions: slimDOMOptions,\n dataURLOptions: dataURLOptions,\n mirror: mirror,\n iframeManager: iframeManager,\n stylesheetManager: stylesheetManager,\n shadowDomManager: shadowDomManager,\n processedNodeManager: processedNodeManager,\n canvasManager: canvasManager,\n ignoreCSSAttributes: ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter(function(p) {\n return p.observer;\n })) == null ? void 0 : _a2.map(function(p) {\n return {\n observer: p.observer,\n options: p.options,\n callback: function(payload) {\n return wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload: payload\n }\n });\n }\n };\n })) || []\n }, hooks);\n };\n iframeManager.addLoadListener(function(iframeEl) {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n var init = function() {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(on(\"DOMContentLoaded\", function() {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n }));\n handlers.push(on(\"load\", function() {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n }, window));\n }\n return function() {\n handlers.forEach(function(handler) {\n try {\n handler();\n } catch (error) {\n var msg = String(error).toLowerCase();\n if (!msg.includes(\"cross-origin\")) {\n console.warn(error);\n }\n }\n });\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = function(tag, payload) {\n if (!recording) {\n throw new Error(\"please add custom event after start recording\");\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag: tag,\n payload: payload\n }\n });\n};\nrecord.freezePage = function() {\n mutationBuffers.forEach(function(buf) {\n return buf.freeze();\n });\n};\nrecord.takeFullSnapshot = function(isCheckout) {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nrecord.addCustomEvent;\nrecord.freezePage;\nrecord.takeFullSnapshot;\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = function(obj, key, value) {\n return key in obj ? __defProp(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n }) : obj[key] = value;\n};\nvar __publicField = function(obj, key, value) {\n return __defNormalProp(obj, (typeof key === \"undefined\" ? \"undefined\" : _type_of(key)) !== \"symbol\" ? key + \"\" : key, value);\n};\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return function() {};\n }\n var original = source[name];\n var wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return function() {\n source[name] = original;\n };\n } catch (e) {\n return function() {};\n }\n}\nvar StackFrame = /*#__PURE__*/ function() {\n function StackFrame(obj) {\n __publicField(this, \"fileName\");\n __publicField(this, \"functionName\");\n __publicField(this, \"lineNumber\");\n __publicField(this, \"columnNumber\");\n this.fileName = obj.fileName || \"\";\n this.functionName = obj.functionName || \"\";\n this.lineNumber = obj.lineNumber;\n this.columnNumber = obj.columnNumber;\n }\n var _proto = StackFrame.prototype;\n _proto.toString = function toString() {\n var lineNumber = this.lineNumber || \"\";\n var columnNumber = this.columnNumber || \"\";\n if (this.functionName) return this.functionName + \" (\" + this.fileName + \":\" + lineNumber + \":\" + columnNumber + \")\";\n return this.fileName + \":\" + lineNumber + \":\" + columnNumber;\n };\n return StackFrame;\n}();\nvar FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nvar CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nvar SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\nvar ErrorStackParser = {\n /**\n * Given an Error object, extract the most information from it.\n */ parse: function parse(error) {\n if (!error) {\n return [];\n }\n if (// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n typeof error.stacktrace !== \"undefined\" || // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n typeof error[\"opera#sourceloc\"] !== \"undefined\") {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n console.warn(\"[console-record-plugin]: Failed to parse error object:\", error);\n return [];\n }\n },\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function extractLocation(urlLike) {\n if (urlLike.indexOf(\":\") === -1) {\n return [\n urlLike\n ];\n }\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n if (!parts) throw new Error(\"Cannot parse given url: \" + urlLike);\n return [\n parts[1],\n parts[2] || void 0,\n parts[3] || void 0\n ];\n },\n parseV8OrIE: function parseV8OrIE(error) {\n var filtered = error.stack.split(\"\\n\").filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function(line) {\n if (line.indexOf(\"(eval \") > -1) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(\\),.*$)/g, \"\");\n }\n var sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\");\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(\" \") || void 0;\n var fileName = [\n \"eval\",\n \"\"\n ].indexOf(locationParts[0]) > -1 ? void 0 : locationParts[0];\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2]\n });\n }, this);\n },\n parseFFOrSafari: function parseFFOrSafari(error) {\n var filtered = error.stack.split(\"\\n\").filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function(line) {\n if (line.indexOf(\" > eval\") > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n }\n if (line.indexOf(\"@\") === -1 && line.indexOf(\":\") === -1) {\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : void 0;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, \"\"));\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2]\n });\n }\n }, this);\n },\n parseOpera: function parseOpera(e) {\n if (!e.stacktrace || e.message.indexOf(\"\\n\") > -1 && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split(\"\\n\");\n var result = [];\n for(var i = 2, len = lines.length; i < len; i += 2){\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: parseFloat(match[1])\n }));\n }\n }\n return result;\n },\n parseOpera10: function parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split(\"\\n\");\n var result = [];\n for(var i = 0, len = lines.length; i < len; i += 2){\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n functionName: match[3] || void 0,\n fileName: match[2],\n lineNumber: parseFloat(match[1])\n }));\n }\n }\n return result;\n },\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function parseOpera11(error) {\n var filtered = error.stack.split(\"\\n\").filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n return filtered.map(function(line) {\n var tokens = line.split(\"@\");\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = tokens.shift() || \"\";\n var functionName = functionCall.replace(//, \"$2\").replace(/\\([^)]*\\)/g, \"\") || void 0;\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2]\n });\n }, this);\n }\n};\nfunction pathToSelector(node) {\n if (!node || !node.outerHTML) {\n return \"\";\n }\n var path = \"\";\n while(node.parentElement){\n var name = node.localName;\n if (!name) {\n break;\n }\n name = name.toLowerCase();\n var parent = node.parentElement;\n var domSiblings = [];\n if (parent.children && parent.children.length > 0) {\n for(var i = 0; i < parent.children.length; i++){\n var sibling = parent.children[i];\n if (sibling.localName && sibling.localName.toLowerCase) {\n if (sibling.localName.toLowerCase() === name) {\n domSiblings.push(sibling);\n }\n }\n }\n }\n if (domSiblings.length > 1) {\n name += \":eq(\" + domSiblings.indexOf(node) + \")\";\n }\n path = name + (path ? \">\" + path : \"\");\n node = parent;\n }\n return path;\n}\nfunction isObject(obj) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n}\nfunction isObjTooDeep(obj, limit) {\n if (limit === 0) {\n return true;\n }\n var keys = Object.keys(obj);\n for(var _iterator = _create_for_of_iterator_helper_loose(keys), _step; !(_step = _iterator()).done;){\n var key = _step.value;\n if (isObject(obj[key]) && isObjTooDeep(obj[key], limit - 1)) {\n return true;\n }\n }\n return false;\n}\nfunction stringify(obj, stringifyOptions) {\n var options = {\n numOfKeysLimit: 50,\n depthOfLimit: 4\n };\n Object.assign(options, stringifyOptions);\n var stack = [];\n var keys = [];\n return JSON.stringify(obj, function(key, value) {\n if (stack.length > 0) {\n var thisPos = stack.indexOf(this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n if (~stack.indexOf(value)) {\n if (stack[0] === value) {\n value = \"[Circular ~]\";\n } else {\n value = \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\";\n }\n }\n } else {\n stack.push(value);\n }\n if (value === null) return value;\n if (value === void 0) return \"undefined\";\n if (shouldIgnore(value)) {\n return toString(value);\n }\n if ((typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"bigint\") {\n return value.toString() + \"n\";\n }\n if (_instanceof(value, Event)) {\n var eventResult = {};\n for(var eventKey in value){\n var eventValue = value[eventKey];\n if (Array.isArray(eventValue)) {\n eventResult[eventKey] = pathToSelector(eventValue.length ? eventValue[0] : null);\n } else {\n eventResult[eventKey] = eventValue;\n }\n }\n return eventResult;\n } else if (_instanceof(value, Node)) {\n if (_instanceof(value, HTMLElement)) {\n return value ? value.outerHTML : \"\";\n }\n return value.nodeName;\n } else if (_instanceof(value, Error)) {\n return value.stack ? value.stack + \"\\nEnd of stack for Error object\" : value.name + \": \" + value.message;\n }\n return value;\n });\n function shouldIgnore(_obj) {\n if (isObject(_obj) && Object.keys(_obj).length > options.numOfKeysLimit) {\n return true;\n }\n if (typeof _obj === \"function\") {\n return true;\n }\n if (isObject(_obj) && isObjTooDeep(_obj, options.depthOfLimit)) {\n return true;\n }\n return false;\n }\n function toString(_obj) {\n var str = _obj.toString();\n if (options.stringLengthLimit && str.length > options.stringLengthLimit) {\n str = \"\" + str.slice(0, options.stringLengthLimit) + \"...\";\n }\n return str;\n }\n}\nvar defaultLogOptions = {\n level: [\n \"assert\",\n \"clear\",\n \"count\",\n \"countReset\",\n \"debug\",\n \"dir\",\n \"dirxml\",\n \"error\",\n \"group\",\n \"groupCollapsed\",\n \"groupEnd\",\n \"info\",\n \"log\",\n \"table\",\n \"time\",\n \"timeEnd\",\n \"timeLog\",\n \"trace\",\n \"warn\"\n ],\n lengthThreshold: 1e3,\n logger: \"console\"\n};\nfunction initLogObserver(cb, win, options) {\n var logOptions = options ? Object.assign({}, defaultLogOptions, options) : defaultLogOptions;\n var loggerType = logOptions.logger;\n if (!loggerType) {\n return function() {};\n }\n var logger;\n if (typeof loggerType === \"string\") {\n logger = win[loggerType];\n } else {\n logger = loggerType;\n }\n var logCount = 0;\n var inStack = false;\n var cancelHandlers = [];\n if (logOptions.level.includes(\"error\")) {\n var errorHandler = function(event) {\n var message = event.message, error = event.error;\n var trace = ErrorStackParser.parse(error).map(function(stackFrame) {\n return stackFrame.toString();\n });\n var payload = [\n stringify(message, logOptions.stringifyOptions)\n ];\n cb({\n level: \"error\",\n trace: trace,\n payload: payload\n });\n };\n win.addEventListener(\"error\", errorHandler);\n cancelHandlers.push(function() {\n win.removeEventListener(\"error\", errorHandler);\n });\n var unhandledrejectionHandler = function(event) {\n var error;\n var payload;\n if (_instanceof(event.reason, Error)) {\n error = event.reason;\n payload = [\n stringify(\"Uncaught (in promise) \" + error.name + \": \" + error.message, logOptions.stringifyOptions)\n ];\n } else {\n error = new Error();\n payload = [\n stringify(\"Uncaught (in promise)\", logOptions.stringifyOptions),\n stringify(event.reason, logOptions.stringifyOptions)\n ];\n }\n var trace = ErrorStackParser.parse(error).map(function(stackFrame) {\n return stackFrame.toString();\n });\n cb({\n level: \"error\",\n trace: trace,\n payload: payload\n });\n };\n win.addEventListener(\"unhandledrejection\", unhandledrejectionHandler);\n cancelHandlers.push(function() {\n win.removeEventListener(\"unhandledrejection\", unhandledrejectionHandler);\n });\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(logOptions.level), _step; !(_step = _iterator()).done;){\n var levelType = _step.value;\n cancelHandlers.push(replace(logger, levelType));\n }\n return function() {\n cancelHandlers.forEach(function(h) {\n return h();\n });\n };\n function replace(_logger, level) {\n var _this = this;\n if (!_logger[level]) {\n return function() {};\n }\n return patch(_logger, level, function(original) {\n var _this1 = _this;\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 original.apply(_this1, args);\n if (level === \"assert\" && !!args[0]) {\n return;\n }\n if (inStack) {\n return;\n }\n inStack = true;\n try {\n var trace = ErrorStackParser.parse(new Error()).map(function(stackFrame) {\n return stackFrame.toString();\n }).splice(1);\n var argsForPayload = level === \"assert\" ? args.slice(1) : args;\n var payload = argsForPayload.map(function(s) {\n return stringify(s, logOptions.stringifyOptions);\n });\n logCount++;\n if (logCount < logOptions.lengthThreshold) {\n cb({\n level: level,\n trace: trace,\n payload: payload\n });\n } else if (logCount === logOptions.lengthThreshold) {\n cb({\n level: \"warn\",\n trace: [],\n payload: [\n stringify(\"The number of log records reached the threshold.\")\n ]\n });\n }\n } catch (error) {\n original.apply(void 0, [].concat([\n \"rrweb logger error:\",\n error\n ], args));\n } finally{\n inStack = false;\n }\n };\n });\n }\n}\nvar PLUGIN_NAME = \"rrweb/console@1\";\nvar getRecordConsolePlugin = function(options) {\n return {\n name: PLUGIN_NAME,\n observer: initLogObserver,\n options: options\n };\n};\n\nvar setImmediate = win['setImmediate'];\nvar builtInProp, cycle, schedulingQueue,\n ToString = Object.prototype.toString,\n timer = (typeof setImmediate !== 'undefined') ?\n function timer(fn) { return setImmediate(fn); } :\n setTimeout;\n\n// dammit, IE8.\ntry {\n Object.defineProperty({},'x',{});\n builtInProp = function builtInProp(obj,name,val,config) {\n return Object.defineProperty(obj,name,{\n value: val,\n writable: true,\n configurable: config !== false\n });\n };\n}\ncatch (err) {\n builtInProp = function builtInProp(obj,name,val) {\n obj[name] = val;\n return obj;\n };\n}\n\n// Note: using a queue instead of array for efficiency\nschedulingQueue = (function Queue() {\n var first, last, item;\n\n function Item(fn,self) {\n this.fn = fn;\n this.self = self;\n this.next = void 0;\n }\n\n return {\n add: function add(fn,self) {\n item = new Item(fn,self);\n if (last) {\n last.next = item;\n }\n else {\n first = item;\n }\n last = item;\n item = void 0;\n },\n drain: function drain() {\n var f = first;\n first = last = cycle = void 0;\n\n while (f) {\n f.fn.call(f.self);\n f = f.next;\n }\n }\n };\n})();\n\nfunction schedule(fn,self) {\n schedulingQueue.add(fn,self);\n if (!cycle) {\n cycle = timer(schedulingQueue.drain);\n }\n}\n\n// promise duck typing\nfunction isThenable(o) {\n var _then, oType = typeof o;\n\n if (o !== null && (oType === 'object' || oType === 'function')) {\n _then = o.then;\n }\n return typeof _then === 'function' ? _then : false;\n}\n\nfunction notify() {\n for (var i=0; i 0) {\n schedule(notify,self);\n }\n }\n }\n catch (err) {\n reject.call(new MakeDefWrapper(self),err);\n }\n}\n\nfunction reject(msg) {\n var self = this;\n\n // already triggered?\n if (self.triggered) { return; }\n\n self.triggered = true;\n\n // unwrap\n if (self.def) {\n self = self.def;\n }\n\n self.msg = msg;\n self.state = 2;\n if (self.chain.length > 0) {\n schedule(notify,self);\n }\n}\n\nfunction iteratePromises(Constructor,arr,resolver,rejecter) {\n for (var idx=0; idx 0) {\n ret[k] = v;\n }\n });\n return ret;\n};\n\n/*\n * this function returns a copy of object after truncating it. If\n * passed an Array or Object it will iterate through obj and\n * truncate all the values recursively.\n */\n_.truncate = function(obj, length) {\n var ret;\n\n if (typeof(obj) === 'string') {\n ret = obj.slice(0, length);\n } else if (_.isArray(obj)) {\n ret = [];\n _.each(obj, function(val) {\n ret.push(_.truncate(val, length));\n });\n } else if (_.isObject(obj)) {\n ret = {};\n _.each(obj, function(val, key) {\n ret[key] = _.truncate(val, length);\n });\n } else {\n ret = obj;\n }\n\n return ret;\n};\n\n_.JSONEncode = (function() {\n return function(mixed_val) {\n var value = mixed_val;\n var quote = function(string) {\n var escapable = /[\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g; // eslint-disable-line no-control-regex\n var meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n };\n\n escapable.lastIndex = 0;\n return escapable.test(string) ?\n '\"' + string.replace(escapable, function(a) {\n var c = meta[a];\n return typeof c === 'string' ? c :\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' :\n '\"' + string + '\"';\n };\n\n var str = function(key, holder) {\n var gap = '';\n var indent = ' ';\n var i = 0; // The loop counter.\n var k = ''; // The member key.\n var v = ''; // The member value.\n var length = 0;\n var mind = gap;\n var partial = [];\n var value = holder[key];\n\n // If the value has a toJSON method, call it to obtain a replacement value.\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n\n // What happens next depends on the value's type.\n switch (typeof value) {\n case 'string':\n return quote(value);\n\n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : 'null';\n\n case 'boolean':\n case 'null':\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n\n return String(value);\n\n case 'object':\n // If the type is 'object', we might be dealing with an object or an array or\n // null.\n // Due to a specification blunder in ECMAScript, typeof null is 'object',\n // so watch out for that case.\n if (!value) {\n return 'null';\n }\n\n // Make an array to hold the partial results of stringifying this object value.\n gap += indent;\n partial = [];\n\n // Is the value an array?\n if (toString.apply(value) === '[object Array]') {\n // The value is an array. Stringify every element. Use null as a placeholder\n // for non-JSON values.\n\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n\n // Join all of the elements together, separated with commas, and wrap them in\n // brackets.\n v = partial.length === 0 ? '[]' :\n gap ? '[\\n' + gap +\n partial.join(',\\n' + gap) + '\\n' +\n mind + ']' :\n '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n\n // Iterate through all of the keys in the object.\n for (k in value) {\n if (hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n\n // Join all of the member texts together, separated with commas,\n // and wrap them in braces.\n v = partial.length === 0 ? '{}' :\n gap ? '{' + partial.join(',') + '' +\n mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n };\n\n // Make a fake root object containing our value under the key of ''.\n // Return the result of stringifying the value.\n return str('', {\n '': value\n });\n };\n})();\n\n/**\n * From https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js\n * Slightly modified to throw a real Error rather than a POJO\n */\n_.JSONDecode = (function() {\n var at, // The index of the current character\n ch, // The current character\n escapee = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n 'b': '\\b',\n 'f': '\\f',\n 'n': '\\n',\n 'r': '\\r',\n 't': '\\t'\n },\n text,\n error = function(m) {\n var e = new SyntaxError(m);\n e.at = at;\n e.text = text;\n throw e;\n },\n next = function(c) {\n // If a c parameter is provided, verify that it matches the current character.\n if (c && c !== ch) {\n error('Expected \\'' + c + '\\' instead of \\'' + ch + '\\'');\n }\n // Get the next character. When there are no more characters,\n // return the empty string.\n ch = text.charAt(at);\n at += 1;\n return ch;\n },\n number = function() {\n // Parse a number value.\n var number,\n string = '';\n\n if (ch === '-') {\n string = '-';\n next('-');\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n if (ch === '.') {\n string += '.';\n while (next() && ch >= '0' && ch <= '9') {\n string += ch;\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch;\n next();\n if (ch === '-' || ch === '+') {\n string += ch;\n next();\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n }\n number = +string;\n if (!isFinite(number)) {\n error('Bad number');\n } else {\n return number;\n }\n },\n\n string = function() {\n // Parse a string value.\n var hex,\n i,\n string = '',\n uffff;\n // When parsing for string values, we must look for \" and \\ characters.\n if (ch === '\"') {\n while (next()) {\n if (ch === '\"') {\n next();\n return string;\n }\n if (ch === '\\\\') {\n next();\n if (ch === 'u') {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch];\n } else {\n break;\n }\n } else {\n string += ch;\n }\n }\n }\n error('Bad string');\n },\n white = function() {\n // Skip whitespace.\n while (ch && ch <= ' ') {\n next();\n }\n },\n word = function() {\n // true, false, or null.\n switch (ch) {\n case 't':\n next('t');\n next('r');\n next('u');\n next('e');\n return true;\n case 'f':\n next('f');\n next('a');\n next('l');\n next('s');\n next('e');\n return false;\n case 'n':\n next('n');\n next('u');\n next('l');\n next('l');\n return null;\n }\n error('Unexpected \"' + ch + '\"');\n },\n value, // Placeholder for the value function.\n array = function() {\n // Parse an array value.\n var array = [];\n\n if (ch === '[') {\n next('[');\n white();\n if (ch === ']') {\n next(']');\n return array; // empty array\n }\n while (ch) {\n array.push(value());\n white();\n if (ch === ']') {\n next(']');\n return array;\n }\n next(',');\n white();\n }\n }\n error('Bad array');\n },\n object = function() {\n // Parse an object value.\n var key,\n object = {};\n\n if (ch === '{') {\n next('{');\n white();\n if (ch === '}') {\n next('}');\n return object; // empty object\n }\n while (ch) {\n key = string();\n white();\n next(':');\n if (Object.hasOwnProperty.call(object, key)) {\n error('Duplicate key \"' + key + '\"');\n }\n object[key] = value();\n white();\n if (ch === '}') {\n next('}');\n return object;\n }\n next(',');\n white();\n }\n }\n error('Bad object');\n };\n\n value = function() {\n // Parse a JSON value. It could be an object, an array, a string,\n // a number, or a word.\n white();\n switch (ch) {\n case '{':\n return object();\n case '[':\n return array();\n case '\"':\n return string();\n case '-':\n return number();\n default:\n return ch >= '0' && ch <= '9' ? number() : word();\n }\n };\n\n // Return the json_parse function. It will have access to all of the\n // above functions and variables.\n return function(source) {\n var result;\n\n text = source;\n at = 0;\n ch = ' ';\n result = value();\n white();\n if (ch) {\n error('Syntax error');\n }\n\n return result;\n };\n})();\n\n_.base64Encode = function(data) {\n var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n enc = '',\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n data = _.utf8Encode(data);\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1 << 16 | o2 << 8 | o3;\n\n h1 = bits >> 18 & 0x3f;\n h2 = bits >> 12 & 0x3f;\n h3 = bits >> 6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '==';\n break;\n case 2:\n enc = enc.slice(0, -1) + '=';\n break;\n }\n\n return enc;\n};\n\n_.utf8Encode = function(string) {\n string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n var utftext = '',\n start,\n end;\n var stringl = 0,\n n;\n\n start = end = 0;\n stringl = string.length;\n\n for (n = 0; n < stringl; n++) {\n var c1 = string.charCodeAt(n);\n var enc = null;\n\n if (c1 < 128) {\n end++;\n } else if ((c1 > 127) && (c1 < 2048)) {\n enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128);\n } else {\n enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128);\n }\n if (enc !== null) {\n if (end > start) {\n utftext += string.substring(start, end);\n }\n utftext += enc;\n start = end = n + 1;\n }\n }\n\n if (end > start) {\n utftext += string.substring(start, string.length);\n }\n\n return utftext;\n};\n\n_.UUID = function() {\n try {\n // use native Crypto API when available\n return win['crypto']['randomUUID']();\n } catch (err) {\n // fall back to generating our own UUID\n // based on https://gist.github.com/scwood/3bff42cc005cc20ab7ec98f0d8e1d59d\n var uuid = new Array(36);\n for (var i = 0; i < 36; i++) {\n uuid[i] = Math.floor(Math.random() * 16);\n }\n uuid[14] = 4; // set bits 12-15 of time-high-and-version to 0100\n uuid[19] = uuid[19] &= -5; // set bit 6 of clock-seq-and-reserved to zero\n uuid[19] = uuid[19] |= (1 << 3); // set bit 7 of clock-seq-and-reserved to one\n uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';\n\n return _.map(uuid, function(x) {\n return x.toString(16);\n }).join('');\n }\n};\n\n// _.isBlockedUA()\n// This is to block various web spiders from executing our JS and\n// sending false tracking data\nvar BLOCKED_UA_STRS = [\n 'ahrefsbot',\n 'ahrefssiteaudit',\n 'amazonbot',\n 'baiduspider',\n 'bingbot',\n 'bingpreview',\n 'chrome-lighthouse',\n 'facebookexternal',\n 'petalbot',\n 'pinterest',\n 'screaming frog',\n 'yahoo! slurp',\n 'yandex',\n\n // a whole bunch of goog-specific crawlers\n // https://developers.google.com/search/docs/advanced/crawling/overview-google-crawlers\n 'adsbot-google',\n 'apis-google',\n 'duplexweb-google',\n 'feedfetcher-google',\n 'google favicon',\n 'google web preview',\n 'google-read-aloud',\n 'googlebot',\n 'googleweblight',\n 'mediapartners-google',\n 'storebot-google'\n];\n_.isBlockedUA = function(ua) {\n var i;\n ua = ua.toLowerCase();\n for (i = 0; i < BLOCKED_UA_STRS.length; i++) {\n if (ua.indexOf(BLOCKED_UA_STRS[i]) !== -1) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @param {Object=} formdata\n * @param {string=} arg_separator\n */\n_.HTTPBuildQuery = function(formdata, arg_separator) {\n var use_val, use_key, tmp_arr = [];\n\n if (_.isUndefined(arg_separator)) {\n arg_separator = '&';\n }\n\n _.each(formdata, function(val, key) {\n use_val = encodeURIComponent(val.toString());\n use_key = encodeURIComponent(key);\n tmp_arr[tmp_arr.length] = use_key + '=' + use_val;\n });\n\n return tmp_arr.join(arg_separator);\n};\n\n_.getQueryParam = function(url, param) {\n // Expects a raw URL\n\n param = param.replace(/[[]/g, '\\\\[').replace(/[\\]]/g, '\\\\]');\n var regexS = '[\\\\?&]' + param + '=([^&#]*)',\n regex = new RegExp(regexS),\n results = regex.exec(url);\n if (results === null || (results && typeof(results[1]) !== 'string' && results[1].length)) {\n return '';\n } else {\n var result = results[1];\n try {\n result = decodeURIComponent(result);\n } catch(err) {\n console$1.error('Skipping decoding for malformed query param: ' + result);\n }\n return result.replace(/\\+/g, ' ');\n }\n};\n\n\n// _.cookie\n// Methods partially borrowed from quirksmode.org/js/cookies.html\n_.cookie = {\n get: function(name) {\n var nameEQ = name + '=';\n var ca = document$1.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return decodeURIComponent(c.substring(nameEQ.length, c.length));\n }\n }\n return null;\n },\n\n parse: function(name) {\n var cookie;\n try {\n cookie = _.JSONDecode(_.cookie.get(name)) || {};\n } catch (err) {\n // noop\n }\n return cookie;\n },\n\n set_seconds: function(name, value, seconds, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '',\n expires = '',\n secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document$1.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (seconds) {\n var date = new Date();\n date.setTime(date.getTime() + (seconds * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n document$1.cookie = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n },\n\n set: function(name, value, days, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '', expires = '', secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document$1.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n var new_cookie_val = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n document$1.cookie = new_cookie_val;\n return new_cookie_val;\n },\n\n remove: function(name, is_cross_subdomain, domain_override) {\n _.cookie.set(name, '', -1, is_cross_subdomain, false, false, domain_override);\n }\n};\n\nvar _testStorageSupported = function (storage) {\n var supported = true;\n try {\n var key = '__mplss_' + cheap_guid(8),\n val = 'xyz';\n storage.setItem(key, val);\n if (storage.getItem(key) !== val) {\n supported = false;\n }\n storage.removeItem(key);\n } catch (err) {\n supported = false;\n }\n return supported;\n};\n\nvar _localStorageSupported = null;\nvar localStorageSupported = function(storage, forceCheck) {\n if (_localStorageSupported !== null && !forceCheck) {\n return _localStorageSupported;\n }\n return _localStorageSupported = _testStorageSupported(storage || win.localStorage);\n};\n\nvar _sessionStorageSupported = null;\nvar sessionStorageSupported = function(storage, forceCheck) {\n if (_sessionStorageSupported !== null && !forceCheck) {\n return _sessionStorageSupported;\n }\n return _sessionStorageSupported = _testStorageSupported(storage || win.sessionStorage);\n};\n\nfunction _storageWrapper(storage, name, is_supported_fn) {\n var log_error = function(msg) {\n console$1.error(name + ' error: ' + msg);\n };\n\n return {\n is_supported: function(forceCheck) {\n var supported = is_supported_fn(storage, forceCheck);\n if (!supported) {\n console$1.error(name + ' unsupported');\n }\n return supported;\n },\n error: log_error,\n get: function(key) {\n try {\n return storage.getItem(key);\n } catch (err) {\n log_error(err);\n }\n return null;\n },\n parse: function(key) {\n try {\n return _.JSONDecode(storage.getItem(key)) || {};\n } catch (err) {\n // noop\n }\n return null;\n },\n set: function(key, value) {\n try {\n storage.setItem(key, value);\n } catch (err) {\n log_error(err);\n }\n },\n remove: function(key) {\n try {\n storage.removeItem(key);\n } catch (err) {\n log_error(err);\n }\n }\n };\n}\n\n_.localStorage = _storageWrapper(win.localStorage, 'localStorage', localStorageSupported);\n_.sessionStorage = _storageWrapper(win.sessionStorage, 'sessionStorage', sessionStorageSupported);\n\n_.register_event = (function() {\n // written by Dean Edwards, 2005\n // with input from Tino Zijdel - crisp@xs4all.nl\n // with input from Carl Sverre - mail@carlsverre.com\n // with input from Mixpanel\n // http://dean.edwards.name/weblog/2005/10/add-event/\n // https://gist.github.com/1930440\n\n /**\n * @param {Object} element\n * @param {string} type\n * @param {function(...*)} handler\n * @param {boolean=} oldSchool\n * @param {boolean=} useCapture\n */\n var register_event = function(element, type, handler, oldSchool, useCapture) {\n if (!element) {\n console$1.error('No valid element provided to register_event');\n return;\n }\n\n if (element.addEventListener && !oldSchool) {\n element.addEventListener(type, handler, !!useCapture);\n } else {\n var ontype = 'on' + type;\n var old_handler = element[ontype]; // can be undefined\n element[ontype] = makeHandler(element, handler, old_handler);\n }\n };\n\n function makeHandler(element, new_handler, old_handlers) {\n var handler = function(event) {\n event = event || fixEvent(win.event);\n\n // this basically happens in firefox whenever another script\n // overwrites the onload callback and doesn't pass the event\n // object to previously defined callbacks. All the browsers\n // that don't define window.event implement addEventListener\n // so the dom_loaded handler will still be fired as usual.\n if (!event) {\n return undefined;\n }\n\n var ret = true;\n var old_result, new_result;\n\n if (_.isFunction(old_handlers)) {\n old_result = old_handlers(event);\n }\n new_result = new_handler.call(element, event);\n\n if ((false === old_result) || (false === new_result)) {\n ret = false;\n }\n\n return ret;\n };\n\n return handler;\n }\n\n function fixEvent(event) {\n if (event) {\n event.preventDefault = fixEvent.preventDefault;\n event.stopPropagation = fixEvent.stopPropagation;\n }\n return event;\n }\n fixEvent.preventDefault = function() {\n this.returnValue = false;\n };\n fixEvent.stopPropagation = function() {\n this.cancelBubble = true;\n };\n\n return register_event;\n})();\n\n\nvar TOKEN_MATCH_REGEX = new RegExp('^(\\\\w*)\\\\[(\\\\w+)([=~\\\\|\\\\^\\\\$\\\\*]?)=?\"?([^\\\\]\"]*)\"?\\\\]$');\n\n_.dom_query = (function() {\n /* document.getElementsBySelector(selector)\n - returns an array of element objects from the current document\n matching the CSS selector. Selectors can contain element names,\n class names and ids and can be nested. For example:\n\n elements = document.getElementsBySelector('div#main p a.external')\n\n Will return an array of all 'a' elements with 'external' in their\n class attribute that are contained inside 'p' elements that are\n contained inside the 'div' element which has id=\"main\"\n\n New in version 0.4: Support for CSS2 and CSS3 attribute selectors:\n See http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\n Version 0.4 - Simon Willison, March 25th 2003\n -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows\n -- Opera 7 fails\n\n Version 0.5 - Carl Sverre, Jan 7th 2013\n -- Now uses jQuery-esque `hasClass` for testing class name\n equality. This fixes a bug related to '-' characters being\n considered not part of a 'word' in regex.\n */\n\n function getAllChildren(e) {\n // Returns all children of element. Workaround required for IE5/Windows. Ugh.\n return e.all ? e.all : e.getElementsByTagName('*');\n }\n\n var bad_whitespace = /[\\t\\r\\n]/g;\n\n function hasClass(elem, selector) {\n var className = ' ' + selector + ' ';\n return ((' ' + elem.className + ' ').replace(bad_whitespace, ' ').indexOf(className) >= 0);\n }\n\n function getElementsBySelector(selector) {\n // Attempt to fail gracefully in lesser browsers\n if (!document$1.getElementsByTagName) {\n return [];\n }\n // Split selector in to tokens\n var tokens = selector.split(' ');\n var token, bits, tagName, found, foundCount, i, j, k, elements, currentContextIndex;\n var currentContext = [document$1];\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i].replace(/^\\s+/, '').replace(/\\s+$/, '');\n if (token.indexOf('#') > -1) {\n // Token is an ID selector\n bits = token.split('#');\n tagName = bits[0];\n var id = bits[1];\n var element = document$1.getElementById(id);\n if (!element || (tagName && element.nodeName.toLowerCase() != tagName)) {\n // element not found or tag with that ID not found, return false\n return [];\n }\n // Set currentContext to contain just this element\n currentContext = [element];\n continue; // Skip to next token\n }\n if (token.indexOf('.') > -1) {\n // Token contains a class selector\n bits = token.split('.');\n tagName = bits[0];\n var className = bits[1];\n if (!tagName) {\n tagName = '*';\n }\n // Get elements matching tag, filter them for class selector\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (found[j].className &&\n _.isString(found[j].className) && // some SVG elements have classNames which are not strings\n hasClass(found[j], className)\n ) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n continue; // Skip to next token\n }\n // Code to deal with attribute selectors\n var token_match = token.match(TOKEN_MATCH_REGEX);\n if (token_match) {\n tagName = token_match[1];\n var attrName = token_match[2];\n var attrOperator = token_match[3];\n var attrValue = token_match[4];\n if (!tagName) {\n tagName = '*';\n }\n // Grab all of the tagName elements within current context\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n var checkFunction; // This function will be used to filter the elements\n switch (attrOperator) {\n case '=': // Equality\n checkFunction = function(e) {\n return (e.getAttribute(attrName) == attrValue);\n };\n break;\n case '~': // Match one of space seperated words\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('\\\\b' + attrValue + '\\\\b')));\n };\n break;\n case '|': // Match start with value followed by optional hyphen\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('^' + attrValue + '-?')));\n };\n break;\n case '^': // Match starts with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) === 0);\n };\n break;\n case '$': // Match ends with value - fails with \"Warning\" in Opera 7\n checkFunction = function(e) {\n return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length);\n };\n break;\n case '*': // Match ends with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) > -1);\n };\n break;\n default:\n // Just test for existence of attribute\n checkFunction = function(e) {\n return e.getAttribute(attrName);\n };\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (checkFunction(found[j])) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);\n continue; // Skip to next token\n }\n // If we get here, token is JUST an element (not a class or ID selector)\n tagName = token;\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n elements = currentContext[j].getElementsByTagName(tagName);\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = found;\n }\n return currentContext;\n }\n\n return function(query) {\n if (_.isElement(query)) {\n return [query];\n } else if (_.isObject(query) && !_.isUndefined(query.length)) {\n return query;\n } else {\n return getElementsBySelector.call(this, query);\n }\n };\n})();\n\nvar CAMPAIGN_KEYWORDS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term', 'utm_id', 'utm_source_platform','utm_campaign_id', 'utm_creative_format', 'utm_marketing_tactic'];\nvar CLICK_IDS = ['dclid', 'fbclid', 'gclid', 'ko_click_id', 'li_fat_id', 'msclkid', 'sccid', 'ttclid', 'twclid', 'wbraid'];\n\n_.info = {\n campaignParams: function(default_value) {\n var kw = '',\n params = {};\n _.each(CAMPAIGN_KEYWORDS, function(kwkey) {\n kw = _.getQueryParam(document$1.URL, kwkey);\n if (kw.length) {\n params[kwkey] = kw;\n } else if (default_value !== undefined) {\n params[kwkey] = default_value;\n }\n });\n\n return params;\n },\n\n clickParams: function() {\n var id = '',\n params = {};\n _.each(CLICK_IDS, function(idkey) {\n id = _.getQueryParam(document$1.URL, idkey);\n if (id.length) {\n params[idkey] = id;\n }\n });\n\n return params;\n },\n\n marketingParams: function() {\n return _.extend(_.info.campaignParams(), _.info.clickParams());\n },\n\n searchEngine: function(referrer) {\n if (referrer.search('https?://(.*)google.([^/?]*)') === 0) {\n return 'google';\n } else if (referrer.search('https?://(.*)bing.com') === 0) {\n return 'bing';\n } else if (referrer.search('https?://(.*)yahoo.com') === 0) {\n return 'yahoo';\n } else if (referrer.search('https?://(.*)duckduckgo.com') === 0) {\n return 'duckduckgo';\n } else {\n return null;\n }\n },\n\n searchInfo: function(referrer) {\n var search = _.info.searchEngine(referrer),\n param = (search != 'yahoo') ? 'q' : 'p',\n ret = {};\n\n if (search !== null) {\n ret['$search_engine'] = search;\n\n var keyword = _.getQueryParam(referrer, param);\n if (keyword.length) {\n ret['mp_keyword'] = keyword;\n }\n }\n\n return ret;\n },\n\n /**\n * This function detects which browser is running this script.\n * The order of the checks are important since many user agents\n * include key words used in later checks.\n */\n browser: function(user_agent, vendor, opera) {\n vendor = vendor || ''; // vendor is undefined for at least IE9\n if (opera || _.includes(user_agent, ' OPR/')) {\n if (_.includes(user_agent, 'Mini')) {\n return 'Opera Mini';\n }\n return 'Opera';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (_.includes(user_agent, 'IEMobile') || _.includes(user_agent, 'WPDesktop')) {\n return 'Internet Explorer Mobile';\n } else if (_.includes(user_agent, 'SamsungBrowser/')) {\n // https://developer.samsung.com/internet/user-agent-string-format\n return 'Samsung Internet';\n } else if (_.includes(user_agent, 'Edge') || _.includes(user_agent, 'Edg/')) {\n return 'Microsoft Edge';\n } else if (_.includes(user_agent, 'FBIOS')) {\n return 'Facebook Mobile';\n } else if (_.includes(user_agent, 'Whale/')) {\n // https://user-agents.net/browsers/whale-browser\n return 'Whale Browser';\n } else if (_.includes(user_agent, 'Chrome')) {\n return 'Chrome';\n } else if (_.includes(user_agent, 'CriOS')) {\n return 'Chrome iOS';\n } else if (_.includes(user_agent, 'UCWEB') || _.includes(user_agent, 'UCBrowser')) {\n return 'UC Browser';\n } else if (_.includes(user_agent, 'FxiOS')) {\n return 'Firefox iOS';\n } else if (_.includes(vendor, 'Apple')) {\n if (_.includes(user_agent, 'Mobile')) {\n return 'Mobile Safari';\n }\n return 'Safari';\n } else if (_.includes(user_agent, 'Android')) {\n return 'Android Mobile';\n } else if (_.includes(user_agent, 'Konqueror')) {\n return 'Konqueror';\n } else if (_.includes(user_agent, 'Firefox')) {\n return 'Firefox';\n } else if (_.includes(user_agent, 'MSIE') || _.includes(user_agent, 'Trident/')) {\n return 'Internet Explorer';\n } else if (_.includes(user_agent, 'Gecko')) {\n return 'Mozilla';\n } else {\n return '';\n }\n },\n\n /**\n * This function detects which browser version is running this script,\n * parsing major and minor version (e.g., 42.1). User agent strings from:\n * http://www.useragentstring.com/pages/useragentstring.php\n */\n browserVersion: function(userAgent, vendor, opera) {\n var browser = _.info.browser(userAgent, vendor, opera);\n var versionRegexs = {\n 'Internet Explorer Mobile': /rv:(\\d+(\\.\\d+)?)/,\n 'Microsoft Edge': /Edge?\\/(\\d+(\\.\\d+)?)/,\n 'Chrome': /Chrome\\/(\\d+(\\.\\d+)?)/,\n 'Chrome iOS': /CriOS\\/(\\d+(\\.\\d+)?)/,\n 'UC Browser' : /(UCBrowser|UCWEB)\\/(\\d+(\\.\\d+)?)/,\n 'Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Mobile Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Opera': /(Opera|OPR)\\/(\\d+(\\.\\d+)?)/,\n 'Firefox': /Firefox\\/(\\d+(\\.\\d+)?)/,\n 'Firefox iOS': /FxiOS\\/(\\d+(\\.\\d+)?)/,\n 'Konqueror': /Konqueror:(\\d+(\\.\\d+)?)/,\n 'BlackBerry': /BlackBerry (\\d+(\\.\\d+)?)/,\n 'Android Mobile': /android\\s(\\d+(\\.\\d+)?)/,\n 'Samsung Internet': /SamsungBrowser\\/(\\d+(\\.\\d+)?)/,\n 'Internet Explorer': /(rv:|MSIE )(\\d+(\\.\\d+)?)/,\n 'Mozilla': /rv:(\\d+(\\.\\d+)?)/,\n 'Whale Browser': /Whale\\/(\\d+(\\.\\d+)?)/\n };\n var regex = versionRegexs[browser];\n if (regex === undefined) {\n return null;\n }\n var matches = userAgent.match(regex);\n if (!matches) {\n return null;\n }\n return parseFloat(matches[matches.length - 2]);\n },\n\n os: function() {\n var a = userAgent;\n if (/Windows/i.test(a)) {\n if (/Phone/.test(a) || /WPDesktop/.test(a)) {\n return 'Windows Phone';\n }\n return 'Windows';\n } else if (/(iPhone|iPad|iPod)/.test(a)) {\n return 'iOS';\n } else if (/Android/.test(a)) {\n return 'Android';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(a)) {\n return 'BlackBerry';\n } else if (/Mac/i.test(a)) {\n return 'Mac OS X';\n } else if (/Linux/.test(a)) {\n return 'Linux';\n } else if (/CrOS/.test(a)) {\n return 'Chrome OS';\n } else {\n return '';\n }\n },\n\n device: function(user_agent) {\n if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return 'Windows Phone';\n } else if (/iPad/.test(user_agent)) {\n return 'iPad';\n } else if (/iPod/.test(user_agent)) {\n return 'iPod Touch';\n } else if (/iPhone/.test(user_agent)) {\n return 'iPhone';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (/Android/.test(user_agent)) {\n return 'Android';\n } else {\n return '';\n }\n },\n\n referringDomain: function(referrer) {\n var split = referrer.split('/');\n if (split.length >= 3) {\n return split[2];\n }\n return '';\n },\n\n currentUrl: function() {\n return win.location.href;\n },\n\n properties: function(extra_props) {\n if (typeof extra_props !== 'object') {\n extra_props = {};\n }\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera),\n '$referrer': document$1.referrer,\n '$referring_domain': _.info.referringDomain(document$1.referrer),\n '$device': _.info.device(userAgent)\n }), {\n '$current_url': _.info.currentUrl(),\n '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera),\n '$screen_height': screen.height,\n '$screen_width': screen.width,\n 'mp_lib': 'web',\n '$lib_version': Config.LIB_VERSION,\n '$insert_id': cheap_guid(),\n 'time': _.timestamp() / 1000 // epoch time in seconds\n }, _.strip_empty_properties(extra_props));\n },\n\n people_properties: function() {\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera)\n }), {\n '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera)\n });\n },\n\n mpPageViewProperties: function() {\n return _.strip_empty_properties({\n 'current_page_title': document$1.title,\n 'current_domain': win.location.hostname,\n 'current_url_path': win.location.pathname,\n 'current_url_protocol': win.location.protocol,\n 'current_url_search': win.location.search\n });\n }\n};\n\n/**\n * Returns a throttled function that will only run at most every `waitMs` and returns a promise that resolves with the next invocation.\n * Throttled calls will build up a batch of args and invoke the callback with all args since the last invocation.\n */\nvar batchedThrottle = function (fn, waitMs) {\n var timeoutPromise = null;\n var throttledItems = [];\n return function (item) {\n var self = this;\n throttledItems.push(item);\n\n if (!timeoutPromise) {\n timeoutPromise = new PromisePolyfill(function (resolve) {\n setTimeout(function () {\n var returnValue = fn.apply(self, [throttledItems]);\n timeoutPromise = null;\n throttledItems = [];\n resolve(returnValue);\n }, waitMs);\n });\n }\n return timeoutPromise;\n };\n};\n\nvar cheap_guid = function(maxlen) {\n var guid = Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10);\n return maxlen ? guid.substring(0, maxlen) : guid;\n};\n\n/**\n * Generates a W3C traceparent header for easy interop with distributed tracing systems i.e Open Telemetry\n * https://www.w3.org/TR/trace-context/#traceparent-header\n*/\nvar generateTraceparent = function() {\n var traceID = _.UUID().replace(/-/g, '');\n var parentID = _.UUID().replace(/-/g, '').substring(0, 16);\n\n // Sampled trace\n var traceFlags = '01';\n\n return '00-' + traceID + '-' + parentID + '-' + traceFlags;\n};\n\n// naive way to extract domain name (example.com) from full hostname (my.sub.example.com)\nvar SIMPLE_DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]*\\.[a-z]+$/i;\n// this next one attempts to account for some ccSLDs, e.g. extracting oxford.ac.uk from www.oxford.ac.uk\nvar DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]+\\.[a-z.]{2,6}$/i;\n/**\n * Attempts to extract main domain name from full hostname, using a few blunt heuristics. For\n * common TLDs like .com/.org that always have a simple SLD.TLD structure (example.com), we\n * simply extract the last two .-separated parts of the hostname (SIMPLE_DOMAIN_MATCH_REGEX).\n * For others, we attempt to account for short ccSLD+TLD combos (.ac.uk) with the legacy\n * DOMAIN_MATCH_REGEX (kept to maintain backwards compatibility with existing Mixpanel\n * integrations). The only _reliable_ way to extract domain from hostname is with an up-to-date\n * list like at https://publicsuffix.org/ so for cases that this helper fails at, the SDK\n * offers the 'cookie_domain' config option to set it explicitly.\n * @example\n * extract_domain('my.sub.example.com')\n * // 'example.com'\n */\nvar extract_domain = function(hostname) {\n var domain_regex = DOMAIN_MATCH_REGEX;\n var parts = hostname.split('.');\n var tld = parts[parts.length - 1];\n if (tld.length > 4 || tld === 'com' || tld === 'org') {\n domain_regex = SIMPLE_DOMAIN_MATCH_REGEX;\n }\n var matches = hostname.match(domain_regex);\n return matches ? matches[0] : '';\n};\n\n/**\n * Check whether we have network connection. default to true for browsers that don't support navigator.onLine (IE)\n * @returns {boolean}\n */\nvar isOnline = function() {\n var onLine = win.navigator['onLine'];\n return _.isUndefined(onLine) || onLine;\n};\n\nvar NOOP_FUNC = function () {};\n\nvar JSONStringify = null, JSONParse = null;\nif (typeof JSON !== 'undefined') {\n JSONStringify = JSON.stringify;\n JSONParse = JSON.parse;\n}\nJSONStringify = JSONStringify || _.JSONEncode;\nJSONParse = JSONParse || _.JSONDecode;\n\n/**\n * Determines if CompressionStream API should be used.\n * Returns false for Safari 16.4 and 16.5 which have breaking CompressionStream bugs.\n * https://bugs.webkit.org/show_bug.cgi?id=254021\n * fixed in 16.6 https://developer.apple.com/documentation/safari-release-notes/safari-16_6-release-notes\n */\nvar canUseCompressionStream = function(userAgent, vendor, opera) {\n if (!win.CompressionStream) {\n return false;\n }\n\n var browser = _.info.browser(userAgent, vendor, opera);\n var version = _.info.browserVersion(userAgent, vendor, opera);\n if (browser === 'Safari' || browser === 'Mobile Safari') {\n if (version >= 16.4 && version < 16.6) {\n return false;\n }\n }\n\n return true;\n};\n\n// UNMINIFIED EXPORTS (for closure compiler)\n_['info'] = _.info;\n_['info']['browser'] = _.info.browser;\n_['info']['browserVersion'] = _.info.browserVersion;\n_['info']['device'] = _.info.device;\n_['info']['properties'] = _.info.properties;\n_['isBlockedUA'] = _.isBlockedUA;\n_['isEmptyObject'] = _.isEmptyObject;\n_['isObject'] = _.isObject;\n_['JSONDecode'] = _.JSONDecode;\n_['JSONEncode'] = _.JSONEncode;\n_['toArray'] = _.toArray;\n_['NPO'] = NpoPromise;\n\nvar MIXPANEL_DB_NAME = 'mixpanelBrowserDb';\n\nvar RECORDING_EVENTS_STORE_NAME = 'mixpanelRecordingEvents';\nvar RECORDING_REGISTRY_STORE_NAME = 'mixpanelRecordingRegistry';\n\n// note: increment the version number when adding new object stores\nvar DB_VERSION = 1;\nvar OBJECT_STORES = [RECORDING_EVENTS_STORE_NAME, RECORDING_REGISTRY_STORE_NAME];\n\n/**\n * @type {import('./wrapper').StorageWrapper}\n */\nvar IDBStorageWrapper = function (storeName) {\n /**\n * @type {Promise|null}\n */\n this.dbPromise = null;\n this.storeName = storeName;\n};\n\nIDBStorageWrapper.prototype._openDb = function () {\n return new PromisePolyfill(function (resolve, reject) {\n var openRequest = win.indexedDB.open(MIXPANEL_DB_NAME, DB_VERSION);\n openRequest['onerror'] = function () {\n reject(openRequest.error);\n };\n\n openRequest['onsuccess'] = function () {\n resolve(openRequest.result);\n };\n\n openRequest['onupgradeneeded'] = function (ev) {\n var db = ev.target.result;\n\n OBJECT_STORES.forEach(function (storeName) {\n db.createObjectStore(storeName);\n });\n };\n });\n};\n\nIDBStorageWrapper.prototype.init = function () {\n if (!win.indexedDB) {\n return PromisePolyfill.reject('indexedDB is not supported in this browser');\n }\n\n if (!this.dbPromise) {\n this.dbPromise = this._openDb();\n }\n\n return this.dbPromise\n .then(function (dbOrError) {\n if (dbOrError instanceof win['IDBDatabase']) {\n return PromisePolyfill.resolve();\n } else {\n return PromisePolyfill.reject(dbOrError);\n }\n });\n};\n\nIDBStorageWrapper.prototype.isInitialized = function () {\n return !!this.dbPromise;\n};\n\n/**\n * @param {IDBTransactionMode} mode\n * @param {function(IDBObjectStore): void} storeCb\n */\nIDBStorageWrapper.prototype.makeTransaction = function (mode, storeCb) {\n var storeName = this.storeName;\n var doTransaction = function (db) {\n return new PromisePolyfill(function (resolve, reject) {\n var transaction = db.transaction(storeName, mode);\n transaction.oncomplete = function () {\n resolve(transaction);\n };\n transaction.onabort = transaction.onerror = function () {\n reject(transaction.error);\n };\n\n storeCb(transaction.objectStore(storeName));\n });\n };\n\n return this.dbPromise\n .then(doTransaction)\n .catch(function (err) {\n if (err && err['name'] === 'InvalidStateError') {\n // try reopening the DB if the connection is closed\n this.dbPromise = this._openDb();\n return this.dbPromise.then(doTransaction);\n } else {\n return PromisePolyfill.reject(err);\n }\n }.bind(this));\n};\n\nIDBStorageWrapper.prototype.setItem = function (key, value) {\n return this.makeTransaction('readwrite', function (objectStore) {\n objectStore.put(value, key);\n });\n};\n\nIDBStorageWrapper.prototype.getItem = function (key) {\n var req;\n return this.makeTransaction('readonly', function (objectStore) {\n req = objectStore.get(key);\n }).then(function () {\n return req.result;\n });\n};\n\nIDBStorageWrapper.prototype.removeItem = function (key) {\n return this.makeTransaction('readwrite', function (objectStore) {\n objectStore.delete(key);\n });\n};\n\nIDBStorageWrapper.prototype.getAll = function () {\n var req;\n return this.makeTransaction('readonly', function (objectStore) {\n req = objectStore.getAll();\n }).then(function () {\n return req.result;\n });\n};\n\n/**\n * GDPR utils\n *\n * The General Data Protection Regulation (GDPR) is a regulation in EU law on data protection\n * and privacy for all individuals within the European Union. It addresses the export of personal\n * data outside the EU. The GDPR aims primarily to give control back to citizens and residents\n * over their personal data and to simplify the regulatory environment for international business\n * by unifying the regulation within the EU.\n *\n * This set of utilities is intended to enable opt in/out functionality in the Mixpanel JS SDK.\n * These functions are used internally by the SDK and are not intended to be publicly exposed.\n */\n\n\n/**\n * A function used to track a Mixpanel event (e.g. MixpanelLib.track)\n * @callback trackFunction\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n */\n\n/** Public **/\n\nvar GDPR_DEFAULT_PERSISTENCE_PREFIX = '__mp_opt_in_out_';\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction optIn(token, options) {\n _optInOut(true, token, options);\n}\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-out cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-out cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-out cookie is set as secure or not\n */\nfunction optOut(token, options) {\n _optInOut(false, token, options);\n}\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} whether the user has opted in to the given opt type\n */\nfunction hasOptedIn(token, options) {\n return _getStorageValue(token, options) === '1';\n}\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the user has opted out of the given opt type\n */\nfunction hasOptedOut(token, options) {\n if (_hasDoNotTrackFlagOn(options)) {\n console$1.warn('This browser has \"Do Not Track\" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the \"Do Not Track\" browser setting, initialize the Mixpanel instance with the config \"ignore_dnt: true\"');\n return true;\n }\n var optedOut = _getStorageValue(token, options) === '0';\n if (optedOut) {\n console$1.warn('You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data.');\n }\n return optedOut;\n}\n\n/**\n * Wrap a MixpanelLib method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelLib(method) {\n return _addOptOutCheck(method, function(name) {\n return this.get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelPeople method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelPeople(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelGroup method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelGroup(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction clearOptInOut(token, options) {\n options = options || {};\n _getStorage(options).remove(\n _getStorageKey(token, options), !!options.crossSubdomainCookie, options.cookieDomain\n );\n}\n\n/** Private **/\n\n/**\n * Get storage util\n * @param {Object} [options]\n * @param {string} [options.persistenceType]\n * @returns {object} either _.cookie or _.localstorage\n */\nfunction _getStorage(options) {\n options = options || {};\n return options.persistenceType === 'localStorage' ? _.localStorage : _.cookie;\n}\n\n/**\n * Get the name of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the name of the cookie for the given opt type\n */\nfunction _getStorageKey(token, options) {\n options = options || {};\n return (options.persistencePrefix || GDPR_DEFAULT_PERSISTENCE_PREFIX) + token;\n}\n\n/**\n * Get the value of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the value of the cookie for the given opt type\n */\nfunction _getStorageValue(token, options) {\n return _getStorage(options).get(_getStorageKey(token, options));\n}\n\n/**\n * Check whether the user has set the DNT/doNotTrack setting to true in their browser\n * @param {Object} [options]\n * @param {string} [options.window] - alternate window object to check; used to force various DNT settings in browser tests\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the DNT setting is true\n */\nfunction _hasDoNotTrackFlagOn(options) {\n if (options && options.ignoreDnt) {\n return false;\n }\n var win$1 = (options && options.window) || win;\n var nav = win$1['navigator'] || {};\n var hasDntOn = false;\n\n _.each([\n nav['doNotTrack'], // standard\n nav['msDoNotTrack'],\n win$1['doNotTrack']\n ], function(dntValue) {\n if (_.includes([true, 1, '1', 'yes'], dntValue)) {\n hasDntOn = true;\n }\n });\n\n return hasDntOn;\n}\n\n/**\n * Set cookie/localstorage for the user indicating that they are opted in or out for the given opt type\n * @param {boolean} optValue - whether to opt the user in or out for the given opt type\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction _optInOut(optValue, token, options) {\n if (!_.isString(token) || !token.length) {\n console$1.error('gdpr.' + (optValue ? 'optIn' : 'optOut') + ' called with an invalid token');\n return;\n }\n\n options = options || {};\n\n _getStorage(options).set(\n _getStorageKey(token, options),\n optValue ? 1 : 0,\n _.isNumber(options.cookieExpiration) ? options.cookieExpiration : null,\n !!options.crossSubdomainCookie,\n !!options.secureCookie,\n !!options.crossSiteCookie,\n options.cookieDomain\n );\n\n if (options.track && optValue) { // only track event if opting in (optValue=true)\n options.track(options.trackEventName || '$opt_in', options.trackProperties, {\n 'send_immediately': true\n });\n }\n}\n\n/**\n * Wrap a method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @param {function} getConfigValue - getter function for the Mixpanel API token and other options to be used with opt-out check\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction _addOptOutCheck(method, getConfigValue) {\n return function() {\n var optedOut = false;\n\n try {\n var token = getConfigValue.call(this, 'token');\n var ignoreDnt = getConfigValue.call(this, 'ignore_dnt');\n var persistenceType = getConfigValue.call(this, 'opt_out_tracking_persistence_type');\n var persistencePrefix = getConfigValue.call(this, 'opt_out_tracking_cookie_prefix');\n var win = getConfigValue.call(this, 'window'); // used to override window during browser tests\n\n if (token) { // if there was an issue getting the token, continue method execution as normal\n optedOut = hasOptedOut(token, {\n ignoreDnt: ignoreDnt,\n persistenceType: persistenceType,\n persistencePrefix: persistencePrefix,\n window: win\n });\n }\n } catch(err) {\n console$1.error('Unexpected error when checking tracking opt-out status: ' + err);\n }\n\n if (!optedOut) {\n return method.apply(this, arguments);\n }\n\n var callback = arguments[arguments.length - 1];\n if (typeof(callback) === 'function') {\n callback(0);\n }\n\n return;\n };\n}\n\nvar logger$6 = console_with_prefix('lock');\n\n/**\n * SharedLock: a mutex built on HTML5 localStorage, to ensure that only one browser\n * window/tab at a time will be able to access shared resources.\n *\n * Based on the Alur and Taubenfeld fast lock\n * (http://www.cs.rochester.edu/research/synchronization/pseudocode/fastlock.html)\n * with an added timeout to ensure there will be eventual progress in the event\n * that a window is closed in the middle of the callback.\n *\n * Implementation based on the original version by David Wolever (https://github.com/wolever)\n * at https://gist.github.com/wolever/5fd7573d1ef6166e8f8c4af286a69432.\n *\n * @example\n * const myLock = new SharedLock('some-key');\n * myLock.withLock(function() {\n * console.log('I hold the mutex!');\n * });\n *\n * @constructor\n */\nvar SharedLock = function(key, options) {\n options = options || {};\n\n this.storageKey = key;\n this.storage = options.storage || win.localStorage;\n this.pollIntervalMS = options.pollIntervalMS || 100;\n this.timeoutMS = options.timeoutMS || 2000;\n\n // dependency-inject promise implementation for testing purposes\n this.promiseImpl = options.promiseImpl || PromisePolyfill;\n};\n\n// pass in a specific pid to test contention scenarios; otherwise\n// it is chosen randomly for each acquisition attempt\nSharedLock.prototype.withLock = function(lockedCB, pid) {\n var Promise = this.promiseImpl;\n return new Promise(_.bind(function (resolve, reject) {\n var i = pid || (new Date().getTime() + '|' + Math.random());\n var startTime = new Date().getTime();\n var key = this.storageKey;\n var pollIntervalMS = this.pollIntervalMS;\n var timeoutMS = this.timeoutMS;\n var storage = this.storage;\n\n var keyX = key + ':X';\n var keyY = key + ':Y';\n var keyZ = key + ':Z';\n\n var delay = function(cb) {\n if (new Date().getTime() - startTime > timeoutMS) {\n logger$6.error('Timeout waiting for mutex on ' + key + '; clearing lock. [' + i + ']');\n storage.removeItem(keyZ);\n storage.removeItem(keyY);\n loop();\n return;\n }\n setTimeout(function() {\n try {\n cb();\n } catch(err) {\n reject(err);\n }\n }, pollIntervalMS * (Math.random() + 0.1));\n };\n\n var waitFor = function(predicate, cb) {\n if (predicate()) {\n cb();\n } else {\n delay(function() {\n waitFor(predicate, cb);\n });\n }\n };\n\n var getSetY = function() {\n var valY = storage.getItem(keyY);\n if (valY && valY !== i) { // if Y == i then this process already has the lock (useful for test cases)\n return false;\n } else {\n storage.setItem(keyY, i);\n if (storage.getItem(keyY) === i) {\n return true;\n } else {\n if (!localStorageSupported(storage, true)) {\n reject(new Error('localStorage support dropped while acquiring lock'));\n }\n return false;\n }\n }\n };\n\n var loop = function() {\n storage.setItem(keyX, i);\n\n waitFor(getSetY, function() {\n if (storage.getItem(keyX) === i) {\n criticalSection();\n return;\n }\n\n delay(function() {\n if (storage.getItem(keyY) !== i) {\n loop();\n return;\n }\n waitFor(function() {\n return !storage.getItem(keyZ);\n }, criticalSection);\n });\n });\n };\n\n var criticalSection = function() {\n storage.setItem(keyZ, '1');\n var removeLock = function () {\n storage.removeItem(keyZ);\n if (storage.getItem(keyY) === i) {\n storage.removeItem(keyY);\n }\n if (storage.getItem(keyX) === i) {\n storage.removeItem(keyX);\n }\n };\n\n lockedCB()\n .then(function (ret) {\n removeLock();\n resolve(ret);\n })\n .catch(function (err) {\n removeLock();\n reject(err);\n });\n };\n\n try {\n if (localStorageSupported(storage, true)) {\n loop();\n } else {\n throw new Error('localStorage support check failed');\n }\n } catch(err) {\n reject(err);\n }\n }, this));\n};\n\n/**\n * @type {import('./wrapper').StorageWrapper}\n */\nvar LocalStorageWrapper = function (storageOverride) {\n this.storage = storageOverride || win.localStorage;\n};\n\nLocalStorageWrapper.prototype.init = function () {\n return PromisePolyfill.resolve();\n};\n\nLocalStorageWrapper.prototype.isInitialized = function () {\n return true;\n};\n\nLocalStorageWrapper.prototype.setItem = function (key, value) {\n return new PromisePolyfill(_.bind(function (resolve, reject) {\n try {\n this.storage.setItem(key, JSONStringify(value));\n } catch (e) {\n reject(e);\n }\n resolve();\n }, this));\n};\n\nLocalStorageWrapper.prototype.getItem = function (key) {\n return new PromisePolyfill(_.bind(function (resolve, reject) {\n var item;\n try {\n item = JSONParse(this.storage.getItem(key));\n } catch (e) {\n reject(e);\n }\n resolve(item);\n }, this));\n};\n\nLocalStorageWrapper.prototype.removeItem = function (key) {\n return new PromisePolyfill(_.bind(function (resolve, reject) {\n try {\n this.storage.removeItem(key);\n } catch (e) {\n reject(e);\n }\n resolve();\n }, this));\n};\n\nvar logger$5 = console_with_prefix('batch');\n\n/**\n * RequestQueue: queue for batching API requests with localStorage backup for retries.\n * Maintains an in-memory queue which represents the source of truth for the current\n * page, but also writes all items out to a copy in the browser's localStorage, which\n * can be read on subsequent pageloads and retried. For batchability, all the request\n * items in the queue should be of the same type (events, people updates, group updates)\n * so they can be sent in a single request to the same API endpoint.\n *\n * LocalStorage keying and locking: In order for reloads and subsequent pageloads of\n * the same site to access the same persisted data, they must share the same localStorage\n * key (for instance based on project token and queue type). Therefore access to the\n * localStorage entry is guarded by an asynchronous mutex (SharedLock) to prevent\n * simultaneously open windows/tabs from overwriting each other's data (which would lead\n * to data loss in some situations).\n * @constructor\n */\nvar RequestQueue = function (storageKey, options) {\n options = options || {};\n this.storageKey = storageKey;\n this.usePersistence = options.usePersistence;\n if (this.usePersistence) {\n this.queueStorage = options.queueStorage || new LocalStorageWrapper();\n this.lock = new SharedLock(storageKey, {\n storage: options.sharedLockStorage || win.localStorage,\n timeoutMS: options.sharedLockTimeoutMS,\n });\n }\n this.reportError = options.errorReporter || _.bind(logger$5.error, logger$5);\n\n this.pid = options.pid || null; // pass pid to test out storage lock contention scenarios\n\n this.memQueue = [];\n this.initialized = false;\n\n if (options.enqueueThrottleMs) {\n this.enqueuePersisted = batchedThrottle(_.bind(this._enqueuePersisted, this), options.enqueueThrottleMs);\n } else {\n this.enqueuePersisted = _.bind(function (queueEntry) {\n return this._enqueuePersisted([queueEntry]);\n }, this);\n }\n};\n\nRequestQueue.prototype.ensureInit = function () {\n if (this.initialized || !this.usePersistence) {\n return PromisePolyfill.resolve();\n }\n\n return this.queueStorage\n .init()\n .then(_.bind(function () {\n this.initialized = true;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error initializing queue persistence. Disabling persistence', err);\n this.initialized = true;\n this.usePersistence = false;\n }, this));\n};\n\n/**\n * Add one item to queues (memory and localStorage). The queued entry includes\n * the given item along with an auto-generated ID and a \"flush-after\" timestamp.\n * It is expected that the item will be sent over the network and dequeued\n * before the flush-after time; if this doesn't happen it is considered orphaned\n * (e.g., the original tab where it was enqueued got closed before it could be\n * sent) and the item can be sent by any tab that finds it in localStorage.\n *\n * The final callback param is called with a param indicating success or\n * failure of the enqueue operation; it is asynchronous because the localStorage\n * lock is asynchronous.\n */\nRequestQueue.prototype.enqueue = function (item, flushInterval) {\n var queueEntry = {\n 'id': cheap_guid(),\n 'flushAfter': new Date().getTime() + flushInterval * 2,\n 'payload': item\n };\n\n if (!this.usePersistence) {\n this.memQueue.push(queueEntry);\n return PromisePolyfill.resolve(true);\n } else {\n return this.enqueuePersisted(queueEntry);\n }\n};\n\nRequestQueue.prototype._enqueuePersisted = function (queueEntries) {\n var enqueueItem = _.bind(function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n return this.saveToStorage(storedQueue.concat(queueEntries));\n }, this))\n .then(_.bind(function (succeeded) {\n // only add to in-memory queue when storage succeeds\n if (succeeded) {\n this.memQueue = this.memQueue.concat(queueEntries);\n }\n\n return succeeded;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error enqueueing items', err, queueEntries);\n return false;\n }, this));\n }, this);\n\n return this.lock\n .withLock(enqueueItem, this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n return false;\n }, this));\n};\n\n/**\n * Read out the given number of queue entries. If this.memQueue\n * has fewer than batchSize items, then look for \"orphaned\" items\n * in the persisted queue (items where the 'flushAfter' time has\n * already passed).\n */\nRequestQueue.prototype.fillBatch = function (batchSize) {\n var batch = this.memQueue.slice(0, batchSize);\n if (this.usePersistence && batch.length < batchSize) {\n // don't need lock just to read events; localStorage is thread-safe\n // and the worst that could happen is a duplicate send of some\n // orphaned events, which will be deduplicated on the server side\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n if (storedQueue.length) {\n // item IDs already in batch; don't duplicate out of storage\n var idsInBatch = {}; // poor man's Set\n _.each(batch, function (item) {\n idsInBatch[item['id']] = true;\n });\n\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n if (new Date().getTime() > item['flushAfter'] && !idsInBatch[item['id']]) {\n item.orphaned = true;\n batch.push(item);\n if (batch.length >= batchSize) {\n break;\n }\n }\n }\n }\n\n return batch;\n }, this));\n } else {\n return PromisePolyfill.resolve(batch);\n }\n};\n\n/**\n * Remove items with matching 'id' from array (immutably)\n * also remove any item without a valid id (e.g., malformed\n * storage entries).\n */\nvar filterOutIDsAndInvalid = function (items, idSet) {\n var filteredItems = [];\n _.each(items, function (item) {\n if (item['id'] && !idSet[item['id']]) {\n filteredItems.push(item);\n }\n });\n return filteredItems;\n};\n\n/**\n * Remove items with matching IDs from both in-memory queue\n * and persisted queue\n */\nRequestQueue.prototype.removeItemsByID = function (ids) {\n var idSet = {}; // poor man's Set\n _.each(ids, function (id) {\n idSet[id] = true;\n });\n\n this.memQueue = filterOutIDsAndInvalid(this.memQueue, idSet);\n if (!this.usePersistence) {\n return PromisePolyfill.resolve(true);\n } else {\n var removeFromStorage = _.bind(function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n storedQueue = filterOutIDsAndInvalid(storedQueue, idSet);\n return this.saveToStorage(storedQueue);\n }, this))\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n // an extra check: did storage report success but somehow\n // the items are still there?\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n if (item['id'] && !!idSet[item['id']]) {\n throw new Error('Item not removed from storage');\n }\n }\n return true;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error removing items', err, ids);\n return false;\n }, this));\n }, this);\n\n return this.lock\n .withLock(removeFromStorage, this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n if (!localStorageSupported(this.lock.storage, true)) {\n // Looks like localStorage writes have stopped working sometime after\n // initialization (probably full), and so nobody can acquire locks\n // anymore. Consider it temporarily safe to remove items without the\n // lock, since nobody's writing successfully anyway.\n return removeFromStorage()\n .then(_.bind(function (success) {\n if (!success) {\n // OK, we couldn't even write out the smaller queue. Try clearing it\n // entirely.\n return this.queueStorage.removeItem(this.storageKey).then(function () {\n return success;\n });\n }\n return success;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error clearing queue', err);\n return false;\n }, this));\n } else {\n return false;\n }\n }, this));\n }\n};\n\n// internal helper for RequestQueue.updatePayloads\nvar updatePayloads = function (existingItems, itemsToUpdate) {\n var newItems = [];\n _.each(existingItems, function (item) {\n var id = item['id'];\n if (id in itemsToUpdate) {\n var newPayload = itemsToUpdate[id];\n if (newPayload !== null) {\n item['payload'] = newPayload;\n newItems.push(item);\n }\n } else {\n // no update\n newItems.push(item);\n }\n });\n return newItems;\n};\n\n/**\n * Update payloads of given items in both in-memory queue and\n * persisted queue. Items set to null are removed from queues.\n */\nRequestQueue.prototype.updatePayloads = function (itemsToUpdate) {\n this.memQueue = updatePayloads(this.memQueue, itemsToUpdate);\n if (!this.usePersistence) {\n return PromisePolyfill.resolve(true);\n } else {\n return this.lock\n .withLock(_.bind(function lockAcquired() {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n storedQueue = updatePayloads(storedQueue, itemsToUpdate);\n return this.saveToStorage(storedQueue);\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error updating items', itemsToUpdate, err);\n return false;\n }, this));\n }, this), this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n return false;\n }, this));\n }\n};\n\n/**\n * Read and parse items array from localStorage entry, handling\n * malformed/missing data if necessary.\n */\nRequestQueue.prototype.readFromStorage = function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.getItem(this.storageKey);\n }, this))\n .then(_.bind(function (storageEntry) {\n if (storageEntry) {\n if (!_.isArray(storageEntry)) {\n this.reportError('Invalid storage entry:', storageEntry);\n storageEntry = null;\n }\n }\n return storageEntry || [];\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error retrieving queue', err);\n return [];\n }, this));\n};\n\n/**\n * Serialize the given items array to localStorage.\n */\nRequestQueue.prototype.saveToStorage = function (queue) {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.setItem(this.storageKey, queue);\n }, this))\n .then(function () {\n return true;\n })\n .catch(_.bind(function (err) {\n this.reportError('Error saving queue', err);\n return false;\n }, this));\n};\n\n/**\n * Clear out queues (memory and localStorage).\n */\nRequestQueue.prototype.clear = function () {\n this.memQueue = [];\n\n if (this.usePersistence) {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.removeItem(this.storageKey);\n }, this));\n } else {\n return PromisePolyfill.resolve();\n }\n};\n\n// maximum interval between request retries after exponential backoff\nvar MAX_RETRY_INTERVAL_MS = 10 * 60 * 1000; // 10 minutes\n\nvar logger$4 = console_with_prefix('batch');\n\n/**\n * RequestBatcher: manages the queueing, flushing, retry etc of requests of one\n * type (events, people, groups).\n * Uses RequestQueue to manage the backing store.\n * @constructor\n */\nvar RequestBatcher = function(storageKey, options) {\n this.errorReporter = options.errorReporter;\n this.queue = new RequestQueue(storageKey, {\n errorReporter: _.bind(this.reportError, this),\n queueStorage: options.queueStorage,\n sharedLockStorage: options.sharedLockStorage,\n sharedLockTimeoutMS: options.sharedLockTimeoutMS,\n usePersistence: options.usePersistence,\n enqueueThrottleMs: options.enqueueThrottleMs\n });\n\n this.libConfig = options.libConfig;\n this.sendRequest = options.sendRequestFunc;\n this.beforeSendHook = options.beforeSendHook;\n this.stopAllBatching = options.stopAllBatchingFunc;\n\n // seed variable batch size + flush interval with configured values\n this.batchSize = this.libConfig['batch_size'];\n this.flushInterval = this.libConfig['batch_flush_interval_ms'];\n\n this.stopped = !this.libConfig['batch_autostart'];\n this.consecutiveRemovalFailures = 0;\n\n // extra client-side dedupe\n this.itemIdsSentSuccessfully = {};\n\n // Make the flush occur at the interval specified by flushIntervalMs, default behavior will attempt consecutive flushes\n // as long as the queue is not empty. This is useful for high-frequency events like Session Replay where we might end up\n // in a request loop and get ratelimited by the server.\n this.flushOnlyOnInterval = options.flushOnlyOnInterval || false;\n\n this._flushPromise = null;\n};\n\n/**\n * Add one item to queue.\n */\nRequestBatcher.prototype.enqueue = function(item) {\n return this.queue.enqueue(item, this.flushInterval);\n};\n\n/**\n * Start flushing batches at the configured time interval. Must call\n * this method upon SDK init in order to send anything over the network.\n */\nRequestBatcher.prototype.start = function() {\n this.stopped = false;\n this.consecutiveRemovalFailures = 0;\n return this.flush();\n};\n\n/**\n * Stop flushing batches. Can be restarted by calling start().\n */\nRequestBatcher.prototype.stop = function() {\n this.stopped = true;\n if (this.timeoutID) {\n clearTimeout(this.timeoutID);\n this.timeoutID = null;\n }\n};\n\n/**\n * Clear out queue.\n */\nRequestBatcher.prototype.clear = function() {\n return this.queue.clear();\n};\n\n/**\n * Restore batch size configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetBatchSize = function() {\n this.batchSize = this.libConfig['batch_size'];\n};\n\n/**\n * Restore flush interval time configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetFlush = function() {\n this.scheduleFlush(this.libConfig['batch_flush_interval_ms']);\n};\n\n/**\n * Schedule the next flush in the given number of milliseconds.\n */\nRequestBatcher.prototype.scheduleFlush = function(flushMS) {\n this.flushInterval = flushMS;\n if (!this.stopped) { // don't schedule anymore if batching has been stopped\n this.timeoutID = setTimeout(_.bind(function() {\n if (!this.stopped) {\n this._flushPromise = this.flush();\n }\n }, this), this.flushInterval);\n }\n};\n\n/**\n * Send a request using the sendRequest callback, but promisified.\n * TODO: sendRequest should be promisified in the first place.\n */\nRequestBatcher.prototype.sendRequestPromise = function(data, options) {\n return new PromisePolyfill(_.bind(function(resolve) {\n this.sendRequest(data, options, resolve);\n }, this));\n};\n\n\n/**\n * Flush one batch to network. Depending on success/failure modes, it will either\n * remove the batch from the queue or leave it in for retry, and schedule the next\n * flush. In cases of most network or API failures, it will back off exponentially\n * when retrying.\n * @param {Object} [options]\n * @param {boolean} [options.sendBeacon] - whether to send batch with\n * navigator.sendBeacon (only useful for sending batches before page unloads, as\n * sendBeacon offers no callbacks or status indications)\n */\nRequestBatcher.prototype.flush = function(options) {\n if (this.requestInProgress) {\n logger$4.log('Flush: Request already in progress');\n return PromisePolyfill.resolve();\n }\n\n this.requestInProgress = true;\n\n options = options || {};\n var timeoutMS = this.libConfig['batch_request_timeout_ms'];\n var startTime = new Date().getTime();\n var currentBatchSize = this.batchSize;\n\n return this.queue.fillBatch(currentBatchSize)\n .then(_.bind(function(batch) {\n\n // if there's more items in the queue than the batch size, attempt\n // to flush again after the current batch is done.\n var attemptSecondaryFlush = batch.length === currentBatchSize;\n var dataForRequest = [];\n var transformedItems = {};\n _.each(batch, function(item) {\n var payload = item['payload'];\n if (this.beforeSendHook && !item.orphaned) {\n payload = this.beforeSendHook(payload);\n }\n if (payload) {\n // mp_sent_by_lib_version prop captures which lib version actually\n // sends each event (regardless of which version originally queued\n // it for sending)\n if (payload['event'] && payload['properties']) {\n payload['properties'] = _.extend(\n {},\n payload['properties'],\n {'mp_sent_by_lib_version': Config.LIB_VERSION}\n );\n }\n var addPayload = true;\n var itemId = item['id'];\n if (itemId) {\n if ((this.itemIdsSentSuccessfully[itemId] || 0) > 5) {\n this.reportError('[dupe] item ID sent too many times, not sending', {\n item: item,\n batchSize: batch.length,\n timesSent: this.itemIdsSentSuccessfully[itemId]\n });\n addPayload = false;\n }\n } else {\n this.reportError('[dupe] found item with no ID', {item: item});\n }\n\n if (addPayload) {\n dataForRequest.push(payload);\n }\n }\n transformedItems[item['id']] = payload;\n }, this);\n\n if (dataForRequest.length < 1) {\n this.requestInProgress = false;\n this.resetFlush();\n return PromisePolyfill.resolve(); // nothing to do\n }\n\n var removeItemsFromQueue = _.bind(function () {\n return this.queue\n .removeItemsByID(\n _.map(batch, function (item) {\n return item['id'];\n })\n )\n .then(_.bind(function (succeeded) {\n // client-side dedupe\n _.each(batch, _.bind(function(item) {\n var itemId = item['id'];\n if (itemId) {\n this.itemIdsSentSuccessfully[itemId] = this.itemIdsSentSuccessfully[itemId] || 0;\n this.itemIdsSentSuccessfully[itemId]++;\n if (this.itemIdsSentSuccessfully[itemId] > 5) {\n this.reportError('[dupe] item ID sent too many times', {\n item: item,\n batchSize: batch.length,\n timesSent: this.itemIdsSentSuccessfully[itemId]\n });\n }\n } else {\n this.reportError('[dupe] found item with no ID while removing', {item: item});\n }\n }, this));\n\n if (succeeded) {\n this.consecutiveRemovalFailures = 0;\n if (this.flushOnlyOnInterval && !attemptSecondaryFlush) {\n this.resetFlush(); // schedule next batch with a delay\n return PromisePolyfill.resolve();\n } else {\n return this.flush(); // handle next batch if the queue isn't empty\n }\n } else {\n if (++this.consecutiveRemovalFailures > 5) {\n this.reportError('Too many queue failures; disabling batching system.');\n this.stopAllBatching();\n } else {\n this.resetFlush();\n }\n return PromisePolyfill.resolve();\n }\n }, this));\n }, this);\n\n var batchSendCallback = _.bind(function(res) {\n this.requestInProgress = false;\n\n try {\n\n // handle API response in a try-catch to make sure we can reset the\n // flush operation if something goes wrong\n\n if (options.unloading) {\n // update persisted data to include hook transformations\n return this.queue.updatePayloads(transformedItems);\n } else if (\n _.isObject(res) &&\n res.error === 'timeout' &&\n new Date().getTime() - startTime >= timeoutMS\n ) {\n this.reportError('Network timeout; retrying');\n return this.flush();\n } else if (\n _.isObject(res) &&\n (\n res.httpStatusCode >= 500\n || res.httpStatusCode === 429\n || (res.httpStatusCode <= 0 && !isOnline())\n || res.error === 'timeout'\n )\n ) {\n // network or API error, or 429 Too Many Requests, retry\n var retryMS = this.flushInterval * 2;\n if (res.retryAfter) {\n retryMS = (parseInt(res.retryAfter, 10) * 1000) || retryMS;\n }\n retryMS = Math.min(MAX_RETRY_INTERVAL_MS, retryMS);\n this.reportError('Error; retry in ' + retryMS + ' ms');\n this.scheduleFlush(retryMS);\n return PromisePolyfill.resolve();\n } else if (_.isObject(res) && res.httpStatusCode === 413) {\n // 413 Payload Too Large\n if (batch.length > 1) {\n var halvedBatchSize = Math.max(1, Math.floor(currentBatchSize / 2));\n this.batchSize = Math.min(this.batchSize, halvedBatchSize, batch.length - 1);\n this.reportError('413 response; reducing batch size to ' + this.batchSize);\n this.resetFlush();\n return PromisePolyfill.resolve();\n } else {\n this.reportError('Single-event request too large; dropping', batch);\n this.resetBatchSize();\n return removeItemsFromQueue();\n }\n } else {\n // successful network request+response; remove each item in batch from queue\n // (even if it was e.g. a 400, in which case retrying won't help)\n return removeItemsFromQueue();\n }\n } catch(err) {\n this.reportError('Error handling API response', err);\n this.resetFlush();\n }\n }, this);\n var requestOptions = {\n method: 'POST',\n verbose: true,\n ignore_json_errors: true, // eslint-disable-line camelcase\n timeout_ms: timeoutMS // eslint-disable-line camelcase\n };\n if (options.unloading) {\n requestOptions.transport = 'sendBeacon';\n }\n logger$4.log('MIXPANEL REQUEST:', dataForRequest);\n return this.sendRequestPromise(dataForRequest, requestOptions).then(batchSendCallback);\n }, this))\n .catch(_.bind(function(err) {\n this.reportError('Error flushing request queue', err);\n this.resetFlush();\n }, this));\n};\n\n/**\n * Log error to global logger and optional user-defined logger.\n */\nRequestBatcher.prototype.reportError = function(msg, err) {\n logger$4.error.apply(logger$4.error, arguments);\n if (this.errorReporter) {\n try {\n if (!(err instanceof Error)) {\n err = new Error(msg);\n }\n this.errorReporter(msg, err);\n } catch(err) {\n logger$4.error(err);\n }\n }\n};\n\n/**\n * @param {import('./session-recording').SerializedRecording} serializedRecording\n * @returns {boolean}\n */\nvar isRecordingExpired = function(serializedRecording) {\n var now = Date.now();\n return !serializedRecording || now > serializedRecording['maxExpires'] || now > serializedRecording['idleExpires'];\n};\n\nvar RECORD_ENQUEUE_THROTTLE_MS = 250;\n\nvar logger$3 = console_with_prefix('recorder');\nvar CompressionStream = win['CompressionStream'];\n\nvar RECORDER_BATCHER_LIB_CONFIG = {\n 'batch_size': 1000,\n 'batch_flush_interval_ms': 10 * 1000,\n 'batch_request_timeout_ms': 90 * 1000,\n 'batch_autostart': true\n};\n\nvar ACTIVE_SOURCES = new Set([\n IncrementalSource.MouseMove,\n IncrementalSource.MouseInteraction,\n IncrementalSource.Scroll,\n IncrementalSource.ViewportResize,\n IncrementalSource.Input,\n IncrementalSource.TouchMove,\n IncrementalSource.MediaInteraction,\n IncrementalSource.Drag,\n IncrementalSource.Selection,\n]);\n\nfunction isUserEvent(ev) {\n return ev.type === EventType.IncrementalSnapshot && ACTIVE_SOURCES.has(ev.data.source);\n}\n\n/**\n * @typedef {Object} SerializedRecording\n * @property {number} idleExpires\n * @property {number} maxExpires\n * @property {number} replayStartTime\n * @property {number} lastEventTimestamp\n * @property {number} seqNo\n * @property {string} batchStartUrl\n * @property {string} replayId\n * @property {string} tabId\n * @property {string} replayStartUrl\n */\n\n/**\n * @typedef {Object} SessionRecordingOptions\n * @property {Object} [options.mixpanelInstance] - reference to the core MixpanelLib\n * @property {String} [options.replayId] - unique uuid for a single replay\n * @property {Function} [options.onIdleTimeout] - callback when a recording reaches idle timeout\n * @property {Function} [options.onMaxLengthReached] - callback when a recording reaches its maximum length\n * @property {Function} [options.rrwebRecord] - rrweb's `record` function\n * @property {Function} [options.onBatchSent] - callback when a batch of events is sent to the server\n * @property {Storage} [options.sharedLockStorage] - optional storage for shared lock, used for test dependency injection\n * optional properties for deserialization:\n * @property {number} idleExpires\n * @property {number} maxExpires\n * @property {number} replayStartTime\n * @property {number} lastEventTimestamp - the unix timestamp of the last recorded event from rrweb\n * @property {number} seqNo\n * @property {string} batchStartUrl\n * @property {string} replayStartUrl\n */\n\n/**\n * @typedef {Object} UserIdInfo\n * @property {string} distinct_id\n * @property {string} user_id\n * @property {string} device_id\n */\n\n\n/**\n * This class encapsulates a single session recording and its lifecycle.\n * @param {SessionRecordingOptions} options\n */\nvar SessionRecording = function(options) {\n this._mixpanel = options.mixpanelInstance;\n this._onIdleTimeout = options.onIdleTimeout || NOOP_FUNC;\n this._onMaxLengthReached = options.onMaxLengthReached || NOOP_FUNC;\n this._onBatchSent = options.onBatchSent || NOOP_FUNC;\n this._rrwebRecord = options.rrwebRecord || null;\n\n // internal rrweb stopRecording function\n this._stopRecording = null;\n this.replayId = options.replayId;\n\n this.batchStartUrl = options.batchStartUrl || null;\n this.replayStartUrl = options.replayStartUrl || null;\n this.idleExpires = options.idleExpires || null;\n this.maxExpires = options.maxExpires || null;\n this.replayStartTime = options.replayStartTime || null;\n this.lastEventTimestamp = options.lastEventTimestamp || null;\n this.seqNo = options.seqNo || 0;\n\n this.idleTimeoutId = null;\n this.maxTimeoutId = null;\n\n this.recordMaxMs = MAX_RECORDING_MS;\n this.recordMinMs = 0;\n\n // disable persistence if localStorage is not supported\n // request-queue will automatically disable persistence if indexedDB fails to initialize\n var usePersistence = localStorageSupported(options.sharedLockStorage, true) && !this.getConfig('disable_persistence');\n\n // each replay has its own batcher key to avoid conflicts between rrweb events of different recordings\n this.batcherKey = '__mprec_' + this.getConfig('name') + '_' + this.getConfig('token') + '_' + this.replayId;\n this.queueStorage = new IDBStorageWrapper(RECORDING_EVENTS_STORE_NAME);\n this.batcher = new RequestBatcher(this.batcherKey, {\n errorReporter: this.reportError.bind(this),\n flushOnlyOnInterval: true,\n libConfig: RECORDER_BATCHER_LIB_CONFIG,\n sendRequestFunc: this.flushEventsWithOptOut.bind(this),\n queueStorage: this.queueStorage,\n sharedLockStorage: options.sharedLockStorage,\n usePersistence: usePersistence,\n stopAllBatchingFunc: this.stopRecording.bind(this),\n\n // increased throttle and shared lock timeout because recording events are very high frequency.\n // this will minimize the amount of lock contention between enqueued events.\n // for session recordings there is a lock for each tab anyway, so there's no risk of deadlock between tabs.\n enqueueThrottleMs: RECORD_ENQUEUE_THROTTLE_MS,\n sharedLockTimeoutMS: 10 * 1000,\n });\n};\n\n/**\n * @returns {UserIdInfo}\n */\nSessionRecording.prototype.getUserIdInfo = function () {\n if (this.finalFlushUserIdInfo) {\n return this.finalFlushUserIdInfo;\n }\n\n var userIdInfo = {\n 'distinct_id': String(this._mixpanel.get_distinct_id()),\n };\n\n // send ID management props if they exist\n var deviceId = this._mixpanel.get_property('$device_id');\n if (deviceId) {\n userIdInfo['$device_id'] = deviceId;\n }\n var userId = this._mixpanel.get_property('$user_id');\n if (userId) {\n userIdInfo['$user_id'] = userId;\n }\n return userIdInfo;\n};\n\nSessionRecording.prototype.unloadPersistedData = function () {\n this.batcher.stop();\n\n return this.queueStorage.init().catch(function () {\n this.reportError('Error initializing IndexedDB storage for unloading persisted data.');\n }.bind(this)).then(function () {\n // if the recording is too short, just delete any stored events without flushing\n if (this.getDurationMs() < this._getRecordMinMs()) {\n return this.queueStorage.removeItem(this.batcherKey);\n }\n\n return this.batcher.flush()\n .then(function () {\n return this.queueStorage.removeItem(this.batcherKey);\n }.bind(this));\n }.bind(this));\n};\n\nSessionRecording.prototype.getConfig = function(configVar) {\n return this._mixpanel.get_config(configVar);\n};\n\n// Alias for getConfig, used by the common addOptOutCheckMixpanelLib function which\n// reaches into this class instance and expects the snake case version of the function.\n// eslint-disable-next-line camelcase\nSessionRecording.prototype.get_config = function(configVar) {\n return this.getConfig(configVar);\n};\n\nSessionRecording.prototype.startRecording = function (shouldStopBatcher) {\n if (this._rrwebRecord === null) {\n this.reportError('rrweb record function not provided. ');\n return;\n }\n\n if (this._stopRecording !== null) {\n logger$3.log('Recording already in progress, skipping startRecording.');\n return;\n }\n\n this.recordMaxMs = this.getConfig('record_max_ms');\n if (this.recordMaxMs > MAX_RECORDING_MS) {\n this.recordMaxMs = MAX_RECORDING_MS;\n logger$3.critical('record_max_ms cannot be greater than ' + MAX_RECORDING_MS + 'ms. Capping value.');\n }\n\n if (!this.maxExpires) {\n this.maxExpires = new Date().getTime() + this.recordMaxMs;\n }\n\n this.recordMinMs = this._getRecordMinMs();\n\n if (!this.replayStartTime) {\n this.replayStartTime = new Date().getTime();\n this.batchStartUrl = _.info.currentUrl();\n this.replayStartUrl = _.info.currentUrl();\n }\n\n if (shouldStopBatcher || this.recordMinMs > 0) {\n // the primary case for shouldStopBatcher is when we're starting recording after a reset\n // and don't want to send anything over the network until there's\n // actual user activity\n // this also applies if the minimum recording length has not been hit yet\n // so that we don't send data until we know the recording will be long enough\n this.batcher.stop();\n } else {\n this.batcher.start();\n }\n\n var resetIdleTimeout = function () {\n clearTimeout(this.idleTimeoutId);\n var idleTimeoutMs = this.getConfig('record_idle_timeout_ms');\n this.idleTimeoutId = setTimeout(this._onIdleTimeout, idleTimeoutMs);\n this.idleExpires = new Date().getTime() + idleTimeoutMs;\n }.bind(this);\n resetIdleTimeout();\n\n var blockSelector = this.getConfig('record_block_selector');\n if (blockSelector === '' || blockSelector === null) {\n blockSelector = undefined;\n }\n\n try {\n this._stopRecording = this._rrwebRecord({\n 'emit': function (ev) {\n if (this.idleExpires && this.idleExpires < ev.timestamp) {\n this._onIdleTimeout();\n return;\n }\n if (isUserEvent(ev)) {\n if (this.batcher.stopped && new Date().getTime() - this.replayStartTime >= this.recordMinMs) {\n // start flushing again after user activity\n this.batcher.start();\n }\n resetIdleTimeout();\n }\n // promise only used to await during tests\n this.__enqueuePromise = this.batcher.enqueue(ev);\n\n // Capture the timestamp of the last event for duration calculation.\n if (this.lastEventTimestamp === null || ev.timestamp > this.lastEventTimestamp) {\n this.lastEventTimestamp = ev.timestamp;\n }\n }.bind(this),\n 'blockClass': this.getConfig('record_block_class'),\n 'blockSelector': blockSelector,\n 'collectFonts': this.getConfig('record_collect_fonts'),\n 'dataURLOptions': { // canvas image options (https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL)\n 'type': 'image/webp',\n 'quality': 0.6\n },\n 'maskAllInputs': true,\n 'maskTextClass': this.getConfig('record_mask_text_class'),\n 'maskTextSelector': this.getConfig('record_mask_text_selector'),\n 'recordCanvas': this.getConfig('record_canvas'),\n 'sampling': {\n 'canvas': 15\n },\n 'plugins': this.getConfig('record_console') ? [\n getRecordConsolePlugin({\n stringifyOptions: {\n stringLengthLimit: 1000,\n numOfKeysLimit: 50,\n depthOfLimit: 2\n }\n })\n ] : []\n });\n } catch (err) {\n this.reportError('Unexpected error when starting rrweb recording.', err);\n }\n\n if (typeof this._stopRecording !== 'function') {\n this.reportError('rrweb failed to start, skipping this recording.');\n this._stopRecording = null;\n this.stopRecording(); // stop batcher looping and any timeouts\n return;\n }\n\n var maxTimeoutMs = this.maxExpires - new Date().getTime();\n this.maxTimeoutId = setTimeout(this._onMaxLengthReached.bind(this), maxTimeoutMs);\n};\n\nSessionRecording.prototype.stopRecording = function (skipFlush) {\n // store the user ID info in case this is getting called in mixpanel.reset()\n this.finalFlushUserIdInfo = this.getUserIdInfo();\n\n if (!this.isRrwebStopped()) {\n try {\n this._stopRecording();\n } catch (err) {\n this.reportError('Error with rrweb stopRecording', err);\n }\n this._stopRecording = null;\n }\n\n var flushPromise;\n if (this.batcher.stopped) {\n // never got user activity to flush after reset, so just clear the batcher\n flushPromise = this.batcher.clear();\n } else if (!skipFlush) {\n // flush any remaining events from running batcher\n flushPromise = this.batcher.flush();\n }\n this.batcher.stop();\n\n clearTimeout(this.idleTimeoutId);\n clearTimeout(this.maxTimeoutId);\n return flushPromise;\n};\n\nSessionRecording.prototype.isRrwebStopped = function () {\n return this._stopRecording === null;\n};\n\n\n/**\n * Flushes the current batch of events to the server, but passes an opt-out callback to make sure\n * we stop recording and dump any queued events if the user has opted out.\n */\nSessionRecording.prototype.flushEventsWithOptOut = function (data, options, cb) {\n var onOptOut = function (code) {\n // addOptOutCheckMixpanelLib invokes this function with code=0 when the user has opted out\n if (code === 0) {\n this.stopRecording();\n cb({error: 'Tracking has been opted out, stopping recording.'});\n }\n }.bind(this);\n\n this._flushEvents(data, options, cb, onOptOut);\n};\n\n/**\n * @returns {SerializedRecording}\n */\nSessionRecording.prototype.serialize = function () {\n // don't break if mixpanel instance was destroyed at some point\n var tabId;\n try {\n tabId = this._mixpanel.get_tab_id();\n } catch (e) {\n this.reportError('Error getting tab ID for serialization ', e);\n tabId = null;\n }\n\n return {\n 'replayId': this.replayId,\n 'seqNo': this.seqNo,\n 'replayStartTime': this.replayStartTime,\n 'batchStartUrl': this.batchStartUrl,\n 'replayStartUrl': this.replayStartUrl,\n 'lastEventTimestamp': this.lastEventTimestamp,\n 'idleExpires': this.idleExpires,\n 'maxExpires': this.maxExpires,\n 'tabId': tabId,\n };\n};\n\n\n/**\n * @static\n * @param {SerializedRecording} serializedRecording\n * @param {SessionRecordingOptions} options\n * @returns {SessionRecording}\n */\nSessionRecording.deserialize = function (serializedRecording, options) {\n var recording = new SessionRecording(_.extend({}, options, {\n replayId: serializedRecording['replayId'],\n batchStartUrl: serializedRecording['batchStartUrl'],\n replayStartUrl: serializedRecording['replayStartUrl'],\n idleExpires: serializedRecording['idleExpires'],\n maxExpires: serializedRecording['maxExpires'],\n replayStartTime: serializedRecording['replayStartTime'],\n lastEventTimestamp: serializedRecording['lastEventTimestamp'],\n seqNo: serializedRecording['seqNo'],\n sharedLockStorage: options.sharedLockStorage,\n }));\n\n return recording;\n};\n\nSessionRecording.prototype._sendRequest = function(currentReplayId, reqParams, reqBody, callback) {\n var onSuccess = function (response, responseBody) {\n // Update batch specific props only if the request was successful to guarantee ordering.\n // RequestBatcher will always flush the next batch after the previous one succeeds.\n // extra check to see if the replay ID has changed so that we don't increment the seqNo on the wrong replay\n if (response.status === 200 && this.replayId === currentReplayId) {\n this.seqNo++;\n this.batchStartUrl = _.info.currentUrl();\n }\n\n this._onBatchSent();\n callback({\n status: 0,\n httpStatusCode: response.status,\n responseBody: responseBody,\n retryAfter: response.headers.get('Retry-After')\n });\n }.bind(this);\n var apiHost = (this._mixpanel.get_api_host && this._mixpanel.get_api_host('record')) || this.getConfig('api_host');\n win['fetch'](apiHost + '/' + this.getConfig('api_routes')['record'] + '?' + new URLSearchParams(reqParams), {\n 'method': 'POST',\n 'headers': {\n 'Authorization': 'Basic ' + btoa(this.getConfig('token') + ':'),\n 'Content-Type': 'application/octet-stream'\n },\n 'body': reqBody,\n }).then(function (response) {\n response.json().then(function (responseBody) {\n onSuccess(response, responseBody);\n }).catch(function (error) {\n callback({error: error});\n });\n }).catch(function (error) {\n callback({error: error, httpStatusCode: 0});\n });\n};\n\nSessionRecording.prototype._flushEvents = addOptOutCheckMixpanelLib(function (data, options, callback) {\n var numEvents = data.length;\n\n if (numEvents > 0) {\n var replayId = this.replayId;\n\n // each rrweb event has a timestamp - leverage those to get time properties\n var batchStartTime = Infinity;\n var batchEndTime = -Infinity;\n var hasFullSnapshot = false;\n for (var i = 0; i < numEvents; i++) {\n batchStartTime = Math.min(batchStartTime, data[i].timestamp);\n batchEndTime = Math.max(batchEndTime, data[i].timestamp);\n if (data[i].type === EventType.FullSnapshot) {\n hasFullSnapshot = true;\n }\n }\n\n if (this.seqNo === 0) {\n if (!hasFullSnapshot) {\n callback({error: 'First batch does not contain a full snapshot. Aborting recording.'});\n this.stopRecording(true);\n return;\n }\n this.replayStartTime = batchStartTime;\n } else if (!this.replayStartTime) {\n this.reportError('Replay start time not set but seqNo is not 0. Using current batch start time as a fallback.');\n this.replayStartTime = batchStartTime;\n }\n\n var replayLengthMs = batchEndTime - this.replayStartTime;\n\n var reqParams = {\n '$current_url': this.batchStartUrl,\n '$lib_version': Config.LIB_VERSION,\n 'batch_start_time': batchStartTime / 1000,\n 'mp_lib': 'web',\n 'replay_id': replayId,\n 'replay_length_ms': replayLengthMs,\n 'replay_start_time': this.replayStartTime / 1000,\n 'replay_start_url': this.replayStartUrl,\n 'seq': this.seqNo\n };\n var eventsJson = JSON.stringify(data);\n Object.assign(reqParams, this.getUserIdInfo());\n\n if (canUseCompressionStream(userAgent, navigator.vendor, windowOpera)) {\n var jsonStream = new Blob([eventsJson], {type: 'application/json'}).stream();\n var gzipStream = jsonStream.pipeThrough(new CompressionStream('gzip'));\n new Response(gzipStream)\n .blob()\n .then(function(compressedBlob) {\n reqParams['format'] = 'gzip';\n this._sendRequest(replayId, reqParams, compressedBlob, callback);\n }.bind(this));\n } else {\n reqParams['format'] = 'body';\n this._sendRequest(replayId, reqParams, eventsJson, callback);\n }\n }\n});\n\n\nSessionRecording.prototype.reportError = function(msg, err) {\n logger$3.error.apply(logger$3.error, arguments);\n try {\n if (!err && !(msg instanceof Error)) {\n msg = new Error(msg);\n }\n this.getConfig('error_reporter')(msg, err);\n } catch(err) {\n logger$3.error(err);\n }\n};\n\n/**\n * Calculates the duration of the recording in milliseconds, based on the start time and time of last recorded event.\n * @returns {number} The duration of the recording in milliseconds. Returns 0 if recording hasn't started.\n */\nSessionRecording.prototype.getDurationMs = function() {\n if (this.replayStartTime === null) {\n return 0;\n }\n\n // If the recording has no events, assume it is in progress and use the current time as the end time.\n if (this.lastEventTimestamp === null) {\n return new Date().getTime() - this.replayStartTime;\n }\n\n return this.lastEventTimestamp - this.replayStartTime;\n};\n\n/**\n * Lazily loads the minimum recording length config in milliseconds, respecting the maximum limit.\n * @returns {number} The minimum recording length in milliseconds.\n */\nSessionRecording.prototype._getRecordMinMs = function() {\n var configValue = this.getConfig('record_min_ms');\n\n if (configValue > MAX_VALUE_FOR_MIN_RECORDING_MS) {\n logger$3.critical('record_min_ms cannot be greater than ' + MAX_VALUE_FOR_MIN_RECORDING_MS + 'ms. Capping value.');\n return MAX_VALUE_FOR_MIN_RECORDING_MS;\n }\n\n return configValue;\n};\n\n/**\n * Module for handling the storage and retrieval of recording metadata as well as any active recordings.\n * Makes sure that only one tab can be recording at a time.\n */\nvar RecordingRegistry = function (options) {\n /** @type {IDBStorageWrapper} */\n this.idb = new IDBStorageWrapper(RECORDING_REGISTRY_STORE_NAME);\n this.errorReporter = options.errorReporter;\n this.mixpanelInstance = options.mixpanelInstance;\n this.sharedLockStorage = options.sharedLockStorage;\n};\n\nRecordingRegistry.prototype.isPersistenceEnabled = function() {\n return !this.mixpanelInstance.get_config('disable_persistence');\n};\n\nRecordingRegistry.prototype.handleError = function (err) {\n this.errorReporter('IndexedDB error: ', err);\n};\n\n/**\n * @param {import('./session-recording').SerializedRecording} serializedRecording\n */\nRecordingRegistry.prototype.setActiveRecording = function (serializedRecording) {\n if (!this.isPersistenceEnabled()) {\n return PromisePolyfill.resolve();\n }\n\n var tabId = serializedRecording['tabId'];\n if (!tabId) {\n console.warn('No tab ID is set, cannot persist recording metadata.');\n return PromisePolyfill.resolve();\n }\n\n return this.idb.init()\n .then(function () {\n return this.idb.setItem(tabId, serializedRecording);\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\n/**\n * @returns {Promise}\n */\nRecordingRegistry.prototype.getActiveRecording = function () {\n if (!this.isPersistenceEnabled()) {\n return PromisePolyfill.resolve(null);\n }\n\n return this.idb.init()\n .then(function () {\n return this.idb.getItem(this.mixpanelInstance.get_tab_id());\n }.bind(this))\n .then(function (serializedRecording) {\n return isRecordingExpired(serializedRecording) ? null : serializedRecording;\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\nRecordingRegistry.prototype.clearActiveRecording = function () {\n if (this.isPersistenceEnabled()) {\n // mark recording as expired instead of deleting it in case the page unloads mid-flush and doesn't make it to ingestion.\n // this will ensure the next pageload will flush the remaining events, but not try to continue the recording.\n return this.markActiveRecordingExpired();\n } else {\n return this.deleteActiveRecording();\n }\n};\n\nRecordingRegistry.prototype.markActiveRecordingExpired = function () {\n return this.getActiveRecording()\n .then(function (serializedRecording) {\n if (serializedRecording) {\n serializedRecording['maxExpires'] = 0;\n return this.setActiveRecording(serializedRecording);\n }\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\nRecordingRegistry.prototype.deleteActiveRecording = function () {\n // avoid initializing IDB if this registry instance hasn't already written a recording\n if (this.idb.isInitialized()) {\n return this.idb.removeItem(this.mixpanelInstance.get_tab_id())\n .catch(this.handleError.bind(this));\n } else {\n return PromisePolyfill.resolve();\n }\n};\n\n/**\n * Flush any inactive recordings from the registry to minimize data loss.\n * The main idea here is that we can flush remaining rrweb events on the next page load if a tab is closed mid-batch.\n */\nRecordingRegistry.prototype.flushInactiveRecordings = function () {\n if (!this.isPersistenceEnabled()) {\n return PromisePolyfill.resolve([]);\n }\n\n return this.idb.init()\n .then(function() {\n return this.idb.getAll();\n }.bind(this))\n .then(function (serializedRecordings) {\n // clean up any expired recordings from the registry, non-expired ones may be active in other tabs\n var unloadPromises = serializedRecordings\n .filter(function (serializedRecording) {\n return isRecordingExpired(serializedRecording);\n })\n .map(function (serializedRecording) {\n var sessionRecording = SessionRecording.deserialize(serializedRecording, {\n mixpanelInstance: this.mixpanelInstance,\n sharedLockStorage: this.sharedLockStorage\n });\n return sessionRecording.unloadPersistedData()\n .then(function () {\n // expired recording was successfully flushed, we can clean it up from the registry\n return this.idb.removeItem(serializedRecording['tabId']);\n }.bind(this))\n .catch(this.handleError.bind(this));\n }.bind(this));\n\n return PromisePolyfill.all(unloadPromises);\n }.bind(this))\n .catch(this.handleError.bind(this));\n};\n\nvar logger$2 = console_with_prefix('recorder');\n\n/**\n * Recorder API: bundles rrweb and and exposes methods to start and stop recordings.\n * @param {Object} [options.mixpanelInstance] - reference to the core MixpanelLib\n*/\nvar MixpanelRecorder = function(mixpanelInstance, rrwebRecord, sharedLockStorage) {\n this.mixpanelInstance = mixpanelInstance;\n this.rrwebRecord = rrwebRecord || record;\n this.sharedLockStorage = sharedLockStorage;\n\n /**\n * @member {import('./registry').RecordingRegistry}\n */\n this.recordingRegistry = new RecordingRegistry({\n mixpanelInstance: this.mixpanelInstance,\n errorReporter: logger$2.error,\n sharedLockStorage: sharedLockStorage\n });\n this._flushInactivePromise = this.recordingRegistry.flushInactiveRecordings();\n\n this.activeRecording = null;\n this.stopRecordingInProgress = false;\n};\n\nMixpanelRecorder.prototype.startRecording = function(options) {\n options = options || {};\n if (this.activeRecording && !this.activeRecording.isRrwebStopped()) {\n logger$2.log('Recording already in progress, skipping startRecording.');\n return;\n }\n\n var onIdleTimeout = function () {\n logger$2.log('Idle timeout reached, restarting recording.');\n this.resetRecording();\n }.bind(this);\n\n var onMaxLengthReached = function () {\n logger$2.log('Max recording length reached, stopping recording.');\n this.resetRecording();\n }.bind(this);\n\n var onBatchSent = function () {\n this.recordingRegistry.setActiveRecording(this.activeRecording.serialize());\n this['__flushPromise'] = this.activeRecording.batcher._flushPromise;\n }.bind(this);\n\n /**\n * @type {import('./session-recording').SessionRecordingOptions}\n */\n var sessionRecordingOptions = {\n mixpanelInstance: this.mixpanelInstance,\n onBatchSent: onBatchSent,\n onIdleTimeout: onIdleTimeout,\n onMaxLengthReached: onMaxLengthReached,\n replayId: _.UUID(),\n rrwebRecord: this.rrwebRecord,\n sharedLockStorage: this.sharedLockStorage\n };\n\n if (options.activeSerializedRecording) {\n this.activeRecording = SessionRecording.deserialize(options.activeSerializedRecording, sessionRecordingOptions);\n } else {\n this.activeRecording = new SessionRecording(sessionRecordingOptions);\n }\n\n this.activeRecording.startRecording(options.shouldStopBatcher);\n return this.recordingRegistry.setActiveRecording(this.activeRecording.serialize());\n};\n\nMixpanelRecorder.prototype.stopRecording = function() {\n // Prevents activeSerializedRecording from being reused when stopping the recording.\n this.stopRecordingInProgress = true;\n return this._stopCurrentRecording(false, true).then(function() {\n return this.recordingRegistry.clearActiveRecording();\n }.bind(this)).then(function() {\n this.stopRecordingInProgress = false;\n }.bind(this));\n};\n\nMixpanelRecorder.prototype.pauseRecording = function() {\n return this._stopCurrentRecording(false);\n};\n\nMixpanelRecorder.prototype._stopCurrentRecording = function(skipFlush, disableActiveRecording) {\n if (this.activeRecording) {\n var stopRecordingPromise = this.activeRecording.stopRecording(skipFlush);\n if (disableActiveRecording) {\n this.activeRecording = null;\n }\n return stopRecordingPromise;\n }\n return PromisePolyfill.resolve();\n};\n\nMixpanelRecorder.prototype.resumeRecording = function (startNewIfInactive) {\n if (this.activeRecording && this.activeRecording.isRrwebStopped()) {\n this.activeRecording.startRecording(false);\n return PromisePolyfill.resolve(null);\n }\n\n return this.recordingRegistry.getActiveRecording()\n .then(function (activeSerializedRecording) {\n if (activeSerializedRecording && !this.stopRecordingInProgress) {\n return this.startRecording({activeSerializedRecording: activeSerializedRecording});\n } else if (startNewIfInactive) {\n return this.startRecording({shouldStopBatcher: false});\n } else {\n logger$2.log('No resumable recording found.');\n return null;\n }\n }.bind(this));\n};\n\n\nMixpanelRecorder.prototype.resetRecording = function () {\n this.stopRecording();\n this.startRecording({shouldStopBatcher: true});\n};\n\nMixpanelRecorder.prototype.getActiveReplayId = function () {\n if (this.activeRecording && !this.activeRecording.isRrwebStopped()) {\n return this.activeRecording.replayId;\n } else {\n return null;\n }\n};\n\n// getter so that older mixpanel-core versions can still retrieve the replay ID\n// when pulling the latest recorder bundle from the CDN\nObject.defineProperty(MixpanelRecorder.prototype, 'replayId', {\n get: function () {\n return this.getActiveReplayId();\n }\n});\n\nwin['__mp_recorder'] = MixpanelRecorder;\n\n// stateless utils\n// mostly from https://github.com/mixpanel/mixpanel-js/blob/989ada50f518edab47b9c4fd9535f9fbd5ec5fc0/src/autotrack-utils.js\n\n\nvar EV_CHANGE = 'change';\nvar EV_CLICK = 'click';\nvar EV_HASHCHANGE = 'hashchange';\nvar EV_INPUT = 'input';\nvar EV_LOAD = 'load';\nvar EV_MP_LOCATION_CHANGE = 'mp_locationchange';\nvar EV_POPSTATE = 'popstate';\n// TODO scrollend isn't available in Safari: document or polyfill?\nvar EV_SCROLLEND = 'scrollend';\nvar EV_SCROLL = 'scroll';\nvar EV_SELECT = 'select';\nvar EV_SUBMIT = 'submit';\nvar EV_TOGGLE = 'toggle';\nvar EV_VISIBILITYCHANGE = 'visibilitychange';\n\nvar CLICK_EVENT_PROPS = [\n 'clientX', 'clientY',\n 'offsetX', 'offsetY',\n 'pageX', 'pageY',\n 'screenX', 'screenY',\n 'x', 'y'\n];\nvar OPT_IN_CLASSES = ['mp-include'];\nvar OPT_OUT_CLASSES = ['mp-no-track'];\nvar SENSITIVE_DATA_CLASSES = OPT_OUT_CLASSES.concat(['mp-sensitive']);\nvar TRACKED_ATTRS = [\n 'aria-label', 'aria-labelledby', 'aria-describedby',\n 'href', 'name', 'role', 'title', 'type'\n];\n\nvar INTERACTIVE_ARIA_ROLES = {\n 'button': true,\n 'checkbox': true,\n 'combobox': true,\n 'grid': true,\n 'link': true,\n 'listbox': true,\n 'menu': true,\n 'menubar': true,\n 'menuitem': true,\n 'menuitemcheckbox': true,\n 'menuitemradio': true,\n 'navigation': true,\n 'option': true,\n 'radio': true,\n 'radiogroup': true,\n 'searchbox': true,\n 'slider': true,\n 'spinbutton': true,\n 'switch': true,\n 'tab': true,\n 'tablist': true,\n 'textbox': true,\n 'tree': true,\n 'treegrid': true,\n 'treeitem': true\n};\n\nvar ALWAYS_NON_INTERACTIVE_TAGS = {\n // Document metadata\n 'base': true,\n 'head': true,\n 'html': true,\n 'link': true,\n 'meta': true,\n 'script': true,\n 'style': true,\n 'title': true,\n // Text formatting\n 'br': true,\n 'hr': true,\n 'wbr': true,\n // Other\n 'noscript': true,\n 'picture': true,\n 'source': true,\n 'template': true,\n 'track': true\n};\n\n// Common container tags that need additional checks\nvar TEXT_CONTAINER_TAGS = {\n 'article': true,\n 'div': true,\n 'h1': true,\n 'h2': true,\n 'h3': true,\n 'h4': true,\n 'h5': true,\n 'h6': true,\n 'p': true,\n 'section': true,\n 'span': true\n};\n\nvar EVENT_HANDLER_ATTRIBUTES = [\n 'onclick', 'onmousedown', 'onmouseup', 'onpointerdown', 'onpointerup', 'ontouchend', 'ontouchstart'\n];\n\nvar MAX_DEPTH = 5;\n\nvar logger$1 = console_with_prefix('autocapture');\n\n\nfunction getClasses(el) {\n var classes = {};\n var classList = getClassName(el).split(' ');\n for (var i = 0; i < classList.length; i++) {\n var cls = classList[i];\n if (cls) {\n classes[cls] = true;\n }\n }\n return classes;\n}\n\n/*\n * Get the className of an element, accounting for edge cases where element.className is an object\n * @param {Element} el - element to get the className of\n * @returns {string} the element's class\n */\nfunction getClassName(el) {\n switch(typeof el.className) {\n case 'string':\n return el.className;\n case 'object': // handle cases where className might be SVGAnimatedString or some other type\n return el.className.baseVal || el.getAttribute('class') || '';\n default: // future proof\n return '';\n }\n}\n\nfunction getPreviousElementSibling(el) {\n if (el.previousElementSibling) {\n return el.previousElementSibling;\n } else {\n do {\n el = el.previousSibling;\n } while (el && !isElementNode(el));\n return el;\n }\n}\n\nfunction getPropertiesFromElement(el, ev, blockAttrsSet, extraAttrs, allowElementCallback, allowSelectors) {\n var props = {\n '$classes': getClassName(el).split(' '),\n '$tag_name': el.tagName.toLowerCase()\n };\n var elId = el.id;\n if (elId) {\n props['$id'] = elId;\n }\n\n if (shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors)) {\n _.each(TRACKED_ATTRS.concat(extraAttrs), function(attr) {\n if (el.hasAttribute(attr) && !blockAttrsSet[attr]) {\n var attrVal = el.getAttribute(attr);\n if (shouldTrackValue(attrVal)) {\n props['$attr-' + attr] = attrVal;\n }\n }\n });\n }\n\n var nthChild = 1;\n var nthOfType = 1;\n var currentElem = el;\n while (currentElem = getPreviousElementSibling(currentElem)) { // eslint-disable-line no-cond-assign\n nthChild++;\n if (currentElem.tagName === el.tagName) {\n nthOfType++;\n }\n }\n props['$nth_child'] = nthChild;\n props['$nth_of_type'] = nthOfType;\n\n return props;\n}\n\nfunction getPropsForDOMEvent(ev, config) {\n var allowElementCallback = config.allowElementCallback;\n var allowSelectors = config.allowSelectors || [];\n var blockAttrs = config.blockAttrs || [];\n var blockElementCallback = config.blockElementCallback;\n var blockSelectors = config.blockSelectors || [];\n var captureTextContent = config.captureTextContent || false;\n var captureExtraAttrs = config.captureExtraAttrs || [];\n var capturedForHeatMap = config.capturedForHeatMap || false;\n\n // convert array to set every time, as the config may have changed\n var blockAttrsSet = {};\n _.each(blockAttrs, function(attr) {\n blockAttrsSet[attr] = true;\n });\n\n var props = null;\n\n var target = typeof ev.target === 'undefined' ? ev.srcElement : ev.target;\n if (isTextNode(target)) { // defeat Safari bug (see: http://www.quirksmode.org/js/events_properties.html)\n target = target.parentNode;\n }\n\n if (\n shouldTrackDomEvent(target, ev) &&\n isElementAllowed(target, ev, allowElementCallback, allowSelectors) &&\n !isElementBlocked(target, ev, blockElementCallback, blockSelectors)\n ) {\n var targetElementList = [target];\n var curEl = target;\n while (curEl.parentNode && !isTag(curEl, 'body')) {\n targetElementList.push(curEl.parentNode);\n curEl = curEl.parentNode;\n }\n\n var elementsJson = [];\n var href, explicitNoTrack = false;\n _.each(targetElementList, function(el) {\n var shouldTrackDetails = shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors);\n\n // if the element or a parent element is an anchor tag\n // include the href as a property\n if (!blockAttrsSet['href'] && el.tagName.toLowerCase() === 'a') {\n href = el.getAttribute('href');\n href = shouldTrackDetails && shouldTrackValue(href) && href;\n }\n\n if (isElementBlocked(el, ev, blockElementCallback, blockSelectors)) {\n explicitNoTrack = true;\n }\n\n elementsJson.push(getPropertiesFromElement(el, ev, blockAttrsSet, captureExtraAttrs, allowElementCallback, allowSelectors));\n }, this);\n\n if (!explicitNoTrack) {\n var docElement = document$1['documentElement'];\n props = {\n '$event_type': ev.type,\n '$host': win.location.host,\n '$pathname': win.location.pathname,\n '$elements': elementsJson,\n '$el_attr__href': href,\n '$viewportHeight': Math.max(docElement['clientHeight'], win['innerHeight'] || 0),\n '$viewportWidth': Math.max(docElement['clientWidth'], win['innerWidth'] || 0),\n '$pageHeight': document$1['body']['offsetHeight'] || 0,\n '$pageWidth': document$1['body']['offsetWidth'] || 0,\n };\n _.each(captureExtraAttrs, function(attr) {\n if (!blockAttrsSet[attr] && target.hasAttribute(attr)) {\n var attrVal = target.getAttribute(attr);\n if (shouldTrackValue(attrVal)) {\n props['$el_attr__' + attr] = attrVal;\n }\n }\n });\n\n if (captureTextContent) {\n elementText = getSafeText(target, ev, allowElementCallback, allowSelectors);\n if (elementText && elementText.length) {\n props['$el_text'] = elementText;\n }\n }\n\n if (ev.type === EV_CLICK) {\n _.each(CLICK_EVENT_PROPS, function(prop) {\n if (prop in ev) {\n props['$' + prop] = ev[prop];\n }\n });\n if (capturedForHeatMap) {\n props['$captured_for_heatmap'] = true;\n }\n target = guessRealClickTarget(ev);\n }\n // prioritize text content from \"real\" click target if different from original target\n if (captureTextContent) {\n var elementText = getSafeText(target, ev, allowElementCallback, allowSelectors);\n if (elementText && elementText.length) {\n props['$el_text'] = elementText;\n }\n }\n\n if (target) {\n // target may have been recalculated; check allowlists and blocklists again\n if (\n !isElementAllowed(target, ev, allowElementCallback, allowSelectors) ||\n isElementBlocked(target, ev, blockElementCallback, blockSelectors)\n ) {\n return null;\n }\n\n var targetProps = getPropertiesFromElement(target, ev, blockAttrsSet, captureExtraAttrs, allowElementCallback, allowSelectors);\n props['$target'] = targetProps;\n // pull up more props onto main event props\n props['$el_classes'] = targetProps['$classes'];\n _.extend(props, _.strip_empty_properties({\n '$el_id': targetProps['$id'],\n '$el_tag_name': targetProps['$tag_name']\n }));\n }\n }\n }\n\n return props;\n}\n\n\n/**\n * Get the direct text content of an element, protecting against sensitive data collection.\n * Concats textContent of each of the element's text node children; this avoids potential\n * collection of sensitive data that could happen if we used element.textContent and the\n * element had sensitive child elements, since element.textContent includes child content.\n * Scrubs values that look like they could be sensitive (i.e. cc or ssn number).\n * @param {Element} el - element to get the text of\n * @param {Array} allowSelectors - CSS selectors for elements that should be included\n * @returns {string} the element's direct text content\n */\nfunction getSafeText(el, ev, allowElementCallback, allowSelectors) {\n var elText = '';\n\n if (shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors) && el.childNodes && el.childNodes.length) {\n _.each(el.childNodes, function(child) {\n if (isTextNode(child) && child.textContent) {\n elText += _.trim(child.textContent)\n // scrub potentially sensitive values\n .split(/(\\s+)/).filter(shouldTrackValue).join('')\n // normalize whitespace\n .replace(/[\\r\\n]/g, ' ').replace(/[ ]+/g, ' ')\n // truncate\n .substring(0, 255);\n }\n });\n }\n\n return _.trim(elText);\n}\n\nfunction guessRealClickTarget(ev) {\n var target = ev.target;\n var composedPath = ev['composedPath']();\n for (var i = 0; i < composedPath.length; i++) {\n var node = composedPath[i];\n if (\n isTag(node, 'a') ||\n isTag(node, 'button') ||\n isTag(node, 'input') ||\n isTag(node, 'select') ||\n (node.getAttribute && node.getAttribute('role') === 'button')\n ) {\n target = node;\n break;\n }\n if (node === target) {\n break;\n }\n }\n return target;\n}\n\nfunction isElementAllowed(el, ev, allowElementCallback, allowSelectors) {\n if (allowElementCallback) {\n try {\n if (!allowElementCallback(el, ev)) {\n return false;\n }\n } catch (err) {\n logger$1.critical('Error while checking element in allowElementCallback', err);\n return false;\n }\n }\n\n if (!allowSelectors.length) {\n // no allowlist; all elements are fair game\n return true;\n }\n\n for (var i = 0; i < allowSelectors.length; i++) {\n var sel = allowSelectors[i];\n try {\n if (el['matches'](sel)) {\n return true;\n }\n } catch (err) {\n logger$1.critical('Error while checking selector: ' + sel, err);\n }\n }\n return false;\n}\n\nfunction isElementBlocked(el, ev, blockElementCallback, blockSelectors) {\n var i;\n\n if (blockElementCallback) {\n try {\n if (blockElementCallback(el, ev)) {\n return true;\n }\n } catch (err) {\n logger$1.critical('Error while checking element in blockElementCallback', err);\n return true;\n }\n }\n\n if (blockSelectors && blockSelectors.length) {\n // programmatically prevent tracking of elements that match CSS selectors\n for (i = 0; i < blockSelectors.length; i++) {\n var sel = blockSelectors[i];\n try {\n if (el['matches'](sel)) {\n return true;\n }\n } catch (err) {\n logger$1.critical('Error while checking selector: ' + sel, err);\n }\n }\n }\n\n // allow users to programmatically prevent tracking of elements by adding default classes such as 'mp-no-track'\n var classes = getClasses(el);\n for (i = 0; i < OPT_OUT_CLASSES.length; i++) {\n if (classes[OPT_OUT_CLASSES[i]]) {\n return true;\n }\n }\n\n return false;\n}\n\n/*\n * Check whether a DOM node has nodeType Node.ELEMENT_NODE\n * @param {Node} node - node to check\n * @returns {boolean} whether node is of the correct nodeType\n */\nfunction isElementNode(node) {\n return node && node.nodeType === 1; // Node.ELEMENT_NODE - use integer constant for browser portability\n}\n\n/*\n * Check whether an element is of a given tag type.\n * Due to potential reference discrepancies (such as the webcomponents.js polyfill),\n * we want to match tagNames instead of specific references because something like\n * element === document.body won't always work because element might not be a native\n * element.\n * @param {Element} el - element to check\n * @param {string} tag - tag name (e.g., \"div\")\n * @returns {boolean} whether el is of the given tag type\n */\nfunction isTag(el, tag) {\n return el && el.tagName && el.tagName.toLowerCase() === tag.toLowerCase();\n}\n\n/*\n * Check whether a DOM node is a TEXT_NODE\n * @param {Node} node - node to check\n * @returns {boolean} whether node is of type Node.TEXT_NODE\n */\nfunction isTextNode(node) {\n return node && node.nodeType === 3; // Node.TEXT_NODE - use integer constant for browser portability\n}\n\nfunction minDOMApisSupported() {\n try {\n var testEl = document$1.createElement('div');\n return !!testEl['matches'];\n } catch (err) {\n return false;\n }\n}\n\nfunction weakSetSupported() {\n return typeof WeakSet !== 'undefined';\n}\n\n/*\n * Check whether a DOM event should be \"tracked\" or if it may contain sensitive data\n * using a variety of heuristics.\n * @param {Element} el - element to check\n * @param {Event} ev - event to check\n * @returns {boolean} whether the event should be tracked\n */\nfunction shouldTrackDomEvent(el, ev) {\n if (!el || isTag(el, 'html') || !isElementNode(el)) {\n return false;\n }\n var tag = el.tagName.toLowerCase();\n switch (tag) {\n case 'form':\n return ev.type === EV_SUBMIT;\n case 'input':\n if (['button', 'submit'].indexOf(el.getAttribute('type')) === -1) {\n return ev.type === EV_CHANGE;\n } else {\n return ev.type === EV_CLICK;\n }\n case 'select':\n case 'textarea':\n return ev.type === EV_CHANGE;\n default:\n return ev.type === EV_CLICK;\n }\n}\n\n/*\n * Check whether a DOM element should be \"tracked\" or if it may contain sensitive data\n * using a variety of heuristics.\n * @param {Element} el - element to check\n * @param {Array} allowSelectors - CSS selectors for elements that should be included\n * @returns {boolean} whether the element should be tracked\n */\nfunction shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors) {\n var i;\n\n if (!isElementAllowed(el, ev, allowElementCallback, allowSelectors)) {\n return false;\n }\n\n for (var curEl = el; curEl.parentNode && !isTag(curEl, 'body'); curEl = curEl.parentNode) {\n var classes = getClasses(curEl);\n for (i = 0; i < SENSITIVE_DATA_CLASSES.length; i++) {\n if (classes[SENSITIVE_DATA_CLASSES[i]]) {\n return false;\n }\n }\n }\n\n var elClasses = getClasses(el);\n for (i = 0; i < OPT_IN_CLASSES.length; i++) {\n if (elClasses[OPT_IN_CLASSES[i]]) {\n return true;\n }\n }\n\n // don't send data from inputs or similar elements since there will always be\n // a risk of clientside javascript placing sensitive data in attributes\n if (\n isTag(el, 'input') ||\n isTag(el, 'select') ||\n isTag(el, 'textarea') ||\n el.getAttribute('contenteditable') === 'true'\n ) {\n return false;\n }\n\n // don't include hidden or password fields\n var type = el.type || '';\n if (typeof type === 'string') { // it's possible for el.type to be a DOM element if el is a form with a child input[name=\"type\"]\n switch(type.toLowerCase()) {\n case 'hidden':\n return false;\n case 'password':\n return false;\n }\n }\n\n // filter out data from fields that look like sensitive fields\n var name = el.name || el.id || '';\n if (typeof name === 'string') { // it's possible for el.name or el.id to be a DOM element if el is a form with a child input[name=\"name\"]\n var sensitiveNameRegex = /^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i;\n if (sensitiveNameRegex.test(name.replace(/[^a-zA-Z0-9]/g, ''))) {\n return false;\n }\n }\n\n return true;\n}\n\n\n/*\n * Check whether a string value should be \"tracked\" or if it may contain sensitive data\n * using a variety of heuristics.\n * @param {string} value - string value to check\n * @returns {boolean} whether the element should be tracked\n */\nfunction shouldTrackValue(value) {\n if (value === null || _.isUndefined(value)) {\n return false;\n }\n\n if (typeof value === 'string') {\n value = _.trim(value);\n\n // check to see if input value looks like a credit card number\n // see: https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9781449327453/ch04s20.html\n var ccRegex = /^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/;\n if (ccRegex.test((value || '').replace(/[- ]/g, ''))) {\n return false;\n }\n\n // check to see if input value looks like a social security number\n var ssnRegex = /(^\\d{3}-?\\d{2}-?\\d{4}$)/;\n if (ssnRegex.test(value)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Creates a cross-browser compatible scroll end function with appropriate event listener.\n * For browsers that support scrollend, returns the original function with scrollend event.\n * For browsers without scrollend support, returns a debounced function that triggers\n * 100ms after the last scroll event to simulate scrollend behavior.\n * @param {Function} originalFunction - The function to call when scrolling ends\n * @returns {Object} Object containing listener function and eventType string\n * @returns {Function} returns.listener - The wrapped function to use as event listener\n * @returns {string} returns.eventType - The event type to listen for ('scrollend' or 'scroll')\n */\nfunction getPolyfillScrollEndFunction(originalFunction) {\n var supportsScrollEnd = 'onscrollend' in win;\n var polyfillFunction = safewrap(originalFunction);\n var polyfillEvent = EV_SCROLLEND;\n if (!supportsScrollEnd) {\n // Polyfill for browsers without scrollend support: wait 100ms after the last scroll event\n // https://developer.chrome.com/blog/scrollend-a-new-javascript-event\n var scrollTimer = null;\n var scrollDelayMs = 100;\n\n polyfillFunction = safewrap(function() {\n clearTimeout(scrollTimer);\n scrollTimer = setTimeout(originalFunction, scrollDelayMs);\n });\n\n polyfillEvent = EV_SCROLL;\n }\n\n return {\n listener: polyfillFunction,\n eventType: polyfillEvent\n };\n}\n\nfunction hasInlineEventHandlers(element) {\n for (var i = 0; i < EVENT_HANDLER_ATTRIBUTES.length; i++) {\n if (element.hasAttribute(EVENT_HANDLER_ATTRIBUTES[i])) {\n return true;\n }\n }\n return false;\n}\n\nfunction hasInteractiveAriaRole(element) {\n var role = element.getAttribute('role');\n if (!role) return false;\n\n // Handle invalid markup where multiple roles might be specified\n // Only the first token is recognized per ARIA spec\n var primaryRole = role.trim().split(/\\s+/)[0].toLowerCase();\n\n return INTERACTIVE_ARIA_ROLES[primaryRole];\n}\n\nfunction hasAnyInteractivityIndicators(element) {\n var tagName = element.tagName.toLowerCase();\n\n // Check for interactive HTML elements\n if (tagName === 'button' ||\n tagName === 'input' ||\n tagName === 'select' ||\n tagName === 'textarea' ||\n tagName === 'details' ||\n tagName === 'dialog') {\n return true;\n }\n\n if (element.isContentEditable) {\n return true;\n }\n\n if (element.onclick || element.onmousedown || element.onmouseup || element.ontouchstart || element.ontouchend) {\n return true;\n }\n\n if (hasInlineEventHandlers(element)) {\n return true;\n }\n\n if (hasInteractiveAriaRole(element)) {\n return true;\n }\n\n if (tagName === 'a' && element.hasAttribute('href')) {\n return true;\n }\n\n if (element.hasAttribute('tabindex')) {\n return true;\n }\n\n return false;\n}\n\n\nfunction isDefinitelyNonInteractive(element) {\n if (!element || !element.tagName) {\n return true;\n }\n\n var tagName = element.tagName.toLowerCase();\n\n // These tags are definitely non-interactive\n if (ALWAYS_NON_INTERACTIVE_TAGS[tagName]) {\n return true;\n }\n\n // For all other elements, we can only be certain they're non-interactive if they lack ALL indicators of interactivity\n // Check for any signs of interactivity\n if (hasAnyInteractivityIndicators(element)) {\n return false;\n }\n\n // Check parent chain for interactive context\n var parent = element.parentElement;\n var depth = 0;\n\n while (parent && depth < MAX_DEPTH) {\n if (hasAnyInteractivityIndicators(parent)) {\n return false; // Element is inside an interactive parent\n }\n\n if (parent.getRootNode && parent.getRootNode() !== document$1) {\n var root = parent.getRootNode();\n if (root.host && hasAnyInteractivityIndicators(root.host)) {\n return false; // Inside an interactive shadow host\n }\n }\n\n parent = parent.parentElement;\n depth++;\n }\n\n // Pure text containers without any interactive context\n if (TEXT_CONTAINER_TAGS[tagName]) {\n // These are non-interactive ONLY if they have no interactive indicators (already checked as part of hasAnyInteractivityIndicators)\n return true;\n }\n\n // Default: we can't be certain it's non-interactive\n return false;\n}\n\n/**\n * Get the composed path of a click event for elements embedded in shadow DOM.\n * @param {Event} event - event to get the composed path from\n * @returns {Array} the composed path of the click event\n*/\nfunction getClickEventComposedPath(event) {\n if ('composedPath' in event) {\n return event['composedPath']();\n }\n\n return [];\n}\n\n/**\n * Get the element from a click event, accounting for elements embedded in shadow DOM.\n * @param {Event} event - event to get the target from\n * @returns {Element | null} the element that was the target of the click event\n */\nfunction getClickEventTargetElement(event) {\n var path = getClickEventComposedPath(event);\n\n if (path && path.length > 0) {\n return path[0];\n }\n\n return event['target'] || event['srcElement'];\n}\n\n/** @const */ var DEFAULT_RAGE_CLICK_THRESHOLD_PX = 30;\n/** @const */ var DEFAULT_RAGE_CLICK_TIMEOUT_MS = 1000;\n/** @const */ var DEFAULT_RAGE_CLICK_CLICK_COUNT = 4;\n/** @const */ var DEFAULT_RAGE_CLICK_INTERACTIVE_ELEMENTS_ONLY = false;\n\nfunction RageClickTracker() {\n this.clicks = [];\n}\n\n/**\n * Determines if a click event is part of a rage click sequence.\n * @param {Event} event - the original click event.\n * @param {import('../index.d.ts').RageClickConfig} options - configuration options for rage click detection.\n * @returns {boolean} - true if the click is considered a rage click, false otherwise.\n */\nRageClickTracker.prototype.isRageClick = function(event, options) {\n options = options || {};\n var thresholdPx = options['threshold_px'] || DEFAULT_RAGE_CLICK_THRESHOLD_PX;\n var timeoutMs = options['timeout_ms'] || DEFAULT_RAGE_CLICK_TIMEOUT_MS;\n var clickCount = options['click_count'] || DEFAULT_RAGE_CLICK_CLICK_COUNT;\n var interactiveElementsOnly = options['interactive_elements_only'] || DEFAULT_RAGE_CLICK_INTERACTIVE_ELEMENTS_ONLY;\n\n if (interactiveElementsOnly) {\n var target = getClickEventTargetElement(event);\n if (!target || isDefinitelyNonInteractive(target)) {\n return false;\n }\n }\n\n var timestamp = Date.now();\n var x = event['pageX'], y = event['pageY'];\n\n var lastClick = this.clicks[this.clicks.length - 1];\n if (\n lastClick &&\n timestamp - lastClick.timestamp < timeoutMs &&\n Math.sqrt(Math.pow(x - lastClick.x, 2) + Math.pow(y - lastClick.y, 2)) < thresholdPx\n ) {\n this.clicks.push({ x: x, y: y, timestamp: timestamp });\n if (this.clicks.length >= clickCount) {\n this.clicks = [];\n return true;\n }\n } else {\n this.clicks = [{ x: x, y: y, timestamp: timestamp }];\n }\n return false;\n};\n\nfunction ShadowDOMObserver(changeCallback, observerConfig) {\n this.changeCallback = changeCallback || function() {};\n this.observerConfig = observerConfig;\n\n this.observedShadowRoots = null;\n this.shadowObservers = [];\n}\n\nShadowDOMObserver.prototype.getEventTarget = function(event) {\n if (!this.observedShadowRoots) {\n return;\n }\n\n return getClickEventTargetElement(event);\n};\n\nShadowDOMObserver.prototype.observeFromEvent = function(event) {\n if (!this.observedShadowRoots) {\n return;\n }\n\n var path = getClickEventComposedPath(event);\n\n // Check each element in path for shadow roots\n for (var i = 0; i < path.length; i++) {\n var element = path[i];\n\n if (element && element.shadowRoot) {\n this.observeShadowRoot(element.shadowRoot);\n }\n }\n};\n\n\nShadowDOMObserver.prototype.observeShadowRoot = function(shadowRoot) {\n if (!this.observedShadowRoots || this.observedShadowRoots.has(shadowRoot)) {\n return;\n }\n\n var self = this;\n\n try {\n this.observedShadowRoots.add(shadowRoot);\n\n var observer = new window.MutationObserver(function() {\n self.changeCallback();\n });\n\n observer.observe(shadowRoot, this.observerConfig);\n this.shadowObservers.push(observer);\n } catch (e) {\n logger$1.critical('Error while observing shadow root', e);\n }\n};\n\n\nShadowDOMObserver.prototype.start = function() {\n if (this.observedShadowRoots) {\n return;\n }\n\n if (!weakSetSupported()) {\n logger$1.critical('Shadow DOM observation unavailable: WeakSet not supported');\n return;\n }\n\n this.observedShadowRoots = new WeakSet();\n};\n\nShadowDOMObserver.prototype.stop = function() {\n if (!this.observedShadowRoots) {\n return;\n }\n\n for (var i = 0; i < this.shadowObservers.length; i++) {\n try {\n this.shadowObservers[i].disconnect();\n } catch (e) {\n logger$1.critical('Error while disconnecting shadow DOM observer', e);\n }\n }\n this.shadowObservers = [];\n this.observedShadowRoots = null;\n};\n\n/** @const */ var DEFAULT_DEAD_CLICK_TIMEOUT_MS = 500;\n/** @const */ var INTERACTION_EVENTS = [EV_CHANGE, EV_INPUT, EV_SUBMIT, EV_SELECT, EV_TOGGLE];\n/** @const */ var LAYOUT_EVENTS = [EV_SCROLLEND];\n/** @const */ var NAVIGATION_EVENTS = [EV_HASHCHANGE];\n/** @const */ var MUTATION_OBSERVER_CONFIG = {\n characterData: true,\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['style', 'class', 'hidden', 'checked', 'selected', 'value', 'display', 'visibility']\n};\n\n\nfunction DeadClickTracker(onDeadClickCallback) {\n this.eventListeners = [];\n this.mutationObserver = null;\n this.shadowDOMObserver = null;\n\n this.isTracking = false;\n this.lastChangeEventTimestamp = 0;\n this.pendingClicks = [];\n this.onDeadClickCallback = onDeadClickCallback;\n this.processingActive = false;\n this.processingTimeout = null;\n}\n\n\nDeadClickTracker.prototype.addClick = function(event) {\n var element = this.shadowDOMObserver && this.shadowDOMObserver.getEventTarget(event);\n\n if (!element) {\n element = event['target'] || event['srcElement'];\n }\n\n if (!element || isDefinitelyNonInteractive(element)) {\n return false;\n }\n\n if (this.shadowDOMObserver) {\n this.shadowDOMObserver.observeFromEvent(event);\n }\n this.pendingClicks.push({\n element: element,\n event: event,\n timestamp: Date.now()\n });\n return true;\n};\n\nDeadClickTracker.prototype.trackClick = function(event, config) {\n if (!this.isTracking) {\n return false;\n }\n\n var added = this.addClick(event);\n if (added) {\n this.triggerProcessing(config);\n }\n return added;\n};\n\nDeadClickTracker.prototype.getDeadClicks = function(config) {\n if (this.pendingClicks.length === 0) {\n return [];\n }\n\n var timeoutMs = config['timeout_ms'];\n var now = Date.now();\n var clicksToEvaluate = this.pendingClicks.slice(); // Copy array\n this.pendingClicks = []; // Clear original\n\n var deadClicks = [];\n\n for (var i = 0; i < clicksToEvaluate.length; i++) {\n var click = clicksToEvaluate[i];\n\n if (now - click.timestamp >= timeoutMs) {\n // Click has exceeded timeout, check if it's dead by looking for changes after this specific click\n if (!this.hasChangesAfter(click.timestamp)) {\n deadClicks.push(click);\n }\n } else {\n // Still pending - add back\n this.pendingClicks.push(click);\n }\n }\n\n return deadClicks;\n};\n\nDeadClickTracker.prototype.hasChangesAfter = function(timestamp) {\n // 100ms tolerance for race condition between when we record the click and the change event\n return this.lastChangeEventTimestamp >= (timestamp - 100);\n};\n\nDeadClickTracker.prototype.recordChangeEvent = function() {\n this.lastChangeEventTimestamp = Date.now();\n};\n\nDeadClickTracker.prototype.triggerProcessing = function(config) {\n // Prevent multiple concurrent processing chains\n if (this.processingActive) {\n return;\n }\n this.processingActive = true;\n this.processRecursively(config);\n};\n\nDeadClickTracker.prototype.processRecursively = function(config) {\n if (!this.isTracking || !this.onDeadClickCallback) {\n this.processingActive = false;\n return;\n }\n\n var timeoutMs = config['timeout_ms'];\n var self = this;\n\n this.processingTimeout = setTimeout(function() {\n if (!self.processingActive) {\n return;\n }\n\n var deadClicks = self.getDeadClicks(config);\n\n for (var i = 0; i < deadClicks.length; i++) {\n self.onDeadClickCallback(deadClicks[i].event);\n }\n\n if (self.pendingClicks.length > 0) {\n self.processRecursively(config);\n } else {\n self.processingActive = false;\n }\n }, timeoutMs);\n};\n\nDeadClickTracker.prototype.startTracking = function() {\n if (this.isTracking) {\n return;\n }\n\n this.isTracking = true;\n\n var self = this;\n\n INTERACTION_EVENTS.forEach(function(event) {\n var handler = function() {\n self.recordChangeEvent();\n };\n document.addEventListener(event, handler, { capture: true, passive: true });\n self.eventListeners.push({ target: document, event: event, handler: handler, options: { capture: true, passive: true } });\n });\n NAVIGATION_EVENTS.forEach(function(event) {\n var handler = function() {\n self.recordChangeEvent();\n };\n window.addEventListener(event, handler);\n self.eventListeners.push({ target: window, event: event, handler: handler });\n });\n LAYOUT_EVENTS.forEach(function(event) {\n var handler = function() {\n self.recordChangeEvent();\n };\n window.addEventListener(event, handler, { passive: true });\n self.eventListeners.push({ target: window, event: event, handler: handler, options: { passive: true } });\n });\n var selectionHandler = function() {\n self.recordChangeEvent();\n };\n document.addEventListener('selectionchange', selectionHandler);\n self.eventListeners.push({ target: document, event: 'selectionchange', handler: selectionHandler });\n\n // Set up MutationObserver\n if (window.MutationObserver) {\n try {\n this.mutationObserver = new window.MutationObserver(function() {\n self.recordChangeEvent();\n });\n\n this.mutationObserver.observe(document.body || document.documentElement, MUTATION_OBSERVER_CONFIG);\n } catch (e) {\n logger$1.critical('Error while setting up mutation observer', e);\n }\n }\n\n // Set up Shadow DOM observer\n if (window.customElements) {\n try {\n this.shadowDOMObserver = new ShadowDOMObserver(\n function() {\n self.recordChangeEvent();\n },\n MUTATION_OBSERVER_CONFIG\n );\n this.shadowDOMObserver.start();\n } catch (e) {\n logger$1.critical('Error while setting up shadow DOM observer', e);\n this.shadowDOMObserver = null;\n }\n }\n};\n\nDeadClickTracker.prototype.stopTracking = function() {\n if (!this.isTracking) {\n return;\n }\n\n this.isTracking = false;\n this.pendingClicks = [];\n this.lastChangeEventTimestamp = 0;\n this.processingActive = false;\n\n if (this.processingTimeout) {\n clearTimeout(this.processingTimeout);\n this.processingTimeout = null;\n }\n\n // Remove all event listeners\n for (var i = 0; i < this.eventListeners.length; i++) {\n var listener = this.eventListeners[i];\n try {\n listener.target.removeEventListener(listener.event, listener.handler, listener.options);\n } catch (e) {\n logger$1.critical('Error while removing event listener', e);\n }\n }\n this.eventListeners = [];\n\n if (this.mutationObserver) {\n try {\n this.mutationObserver.disconnect();\n } catch (e) {\n logger$1.critical('Error while disconnecting mutation observer', e);\n }\n this.mutationObserver = null;\n }\n\n if (this.shadowDOMObserver) {\n try {\n this.shadowDOMObserver.stop();\n } catch (e) {\n logger$1.critical('Error while stopping shadow DOM observer', e);\n }\n this.shadowDOMObserver = null;\n }\n};\n\nvar AUTOCAPTURE_CONFIG_KEY = 'autocapture';\nvar LEGACY_PAGEVIEW_CONFIG_KEY = 'track_pageview';\n\nvar PAGEVIEW_OPTION_FULL_URL = 'full-url';\nvar PAGEVIEW_OPTION_URL_WITH_PATH_AND_QUERY_STRING = 'url-with-path-and-query-string';\nvar PAGEVIEW_OPTION_URL_WITH_PATH = 'url-with-path';\n\nvar CONFIG_ALLOW_ELEMENT_CALLBACK = 'allow_element_callback';\nvar CONFIG_ALLOW_SELECTORS = 'allow_selectors';\nvar CONFIG_ALLOW_URL_REGEXES = 'allow_url_regexes';\nvar CONFIG_BLOCK_ATTRS = 'block_attrs';\nvar CONFIG_BLOCK_ELEMENT_CALLBACK = 'block_element_callback';\nvar CONFIG_BLOCK_SELECTORS = 'block_selectors';\nvar CONFIG_BLOCK_URL_REGEXES = 'block_url_regexes';\nvar CONFIG_CAPTURE_EXTRA_ATTRS = 'capture_extra_attrs';\nvar CONFIG_CAPTURE_TEXT_CONTENT = 'capture_text_content';\nvar CONFIG_SCROLL_CAPTURE_ALL = 'scroll_capture_all';\nvar CONFIG_SCROLL_CHECKPOINTS = 'scroll_depth_percent_checkpoints';\nvar CONFIG_TRACK_CLICK = 'click';\nvar CONFIG_TRACK_DEAD_CLICK = 'dead_click';\nvar CONFIG_TRACK_INPUT = 'input';\nvar CONFIG_TRACK_PAGEVIEW = 'pageview';\nvar CONFIG_TRACK_RAGE_CLICK = 'rage_click';\nvar CONFIG_TRACK_SCROLL = 'scroll';\nvar CONFIG_TRACK_PAGE_LEAVE = 'page_leave';\nvar CONFIG_TRACK_SUBMIT = 'submit';\n\nvar CONFIG_DEFAULTS$1 = {};\nCONFIG_DEFAULTS$1[CONFIG_ALLOW_SELECTORS] = [];\nCONFIG_DEFAULTS$1[CONFIG_ALLOW_URL_REGEXES] = [];\nCONFIG_DEFAULTS$1[CONFIG_BLOCK_ATTRS] = [];\nCONFIG_DEFAULTS$1[CONFIG_BLOCK_ELEMENT_CALLBACK] = null;\nCONFIG_DEFAULTS$1[CONFIG_BLOCK_SELECTORS] = [];\nCONFIG_DEFAULTS$1[CONFIG_BLOCK_URL_REGEXES] = [];\nCONFIG_DEFAULTS$1[CONFIG_CAPTURE_EXTRA_ATTRS] = [];\nCONFIG_DEFAULTS$1[CONFIG_CAPTURE_TEXT_CONTENT] = false;\nCONFIG_DEFAULTS$1[CONFIG_SCROLL_CAPTURE_ALL] = false;\nCONFIG_DEFAULTS$1[CONFIG_SCROLL_CHECKPOINTS] = [25, 50, 75, 100];\nCONFIG_DEFAULTS$1[CONFIG_TRACK_CLICK] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_DEAD_CLICK] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_INPUT] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_PAGEVIEW] = PAGEVIEW_OPTION_FULL_URL;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_RAGE_CLICK] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_SCROLL] = true;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_PAGE_LEAVE] = false;\nCONFIG_DEFAULTS$1[CONFIG_TRACK_SUBMIT] = true;\n\nvar DEFAULT_PROPS = {\n '$mp_autocapture': true\n};\n\nvar MP_EV_CLICK = '$mp_click';\nvar MP_EV_DEAD_CLICK = '$mp_dead_click';\nvar MP_EV_INPUT = '$mp_input_change';\nvar MP_EV_RAGE_CLICK = '$mp_rage_click';\nvar MP_EV_SCROLL = '$mp_scroll';\nvar MP_EV_SUBMIT = '$mp_submit';\nvar MP_EV_PAGE_LEAVE = '$mp_page_leave';\n\n/**\n * Autocapture: manages automatic event tracking\n * @constructor\n */\nvar Autocapture = function(mp) {\n this.mp = mp;\n this.maxScrollViewDepth = 0;\n this.hasTrackedScrollSession = false;\n this.previousScrollHeight = 0;\n};\n\nAutocapture.prototype.init = function() {\n if (!minDOMApisSupported()) {\n logger$1.critical('Autocapture unavailable: missing required DOM APIs');\n return;\n }\n this.initPageListeners();\n this.initPageviewTracking();\n this.initClickTracking();\n this.initDeadClickTracking();\n this.initInputTracking();\n this.initScrollTracking();\n this.initSubmitTracking();\n this.initRageClickTracking();\n this.initPageLeaveTracking();\n};\n\nAutocapture.prototype.getFullConfig = function() {\n var autocaptureConfig = this.mp.get_config(AUTOCAPTURE_CONFIG_KEY);\n if (!autocaptureConfig) {\n // Autocapture is completely off\n return {};\n } else if (_.isObject(autocaptureConfig)) {\n return _.extend({}, CONFIG_DEFAULTS$1, autocaptureConfig);\n } else {\n // Autocapture config is non-object truthy value, return default\n return CONFIG_DEFAULTS$1;\n }\n};\n\nAutocapture.prototype.getConfig = function(key) {\n return this.getFullConfig()[key];\n};\n\nAutocapture.prototype.currentUrlBlocked = function() {\n var i;\n var currentUrl = _.info.currentUrl();\n\n var allowUrlRegexes = this.getConfig(CONFIG_ALLOW_URL_REGEXES) || [];\n if (allowUrlRegexes.length) {\n // we're using an allowlist, only track if current URL matches\n var allowed = false;\n for (i = 0; i < allowUrlRegexes.length; i++) {\n var allowRegex = allowUrlRegexes[i];\n try {\n if (currentUrl.match(allowRegex)) {\n allowed = true;\n break;\n }\n } catch (err) {\n logger$1.critical('Error while checking block URL regex: ' + allowRegex, err);\n return true;\n }\n }\n if (!allowed) {\n // wasn't allowed by any regex\n return true;\n }\n }\n\n var blockUrlRegexes = this.getConfig(CONFIG_BLOCK_URL_REGEXES) || [];\n if (!blockUrlRegexes || !blockUrlRegexes.length) {\n return false;\n }\n\n for (i = 0; i < blockUrlRegexes.length; i++) {\n try {\n if (currentUrl.match(blockUrlRegexes[i])) {\n return true;\n }\n } catch (err) {\n logger$1.critical('Error while checking block URL regex: ' + blockUrlRegexes[i], err);\n return true;\n }\n }\n return false;\n};\n\nAutocapture.prototype.pageviewTrackingConfig = function() {\n // supports both autocapture config and old track_pageview config\n if (this.mp.get_config(AUTOCAPTURE_CONFIG_KEY)) {\n return this.getConfig(CONFIG_TRACK_PAGEVIEW);\n } else {\n return this.mp.get_config(LEGACY_PAGEVIEW_CONFIG_KEY);\n }\n};\n\n// helper for event handlers\nAutocapture.prototype.trackDomEvent = function(ev, mpEventName) {\n if (this.currentUrlBlocked()) {\n return;\n }\n\n var isCapturedForHeatMap = this.mp.is_recording_heatmap_data() && (\n (mpEventName === MP_EV_CLICK && !this.getConfig(CONFIG_TRACK_CLICK)) ||\n (mpEventName === MP_EV_RAGE_CLICK && !this._getClickTrackingConfig(CONFIG_TRACK_RAGE_CLICK)) ||\n (mpEventName === MP_EV_DEAD_CLICK && !this._getClickTrackingConfig(CONFIG_TRACK_DEAD_CLICK))\n );\n\n var props = getPropsForDOMEvent(ev, {\n allowElementCallback: this.getConfig(CONFIG_ALLOW_ELEMENT_CALLBACK),\n allowSelectors: this.getConfig(CONFIG_ALLOW_SELECTORS),\n blockAttrs: this.getConfig(CONFIG_BLOCK_ATTRS),\n blockElementCallback: this.getConfig(CONFIG_BLOCK_ELEMENT_CALLBACK),\n blockSelectors: this.getConfig(CONFIG_BLOCK_SELECTORS),\n captureExtraAttrs: this.getConfig(CONFIG_CAPTURE_EXTRA_ATTRS),\n captureTextContent: this.getConfig(CONFIG_CAPTURE_TEXT_CONTENT),\n capturedForHeatMap: isCapturedForHeatMap,\n });\n if (props) {\n _.extend(props, DEFAULT_PROPS);\n this.mp.track(mpEventName, props);\n }\n};\n\nAutocapture.prototype.initPageListeners = function() {\n win.removeEventListener(EV_POPSTATE, this.listenerPopstate);\n win.removeEventListener(EV_HASHCHANGE, this.listenerHashchange);\n\n if (!this.pageviewTrackingConfig() && !this.getConfig(CONFIG_TRACK_PAGE_LEAVE) && !this.mp.get_config('record_heatmap_data')) {\n // These are all the configs that use these listeners\n return;\n }\n\n this.listenerPopstate = function() {\n win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n };\n this.listenerHashchange = function() {\n win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n };\n\n win.addEventListener(EV_POPSTATE, this.listenerPopstate);\n win.addEventListener(EV_HASHCHANGE, this.listenerHashchange);\n var nativePushState = win.history.pushState;\n if (typeof nativePushState === 'function') {\n win.history.pushState = function(state, unused, url) {\n nativePushState.call(win.history, state, unused, url);\n win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n };\n }\n var nativeReplaceState = win.history.replaceState;\n if (typeof nativeReplaceState === 'function') {\n win.history.replaceState = function(state, unused, url) {\n nativeReplaceState.call(win.history, state, unused, url);\n win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n };\n }\n};\n\nAutocapture.prototype._getClickTrackingConfig = function(configKey) {\n var config = this.getConfig(configKey);\n\n if (!config) {\n return null; // click tracking disabled\n }\n\n if (config === true) {\n return {}; // use defaults\n }\n\n if (typeof config === 'object') {\n return config; // use custom configuration\n }\n\n return {}; // fallback to defaults for any other truthy value\n};\n\nAutocapture.prototype._trackPageLeave = function(ev, currentUrl, currentScrollHeight) {\n if (this.hasTrackedScrollSession) {\n // User has navigated away already ending their impression.\n return;\n }\n\n if (!this.getConfig(CONFIG_TRACK_PAGE_LEAVE) && !this.mp.is_recording_heatmap_data()) {\n return;\n }\n\n this.hasTrackedScrollSession = true;\n var viewportHeight = Math.max(document$1.documentElement.clientHeight, win.innerHeight || 0);\n var scrollPercentage = Math.round(Math.max(this.maxScrollViewDepth - viewportHeight, 0) / (currentScrollHeight - viewportHeight) * 100);\n var foldLinePercentage = Math.round((viewportHeight / currentScrollHeight) * 100);\n if (currentScrollHeight <= viewportHeight) {\n // If the content fits within the viewport, consider it fully scrolled\n scrollPercentage = 100;\n foldLinePercentage = 100;\n }\n\n var props = _.extend({\n '$max_scroll_view_depth': this.maxScrollViewDepth,\n '$max_scroll_percentage': scrollPercentage,\n '$fold_line_percentage': foldLinePercentage,\n '$scroll_height': currentScrollHeight,\n '$event_type': ev.type,\n '$current_url': currentUrl || _.info.currentUrl(),\n '$viewportHeight': viewportHeight, // This is the fold line\n '$viewportWidth': Math.max(document$1.documentElement.clientWidth, win.innerWidth || 0),\n '$captured_for_heatmap': this.mp.is_recording_heatmap_data()\n }, DEFAULT_PROPS);\n\n // Send with beacon transport to ensure event is sent before unload\n this.mp.track(MP_EV_PAGE_LEAVE, props, {transport: 'sendBeacon'});\n};\n\nAutocapture.prototype._initScrollDepthTracking = function() {\n win.removeEventListener(EV_SCROLL, this.listenerScrollDepth);\n win.removeEventListener(EV_SCROLLEND, this.listenerScrollDepth);\n\n if (!this.mp.get_config('record_heatmap_data')) {\n return;\n }\n\n logger$1.log('Initializing scroll depth tracking');\n\n this.maxScrollViewDepth = Math.max(document$1.documentElement.clientHeight, win.innerHeight || 0);\n\n var updateScrollDepth = function() {\n if (this.currentUrlBlocked()) {\n return;\n }\n var scrollViewHeight = Math.max(document$1.documentElement.clientHeight, win.innerHeight || 0) + win.scrollY;\n if (scrollViewHeight > this.maxScrollViewDepth) {\n this.maxScrollViewDepth = scrollViewHeight;\n }\n this.previousScrollHeight = document$1.body.scrollHeight;\n }.bind(this);\n\n var scrollEndPolyfill = getPolyfillScrollEndFunction(updateScrollDepth);\n this.listenerScrollDepth = scrollEndPolyfill.listener;\n win.addEventListener(scrollEndPolyfill.eventType, this.listenerScrollDepth);\n};\n\nAutocapture.prototype.initClickTracking = function() {\n win.removeEventListener(EV_CLICK, this.listenerClick);\n\n if (!this.getConfig(CONFIG_TRACK_CLICK) && !this.mp.get_config('record_heatmap_data')) {\n return;\n }\n logger$1.log('Initializing click tracking');\n\n this.listenerClick = function(ev) {\n if (!this.getConfig(CONFIG_TRACK_CLICK) && !this.mp.is_recording_heatmap_data()) {\n return;\n }\n this.trackDomEvent(ev, MP_EV_CLICK);\n }.bind(this);\n win.addEventListener(EV_CLICK, this.listenerClick);\n};\n\nAutocapture.prototype.initDeadClickTracking = function() {\n var deadClickConfig = this._getClickTrackingConfig(CONFIG_TRACK_DEAD_CLICK);\n\n if (!deadClickConfig && !this.mp.get_config('record_heatmap_data')) {\n this.stopDeadClickTracking();\n return;\n }\n\n logger$1.log('Initializing dead click tracking');\n if (!this._deadClickTracker) {\n this._deadClickTracker = new DeadClickTracker(function(deadClickEvent) {\n this.trackDomEvent(deadClickEvent, MP_EV_DEAD_CLICK);\n }.bind(this));\n this._deadClickTracker.startTracking();\n }\n\n if (!this.listenerDeadClick) {\n this.listenerDeadClick = function(ev) {\n var currentDeadClickConfig = this._getClickTrackingConfig(CONFIG_TRACK_DEAD_CLICK);\n if (!currentDeadClickConfig && !this.mp.is_recording_heatmap_data()) {\n return;\n }\n if (this.currentUrlBlocked()) {\n return;\n }\n // Normalize config to ensure timeout_ms is always set\n var normalizedConfig = currentDeadClickConfig || {};\n if (!normalizedConfig['timeout_ms']) {\n normalizedConfig['timeout_ms'] = DEFAULT_DEAD_CLICK_TIMEOUT_MS;\n }\n this._deadClickTracker.trackClick(ev, normalizedConfig);\n }.bind(this);\n win.addEventListener(EV_CLICK, this.listenerDeadClick);\n }\n};\n\nAutocapture.prototype.initInputTracking = function() {\n win.removeEventListener(EV_CHANGE, this.listenerChange);\n\n if (!this.getConfig(CONFIG_TRACK_INPUT)) {\n return;\n }\n logger$1.log('Initializing input tracking');\n\n this.listenerChange = function(ev) {\n if (!this.getConfig(CONFIG_TRACK_INPUT)) {\n return;\n }\n this.trackDomEvent(ev, MP_EV_INPUT);\n }.bind(this);\n win.addEventListener(EV_CHANGE, this.listenerChange);\n};\n\nAutocapture.prototype.initPageviewTracking = function() {\n win.removeEventListener(EV_MP_LOCATION_CHANGE, this.listenerLocationchange);\n\n if (!this.pageviewTrackingConfig()) {\n return;\n }\n logger$1.log('Initializing pageview tracking');\n\n var previousTrackedUrl = '';\n var tracked = false;\n if (!this.currentUrlBlocked()) {\n tracked = this.mp.track_pageview(DEFAULT_PROPS);\n }\n if (tracked) {\n previousTrackedUrl = _.info.currentUrl();\n }\n\n this.listenerLocationchange = safewrap(function() {\n if (this.currentUrlBlocked()) {\n return;\n }\n\n var currentUrl = _.info.currentUrl();\n var shouldTrack = false;\n var didPathChange = currentUrl.split('#')[0].split('?')[0] !== previousTrackedUrl.split('#')[0].split('?')[0];\n var trackPageviewOption = this.pageviewTrackingConfig();\n if (trackPageviewOption === PAGEVIEW_OPTION_FULL_URL) {\n shouldTrack = currentUrl !== previousTrackedUrl;\n } else if (trackPageviewOption === PAGEVIEW_OPTION_URL_WITH_PATH_AND_QUERY_STRING) {\n shouldTrack = currentUrl.split('#')[0] !== previousTrackedUrl.split('#')[0];\n } else if (trackPageviewOption === PAGEVIEW_OPTION_URL_WITH_PATH) {\n shouldTrack = didPathChange;\n }\n\n if (shouldTrack) {\n var tracked = this.mp.track_pageview(DEFAULT_PROPS);\n if (tracked) {\n previousTrackedUrl = currentUrl;\n }\n if (didPathChange) {\n this.lastScrollCheckpoint = 0;\n logger$1.log('Path change: re-initializing scroll depth checkpoints');\n }\n }\n }.bind(this));\n win.addEventListener(EV_MP_LOCATION_CHANGE, this.listenerLocationchange);\n};\n\nAutocapture.prototype.initRageClickTracking = function() {\n win.removeEventListener(EV_CLICK, this.listenerRageClick);\n\n var rageClickConfig = this._getClickTrackingConfig(CONFIG_TRACK_RAGE_CLICK);\n if (!rageClickConfig && !this.mp.get_config('record_heatmap_data')) {\n return;\n }\n\n logger$1.log('Initializing rage click tracking');\n if (!this._rageClickTracker) {\n this._rageClickTracker = new RageClickTracker();\n }\n\n this.listenerRageClick = function(ev) {\n var currentRageClickConfig = this._getClickTrackingConfig(CONFIG_TRACK_RAGE_CLICK);\n if (!currentRageClickConfig && !this.mp.is_recording_heatmap_data()) {\n return;\n }\n\n if (this.currentUrlBlocked()) {\n return;\n }\n\n if (this._rageClickTracker.isRageClick(ev, currentRageClickConfig)) {\n this.trackDomEvent(ev, MP_EV_RAGE_CLICK);\n }\n }.bind(this);\n win.addEventListener(EV_CLICK, this.listenerRageClick);\n};\n\nAutocapture.prototype.initScrollTracking = function() {\n win.removeEventListener(EV_SCROLLEND, this.listenerScroll);\n win.removeEventListener(EV_SCROLL, this.listenerScroll);\n\n\n if (!this.getConfig(CONFIG_TRACK_SCROLL)) {\n return;\n }\n logger$1.log('Initializing scroll tracking');\n this.lastScrollCheckpoint = 0;\n\n var scrollTrackFunction = function() {\n if (!this.getConfig(CONFIG_TRACK_SCROLL)) {\n return;\n }\n if (this.currentUrlBlocked()) {\n return;\n }\n\n var shouldTrack = this.getConfig(CONFIG_SCROLL_CAPTURE_ALL);\n var scrollCheckpoints = (this.getConfig(CONFIG_SCROLL_CHECKPOINTS) || [])\n .slice()\n .sort(function(a, b) { return a - b; });\n\n var scrollTop = win.scrollY;\n var props = _.extend({'$scroll_top': scrollTop}, DEFAULT_PROPS);\n try {\n var scrollHeight = document$1.body.scrollHeight;\n var scrollPercentage = Math.round((scrollTop / (scrollHeight - win.innerHeight)) * 100);\n props['$scroll_height'] = scrollHeight;\n props['$scroll_percentage'] = scrollPercentage;\n if (scrollPercentage > this.lastScrollCheckpoint) {\n for (var i = 0; i < scrollCheckpoints.length; i++) {\n var checkpoint = scrollCheckpoints[i];\n if (\n scrollPercentage >= checkpoint &&\n this.lastScrollCheckpoint < checkpoint\n ) {\n props['$scroll_checkpoint'] = checkpoint;\n this.lastScrollCheckpoint = checkpoint;\n shouldTrack = true;\n }\n }\n }\n } catch (err) {\n logger$1.critical('Error while calculating scroll percentage', err);\n }\n if (shouldTrack) {\n this.mp.track(MP_EV_SCROLL, props);\n }\n }.bind(this);\n\n var scrollEndPolyfill = getPolyfillScrollEndFunction(scrollTrackFunction);\n this.listenerScroll = scrollEndPolyfill.listener;\n win.addEventListener(scrollEndPolyfill.eventType, this.listenerScroll);\n};\n\nAutocapture.prototype.initSubmitTracking = function() {\n win.removeEventListener(EV_SUBMIT, this.listenerSubmit);\n\n if (!this.getConfig(CONFIG_TRACK_SUBMIT)) {\n return;\n }\n logger$1.log('Initializing submit tracking');\n\n this.listenerSubmit = function(ev) {\n if (!this.getConfig(CONFIG_TRACK_SUBMIT)) {\n return;\n }\n this.trackDomEvent(ev, MP_EV_SUBMIT);\n }.bind(this);\n win.addEventListener(EV_SUBMIT, this.listenerSubmit);\n};\n\nAutocapture.prototype.initPageLeaveTracking = function() {\n // Capture page_leave both when the user navigates away from the page (visibilitychange) as well\n // as when they navigate to a different page within the SPA (popstate/pushstate/hashchange).\n document$1.removeEventListener(EV_VISIBILITYCHANGE, this.listenerPageLeaveVisibilitychange);\n win.removeEventListener(EV_MP_LOCATION_CHANGE, this.listenerPageLeaveLocationchange);\n win.removeEventListener(EV_LOAD, this.listenerPageLoad);\n\n if (!this.getConfig(CONFIG_TRACK_PAGE_LEAVE) && !this.mp.get_config('record_heatmap_data')) {\n return;\n }\n\n logger$1.log('Initializing page visibility tracking.');\n this._initScrollDepthTracking();\n var previousTrackedUrl = _.info.currentUrl();\n\n // Initialize previousScrollHeight on `load` which handles async loading\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event\n this.listenerPageLoad = function() {\n this.previousScrollHeight = document$1.body.scrollHeight;\n }.bind(this);\n win.addEventListener(EV_LOAD, this.listenerPageLoad);\n\n // Track page navigation events similar to how initPageviewTracking does it\n this.listenerPageLeaveLocationchange = safewrap(function(ev) {\n if (this.currentUrlBlocked()) {\n return;\n }\n\n var currentUrl = _.info.currentUrl();\n // Track all URL changes including query string or fragment changes as separate scroll sessions\n var shouldTrack = currentUrl !== previousTrackedUrl;\n\n if (shouldTrack) {\n this._trackPageLeave(ev, previousTrackedUrl, this.previousScrollHeight);\n previousTrackedUrl = currentUrl;\n // Fragment navigation should call scroll(end) and trigger listener, don't add window.scrollY here.\n this.maxScrollViewDepth = Math.max(document$1.documentElement.clientHeight, win.innerHeight || 0);\n this.previousScrollHeight = document$1.body.scrollHeight;\n this.hasTrackedScrollSession = false;\n }\n }.bind(this));\n win.addEventListener(EV_MP_LOCATION_CHANGE, this.listenerPageLeaveLocationchange);\n\n this.listenerPageLeaveVisibilitychange = function(ev) {\n if (document$1.hidden) {\n this._trackPageLeave(ev, previousTrackedUrl, this.previousScrollHeight);\n }\n }.bind(this);\n document$1.addEventListener(EV_VISIBILITYCHANGE, this.listenerPageLeaveVisibilitychange);\n};\n\nAutocapture.prototype.stopDeadClickTracking = function() {\n if (this.listenerDeadClick) {\n win.removeEventListener(EV_CLICK, this.listenerDeadClick);\n this.listenerDeadClick = null;\n }\n\n if (this._deadClickTracker) {\n this._deadClickTracker.stopTracking();\n this._deadClickTracker = null;\n }\n};\n\n// TODO integrate error_reporter from mixpanel instance\nsafewrapClass(Autocapture);\n\nvar logger = console_with_prefix('flags');\n\nvar FLAGS_CONFIG_KEY = 'flags';\n\nvar CONFIG_CONTEXT = 'context';\nvar CONFIG_DEFAULTS = {};\nCONFIG_DEFAULTS[CONFIG_CONTEXT] = {};\n\n/**\n * FeatureFlagManager: support for Mixpanel's feature flagging product\n * @constructor\n */\nvar FeatureFlagManager = function(initOptions) {\n this.fetch = win['fetch'];\n this.getFullApiRoute = initOptions.getFullApiRoute;\n this.getMpConfig = initOptions.getConfigFunc;\n this.setMpConfig = initOptions.setConfigFunc;\n this.getMpProperty = initOptions.getPropertyFunc;\n this.track = initOptions.trackingFunc;\n};\n\nFeatureFlagManager.prototype.init = function() {\n if (!this.minApisSupported()) {\n logger.critical('Feature Flags unavailable: missing minimum required APIs');\n return;\n }\n\n this.flags = null;\n this.fetchFlags();\n\n this.trackedFeatures = new Set();\n};\n\nFeatureFlagManager.prototype.getFullConfig = function() {\n var ffConfig = this.getMpConfig(FLAGS_CONFIG_KEY);\n if (!ffConfig) {\n // flags are completely off\n return {};\n } else if (_.isObject(ffConfig)) {\n return _.extend({}, CONFIG_DEFAULTS, ffConfig);\n } else {\n // config is non-object truthy value, return default\n return CONFIG_DEFAULTS;\n }\n};\n\nFeatureFlagManager.prototype.getConfig = function(key) {\n return this.getFullConfig()[key];\n};\n\nFeatureFlagManager.prototype.isSystemEnabled = function() {\n return !!this.getMpConfig(FLAGS_CONFIG_KEY);\n};\n\nFeatureFlagManager.prototype.updateContext = function(newContext, options) {\n if (!this.isSystemEnabled()) {\n logger.critical('Feature Flags not enabled, cannot update context');\n return Promise.resolve();\n }\n\n var ffConfig = this.getMpConfig(FLAGS_CONFIG_KEY);\n if (!_.isObject(ffConfig)) {\n ffConfig = {};\n }\n var oldContext = (options && options['replace']) ? {} : this.getConfig(CONFIG_CONTEXT);\n ffConfig[CONFIG_CONTEXT] = _.extend({}, oldContext, newContext);\n\n this.setMpConfig(FLAGS_CONFIG_KEY, ffConfig);\n return this.fetchFlags();\n};\n\nFeatureFlagManager.prototype.areFlagsReady = function() {\n if (!this.isSystemEnabled()) {\n logger.error('Feature Flags not enabled');\n }\n return !!this.flags;\n};\n\nFeatureFlagManager.prototype.fetchFlags = function() {\n if (!this.isSystemEnabled()) {\n return Promise.resolve();\n }\n\n var distinctId = this.getMpProperty('distinct_id');\n var deviceId = this.getMpProperty('$device_id');\n var traceparent = generateTraceparent();\n logger.log('Fetching flags for distinct ID: ' + distinctId);\n\n var context = _.extend({'distinct_id': distinctId, 'device_id': deviceId}, this.getConfig(CONFIG_CONTEXT));\n var searchParams = new URLSearchParams();\n searchParams.set('context', JSON.stringify(context));\n searchParams.set('token', this.getMpConfig('token'));\n searchParams.set('mp_lib', 'web');\n searchParams.set('$lib_version', Config.LIB_VERSION);\n var url = this.getFullApiRoute() + '?' + searchParams.toString();\n\n this._fetchInProgressStartTime = Date.now();\n this.fetchPromise = this.fetch.call(win, url, {\n 'method': 'GET',\n 'headers': {\n 'Authorization': 'Basic ' + btoa(this.getMpConfig('token') + ':'),\n 'traceparent': traceparent\n }\n }).then(function(response) {\n this.markFetchComplete();\n return response.json().then(function(responseBody) {\n var responseFlags = responseBody['flags'];\n if (!responseFlags) {\n throw new Error('No flags in API response');\n }\n var flags = new Map();\n _.each(responseFlags, function(data, key) {\n flags.set(key, {\n 'key': data['variant_key'],\n 'value': data['variant_value'],\n 'experiment_id': data['experiment_id'],\n 'is_experiment_active': data['is_experiment_active'],\n 'is_qa_tester': data['is_qa_tester']\n });\n });\n this.flags = flags;\n this._traceparent = traceparent;\n }.bind(this)).catch(function(error) {\n this.markFetchComplete();\n logger.error(error);\n }.bind(this));\n }.bind(this)).catch(function(error) {\n this.markFetchComplete();\n logger.error(error);\n }.bind(this));\n\n return this.fetchPromise;\n};\n\nFeatureFlagManager.prototype.markFetchComplete = function() {\n if (!this._fetchInProgressStartTime) {\n logger.error('Fetch in progress started time not set, cannot mark fetch complete');\n return;\n }\n this._fetchStartTime = this._fetchInProgressStartTime;\n this._fetchCompleteTime = Date.now();\n this._fetchLatency = this._fetchCompleteTime - this._fetchStartTime;\n this._fetchInProgressStartTime = null;\n};\n\nFeatureFlagManager.prototype.getVariant = function(featureName, fallback) {\n if (!this.fetchPromise) {\n return new Promise(function(resolve) {\n logger.critical('Feature Flags not initialized');\n resolve(fallback);\n });\n }\n\n return this.fetchPromise.then(function() {\n return this.getVariantSync(featureName, fallback);\n }.bind(this)).catch(function(error) {\n logger.error(error);\n return fallback;\n });\n};\n\nFeatureFlagManager.prototype.getVariantSync = function(featureName, fallback) {\n if (!this.areFlagsReady()) {\n logger.log('Flags not loaded yet');\n return fallback;\n }\n var feature = this.flags.get(featureName);\n if (!feature) {\n logger.log('No flag found: \"' + featureName + '\"');\n return fallback;\n }\n this.trackFeatureCheck(featureName, feature);\n return feature;\n};\n\nFeatureFlagManager.prototype.getVariantValue = function(featureName, fallbackValue) {\n return this.getVariant(featureName, {'value': fallbackValue}).then(function(feature) {\n return feature['value'];\n }).catch(function(error) {\n logger.error(error);\n return fallbackValue;\n });\n};\n\n// TODO remove deprecated method\nFeatureFlagManager.prototype.getFeatureData = function(featureName, fallbackValue) {\n logger.critical('mixpanel.flags.get_feature_data() is deprecated and will be removed in a future release. Use mixpanel.flags.get_variant_value() instead.');\n return this.getVariantValue(featureName, fallbackValue);\n};\n\nFeatureFlagManager.prototype.getVariantValueSync = function(featureName, fallbackValue) {\n return this.getVariantSync(featureName, {'value': fallbackValue})['value'];\n};\n\nFeatureFlagManager.prototype.isEnabled = function(featureName, fallbackValue) {\n return this.getVariantValue(featureName).then(function() {\n return this.isEnabledSync(featureName, fallbackValue);\n }.bind(this)).catch(function(error) {\n logger.error(error);\n return fallbackValue;\n });\n};\n\nFeatureFlagManager.prototype.isEnabledSync = function(featureName, fallbackValue) {\n fallbackValue = fallbackValue || false;\n var val = this.getVariantValueSync(featureName, fallbackValue);\n if (val !== true && val !== false) {\n logger.error('Feature flag \"' + featureName + '\" value: ' + val + ' is not a boolean; returning fallback value: ' + fallbackValue);\n val = fallbackValue;\n }\n return val;\n};\n\nFeatureFlagManager.prototype.trackFeatureCheck = function(featureName, feature) {\n if (this.trackedFeatures.has(featureName)) {\n return;\n }\n this.trackedFeatures.add(featureName);\n\n var trackingProperties = {\n 'Experiment name': featureName,\n 'Variant name': feature['key'],\n '$experiment_type': 'feature_flag',\n 'Variant fetch start time': new Date(this._fetchStartTime).toISOString(),\n 'Variant fetch complete time': new Date(this._fetchCompleteTime).toISOString(),\n 'Variant fetch latency (ms)': this._fetchLatency,\n 'Variant fetch traceparent': this._traceparent,\n };\n\n if (feature['experiment_id'] !== 'undefined') {\n trackingProperties['$experiment_id'] = feature['experiment_id'];\n }\n if (feature['is_experiment_active'] !== 'undefined') {\n trackingProperties['$is_experiment_active'] = feature['is_experiment_active'];\n }\n if (feature['is_qa_tester'] !== 'undefined') {\n trackingProperties['$is_qa_tester'] = feature['is_qa_tester'];\n }\n\n this.track('$experiment_started', trackingProperties);\n};\n\nFeatureFlagManager.prototype.minApisSupported = function() {\n return !!this.fetch &&\n typeof Promise !== 'undefined' &&\n typeof Map !== 'undefined' &&\n typeof Set !== 'undefined';\n};\n\nsafewrapClass(FeatureFlagManager);\n\nFeatureFlagManager.prototype['are_flags_ready'] = FeatureFlagManager.prototype.areFlagsReady;\nFeatureFlagManager.prototype['get_variant'] = FeatureFlagManager.prototype.getVariant;\nFeatureFlagManager.prototype['get_variant_sync'] = FeatureFlagManager.prototype.getVariantSync;\nFeatureFlagManager.prototype['get_variant_value'] = FeatureFlagManager.prototype.getVariantValue;\nFeatureFlagManager.prototype['get_variant_value_sync'] = FeatureFlagManager.prototype.getVariantValueSync;\nFeatureFlagManager.prototype['is_enabled'] = FeatureFlagManager.prototype.isEnabled;\nFeatureFlagManager.prototype['is_enabled_sync'] = FeatureFlagManager.prototype.isEnabledSync;\nFeatureFlagManager.prototype['update_context'] = FeatureFlagManager.prototype.updateContext;\n\n// Deprecated method\nFeatureFlagManager.prototype['get_feature_data'] = FeatureFlagManager.prototype.getFeatureData;\n\n/* eslint camelcase: \"off\" */\n\n\n/**\n * DomTracker Object\n * @constructor\n */\nvar DomTracker = function() {};\n\n\n// interface\nDomTracker.prototype.create_properties = function() {};\nDomTracker.prototype.event_handler = function() {};\nDomTracker.prototype.after_track_handler = function() {};\n\nDomTracker.prototype.init = function(mixpanel_instance) {\n this.mp = mixpanel_instance;\n return this;\n};\n\n/**\n * @param {Object|string} query\n * @param {string} event_name\n * @param {Object=} properties\n * @param {function=} user_callback\n */\nDomTracker.prototype.track = function(query, event_name, properties, user_callback) {\n var that = this;\n var elements = _.dom_query(query);\n\n if (elements.length === 0) {\n console$1.error('The DOM query (' + query + ') returned 0 elements');\n return;\n }\n\n _.each(elements, function(element) {\n _.register_event(element, this.override_event, function(e) {\n var options = {};\n var props = that.create_properties(properties, this);\n var timeout = that.mp.get_config('track_links_timeout');\n\n that.event_handler(e, this, options);\n\n // in case the mixpanel servers don't get back to us in time\n window.setTimeout(that.track_callback(user_callback, props, options, true), timeout);\n\n // fire the tracking event\n that.mp.track(event_name, props, that.track_callback(user_callback, props, options));\n });\n }, this);\n\n return true;\n};\n\n/**\n * @param {function} user_callback\n * @param {Object} props\n * @param {boolean=} timeout_occured\n */\nDomTracker.prototype.track_callback = function(user_callback, props, options, timeout_occured) {\n timeout_occured = timeout_occured || false;\n var that = this;\n\n return function() {\n // options is referenced from both callbacks, so we can have\n // a 'lock' of sorts to ensure only one fires\n if (options.callback_fired) { return; }\n options.callback_fired = true;\n\n if (user_callback && user_callback(timeout_occured, props) === false) {\n // user can prevent the default functionality by\n // returning false from their callback\n return;\n }\n\n that.after_track_handler(props, options, timeout_occured);\n };\n};\n\nDomTracker.prototype.create_properties = function(properties, element) {\n var props;\n\n if (typeof(properties) === 'function') {\n props = properties(element);\n } else {\n props = _.extend({}, properties);\n }\n\n return props;\n};\n\n/**\n * LinkTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar LinkTracker = function() {\n this.override_event = 'click';\n};\n_.inherit(LinkTracker, DomTracker);\n\nLinkTracker.prototype.create_properties = function(properties, element) {\n var props = LinkTracker.superclass.create_properties.apply(this, arguments);\n\n if (element.href) { props['url'] = element.href; }\n\n return props;\n};\n\nLinkTracker.prototype.event_handler = function(evt, element, options) {\n options.new_tab = (\n evt.which === 2 ||\n evt.metaKey ||\n evt.ctrlKey ||\n element.target === '_blank'\n );\n options.href = element.href;\n\n if (!options.new_tab) {\n evt.preventDefault();\n }\n};\n\nLinkTracker.prototype.after_track_handler = function(props, options) {\n if (options.new_tab) { return; }\n\n setTimeout(function() {\n window.location = options.href;\n }, 0);\n};\n\n/**\n * FormTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar FormTracker = function() {\n this.override_event = 'submit';\n};\n_.inherit(FormTracker, DomTracker);\n\nFormTracker.prototype.event_handler = function(evt, element, options) {\n options.element = element;\n evt.preventDefault();\n};\n\nFormTracker.prototype.after_track_handler = function(props, options) {\n setTimeout(function() {\n options.element.submit();\n }, 0);\n};\n\n/* eslint camelcase: \"off\" */\n\n\n/** @const */ var SET_ACTION = '$set';\n/** @const */ var SET_ONCE_ACTION = '$set_once';\n/** @const */ var UNSET_ACTION = '$unset';\n/** @const */ var ADD_ACTION = '$add';\n/** @const */ var APPEND_ACTION = '$append';\n/** @const */ var UNION_ACTION = '$union';\n/** @const */ var REMOVE_ACTION = '$remove';\n/** @const */ var DELETE_ACTION = '$delete';\n\n// Common internal methods for mixpanel.people and mixpanel.group APIs.\n// These methods shouldn't involve network I/O.\nvar apiActions = {\n set_action: function(prop, to) {\n var data = {};\n var $set = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $set[k] = v;\n }\n }, this);\n } else {\n $set[prop] = to;\n }\n\n data[SET_ACTION] = $set;\n return data;\n },\n\n unset_action: function(prop) {\n var data = {};\n var $unset = [];\n if (!_.isArray(prop)) {\n prop = [prop];\n }\n\n _.each(prop, function(k) {\n if (!this._is_reserved_property(k)) {\n $unset.push(k);\n }\n }, this);\n\n data[UNSET_ACTION] = $unset;\n return data;\n },\n\n set_once_action: function(prop, to) {\n var data = {};\n var $set_once = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $set_once[k] = v;\n }\n }, this);\n } else {\n $set_once[prop] = to;\n }\n data[SET_ONCE_ACTION] = $set_once;\n return data;\n },\n\n union_action: function(list_name, values) {\n var data = {};\n var $union = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $union[k] = _.isArray(v) ? v : [v];\n }\n }, this);\n } else {\n $union[list_name] = _.isArray(values) ? values : [values];\n }\n data[UNION_ACTION] = $union;\n return data;\n },\n\n append_action: function(list_name, value) {\n var data = {};\n var $append = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $append[k] = v;\n }\n }, this);\n } else {\n $append[list_name] = value;\n }\n data[APPEND_ACTION] = $append;\n return data;\n },\n\n remove_action: function(list_name, value) {\n var data = {};\n var $remove = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $remove[k] = v;\n }\n }, this);\n } else {\n $remove[list_name] = value;\n }\n data[REMOVE_ACTION] = $remove;\n return data;\n },\n\n delete_action: function() {\n var data = {};\n data[DELETE_ACTION] = '';\n return data;\n }\n};\n\n/* eslint camelcase: \"off\" */\n\n/**\n * Mixpanel Group Object\n * @constructor\n */\nvar MixpanelGroup = function() {};\n\n_.extend(MixpanelGroup.prototype, apiActions);\n\nMixpanelGroup.prototype._init = function(mixpanel_instance, group_key, group_id) {\n this._mixpanel = mixpanel_instance;\n this._group_key = group_key;\n this._group_id = group_id;\n};\n\n/**\n * Set properties on a group.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').set('Location', '405 Howard');\n *\n * // or set multiple properties at once\n * mixpanel.get_group('company', 'mixpanel').set({\n * 'Location': '405 Howard',\n * 'Founded' : 2009,\n * });\n * // properties can be strings, integers, dates, or lists\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n var data = this.set_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/**\n * Set properties on a group, only if they do not yet exist.\n * This will not overwrite previous group property values, unlike\n * group.set().\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').set_once('Location', '405 Howard');\n *\n * // or set multiple properties at once\n * mixpanel.get_group('company', 'mixpanel').set_once({\n * 'Location': '405 Howard',\n * 'Founded' : 2009,\n * });\n * // properties can be strings, integers, lists or dates\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set_once = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n var data = this.set_once_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/**\n * Unset properties on a group permanently.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').unset('Founded');\n *\n * @param {String} prop The name of the property.\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.unset = addOptOutCheckMixpanelGroup(function(prop, callback) {\n var data = this.unset_action(prop);\n return this._send_request(data, callback);\n});\n\n/**\n * Merge a given list with a list-valued group property, excluding duplicate values.\n *\n * ### Usage:\n *\n * // merge a value to a list, creating it if needed\n * mixpanel.get_group('company', 'mixpanel').union('Location', ['San Francisco', 'London']);\n *\n * @param {String} list_name Name of the property.\n * @param {Array} values Values to merge with the given property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.union = addOptOutCheckMixpanelGroup(function(list_name, values, callback) {\n if (_.isObject(list_name)) {\n callback = values;\n }\n var data = this.union_action(list_name, values);\n return this._send_request(data, callback);\n});\n\n/**\n * Permanently delete a group.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').delete();\n *\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype['delete'] = addOptOutCheckMixpanelGroup(function(callback) {\n // bracket notation above prevents a minification error related to reserved words\n var data = this.delete_action();\n return this._send_request(data, callback);\n});\n\n/**\n * Remove a property from a group. The value will be ignored if doesn't exist.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').remove('Location', 'London');\n *\n * @param {String} list_name Name of the property.\n * @param {Object} value Value to remove from the given group property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.remove = addOptOutCheckMixpanelGroup(function(list_name, value, callback) {\n var data = this.remove_action(list_name, value);\n return this._send_request(data, callback);\n});\n\nMixpanelGroup.prototype._send_request = function(data, callback) {\n data['$group_key'] = this._group_key;\n data['$group_id'] = this._group_id;\n data['$token'] = this._get_config('token');\n\n var date_encoded_data = _.encodeDates(data);\n return this._mixpanel._track_or_batch({\n type: 'groups',\n data: date_encoded_data,\n endpoint: this._mixpanel.get_api_host('groups') + '/' + this._get_config('api_routes')['groups'],\n batcher: this._mixpanel.request_batchers.groups\n }, callback);\n};\n\nMixpanelGroup.prototype._is_reserved_property = function(prop) {\n return prop === '$group_key' || prop === '$group_id';\n};\n\nMixpanelGroup.prototype._get_config = function(conf) {\n return this._mixpanel.get_config(conf);\n};\n\nMixpanelGroup.prototype.toString = function() {\n return this._mixpanel.toString() + '.group.' + this._group_key + '.' + this._group_id;\n};\n\n// MixpanelGroup Exports\nMixpanelGroup.prototype['remove'] = MixpanelGroup.prototype.remove;\nMixpanelGroup.prototype['set'] = MixpanelGroup.prototype.set;\nMixpanelGroup.prototype['set_once'] = MixpanelGroup.prototype.set_once;\nMixpanelGroup.prototype['union'] = MixpanelGroup.prototype.union;\nMixpanelGroup.prototype['unset'] = MixpanelGroup.prototype.unset;\nMixpanelGroup.prototype['toString'] = MixpanelGroup.prototype.toString;\n\n/* eslint camelcase: \"off\" */\n\n/**\n * Mixpanel People Object\n * @constructor\n */\nvar MixpanelPeople = function() {};\n\n_.extend(MixpanelPeople.prototype, apiActions);\n\nMixpanelPeople.prototype._init = function(mixpanel_instance) {\n this._mixpanel = mixpanel_instance;\n};\n\n/*\n* Set properties on a user record.\n*\n* ### Usage:\n*\n* mixpanel.people.set('gender', 'm');\n*\n* // or set multiple properties at once\n* mixpanel.people.set({\n* 'Company': 'Acme',\n* 'Plan': 'Premium',\n* 'Upgrade date': new Date()\n* });\n* // properties can be strings, integers, dates, or lists\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n var data = this.set_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n // make sure that the referrer info has been updated and saved\n if (this._get_config('save_referrer')) {\n this._mixpanel['persistence'].update_referrer_info(document.referrer);\n }\n\n // update $set object with default people properties\n data[SET_ACTION] = _.extend(\n {},\n _.info.people_properties(),\n data[SET_ACTION]\n );\n return this._send_request(data, callback);\n});\n\n/*\n* Set properties on a user record, only if they do not yet exist.\n* This will not overwrite previous people property values, unlike\n* people.set().\n*\n* ### Usage:\n*\n* mixpanel.people.set_once('First Login Date', new Date());\n*\n* // or set multiple properties at once\n* mixpanel.people.set_once({\n* 'First Login Date': new Date(),\n* 'Starting Plan': 'Premium'\n* });\n*\n* // properties can be strings, integers or dates\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set_once = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n var data = this.set_once_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/*\n* Unset properties on a user record (permanently removes the properties and their values from a profile).\n*\n* ### Usage:\n*\n* mixpanel.people.unset('gender');\n*\n* // or unset multiple properties at once\n* mixpanel.people.unset(['gender', 'Company']);\n*\n* @param {Array|String} prop If a string, this is the name of the property. If an array, this is a list of property names.\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.unset = addOptOutCheckMixpanelPeople(function(prop, callback) {\n var data = this.unset_action(prop);\n return this._send_request(data, callback);\n});\n\n/*\n* Increment/decrement numeric people analytics properties.\n*\n* ### Usage:\n*\n* mixpanel.people.increment('page_views', 1);\n*\n* // or, for convenience, if you're just incrementing a counter by\n* // 1, you can simply do\n* mixpanel.people.increment('page_views');\n*\n* // to decrement a counter, pass a negative number\n* mixpanel.people.increment('credits_left', -1);\n*\n* // like mixpanel.people.set(), you can increment multiple\n* // properties at once:\n* mixpanel.people.increment({\n* counter1: 1,\n* counter2: 6\n* });\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and numeric values.\n* @param {Number} [by] An amount to increment the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.increment = addOptOutCheckMixpanelPeople(function(prop, by, callback) {\n var data = {};\n var $add = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n if (isNaN(parseFloat(v))) {\n console$1.error('Invalid increment value passed to mixpanel.people.increment - must be a number');\n return;\n } else {\n $add[k] = v;\n }\n }\n }, this);\n callback = by;\n } else {\n // convenience: mixpanel.people.increment('property'); will\n // increment 'property' by 1\n if (_.isUndefined(by)) {\n by = 1;\n }\n $add[prop] = by;\n }\n data[ADD_ACTION] = $add;\n\n return this._send_request(data, callback);\n});\n\n/*\n* Append a value to a list-valued people analytics property.\n*\n* ### Usage:\n*\n* // append a value to a list, creating it if needed\n* mixpanel.people.append('pages_visited', 'homepage');\n*\n* // like mixpanel.people.set(), you can append multiple\n* // properties at once:\n* mixpanel.people.append({\n* list1: 'bob',\n* list2: 123\n* });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value An item to append to the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.append = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n if (_.isObject(list_name)) {\n callback = value;\n }\n var data = this.append_action(list_name, value);\n return this._send_request(data, callback);\n});\n\n/*\n* Remove a value from a list-valued people analytics property.\n*\n* ### Usage:\n*\n* mixpanel.people.remove('School', 'UCB');\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value Item to remove from the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.remove = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n if (_.isObject(list_name)) {\n callback = value;\n }\n var data = this.remove_action(list_name, value);\n return this._send_request(data, callback);\n});\n\n/*\n* Merge a given list with a list-valued people analytics property,\n* excluding duplicate values.\n*\n* ### Usage:\n*\n* // merge a value to a list, creating it if needed\n* mixpanel.people.union('pages_visited', 'homepage');\n*\n* // like mixpanel.people.set(), you can append multiple\n* // properties at once:\n* mixpanel.people.union({\n* list1: 'bob',\n* list2: 123\n* });\n*\n* // like mixpanel.people.append(), you can append multiple\n* // values to the same list:\n* mixpanel.people.union({\n* list1: ['bob', 'billy']\n* });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] Value / values to merge with the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.union = addOptOutCheckMixpanelPeople(function(list_name, values, callback) {\n if (_.isObject(list_name)) {\n callback = values;\n }\n var data = this.union_action(list_name, values);\n return this._send_request(data, callback);\n});\n\n/*\n * Record that you have charged the current user a certain amount\n * of money. Charges recorded with track_charge() will appear in the\n * Mixpanel revenue report.\n *\n * ### Usage:\n *\n * // charge a user $50\n * mixpanel.people.track_charge(50);\n *\n * // charge a user $30.50 on the 2nd of january\n * mixpanel.people.track_charge(30.50, {\n * '$time': new Date('jan 1 2012')\n * });\n *\n * @param {Number} amount The amount of money charged to the current user\n * @param {Object} [properties] An associative array of properties associated with the charge\n * @param {Function} [callback] If provided, the callback will be called when the server responds\n * @deprecated\n */\nMixpanelPeople.prototype.track_charge = addOptOutCheckMixpanelPeople(function() {\n console$1.error('mixpanel.people.track_charge() is deprecated and no longer has any effect.');\n});\n\n/*\n * Permanently clear all revenue report transactions from the\n * current user's people analytics profile.\n *\n * ### Usage:\n *\n * mixpanel.people.clear_charges();\n *\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n * @deprecated\n */\nMixpanelPeople.prototype.clear_charges = function(callback) {\n return this.set('$transactions', [], callback);\n};\n\n/*\n* Permanently deletes the current people analytics profile from\n* Mixpanel (using the current distinct_id).\n*\n* ### Usage:\n*\n* // remove the all data you have stored about the current user\n* mixpanel.people.delete_user();\n*\n*/\nMixpanelPeople.prototype.delete_user = function() {\n if (!this._identify_called()) {\n console$1.error('mixpanel.people.delete_user() requires you to call identify() first');\n return;\n }\n var data = {'$delete': this._mixpanel.get_distinct_id()};\n return this._send_request(data);\n};\n\nMixpanelPeople.prototype.toString = function() {\n return this._mixpanel.toString() + '.people';\n};\n\nMixpanelPeople.prototype._send_request = function(data, callback) {\n data['$token'] = this._get_config('token');\n data['$distinct_id'] = this._mixpanel.get_distinct_id();\n var device_id = this._mixpanel.get_property('$device_id');\n var user_id = this._mixpanel.get_property('$user_id');\n var had_persisted_distinct_id = this._mixpanel.get_property('$had_persisted_distinct_id');\n if (device_id) {\n data['$device_id'] = device_id;\n }\n if (user_id) {\n data['$user_id'] = user_id;\n }\n if (had_persisted_distinct_id) {\n data['$had_persisted_distinct_id'] = had_persisted_distinct_id;\n }\n\n var date_encoded_data = _.encodeDates(data);\n\n if (!this._identify_called()) {\n this._enqueue(data);\n if (!_.isUndefined(callback)) {\n if (this._get_config('verbose')) {\n callback({status: -1, error: null});\n } else {\n callback(-1);\n }\n }\n return _.truncate(date_encoded_data, 255);\n }\n\n return this._mixpanel._track_or_batch({\n type: 'people',\n data: date_encoded_data,\n endpoint: this._mixpanel.get_api_host('people') + '/' + this._get_config('api_routes')['engage'],\n batcher: this._mixpanel.request_batchers.people\n }, callback);\n};\n\nMixpanelPeople.prototype._get_config = function(conf_var) {\n return this._mixpanel.get_config(conf_var);\n};\n\nMixpanelPeople.prototype._identify_called = function() {\n return this._mixpanel._flags.identify_called === true;\n};\n\n// Queue up engage operations if identify hasn't been called yet.\nMixpanelPeople.prototype._enqueue = function(data) {\n if (SET_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(SET_ACTION, data);\n } else if (SET_ONCE_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(SET_ONCE_ACTION, data);\n } else if (UNSET_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(UNSET_ACTION, data);\n } else if (ADD_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(ADD_ACTION, data);\n } else if (APPEND_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, data);\n } else if (REMOVE_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, data);\n } else if (UNION_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(UNION_ACTION, data);\n } else {\n console$1.error('Invalid call to _enqueue():', data);\n }\n};\n\nMixpanelPeople.prototype._flush_one_queue = function(action, action_method, callback, queue_to_params_fn) {\n var _this = this;\n var queued_data = _.extend({}, this._mixpanel['persistence'].load_queue(action));\n var action_params = queued_data;\n\n if (!_.isUndefined(queued_data) && _.isObject(queued_data) && !_.isEmptyObject(queued_data)) {\n _this._mixpanel['persistence']._pop_from_people_queue(action, queued_data);\n _this._mixpanel['persistence'].save();\n if (queue_to_params_fn) {\n action_params = queue_to_params_fn(queued_data);\n }\n action_method.call(_this, action_params, function(response, data) {\n // on bad response, we want to add it back to the queue\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(action, queued_data);\n }\n if (!_.isUndefined(callback)) {\n callback(response, data);\n }\n });\n }\n};\n\n// Flush queued engage operations - order does not matter,\n// and there are network level race conditions anyway\nMixpanelPeople.prototype._flush = function(\n _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n var _this = this;\n\n this._flush_one_queue(SET_ACTION, this.set, _set_callback);\n this._flush_one_queue(SET_ONCE_ACTION, this.set_once, _set_once_callback);\n this._flush_one_queue(UNSET_ACTION, this.unset, _unset_callback, function(queue) { return _.keys(queue); });\n this._flush_one_queue(ADD_ACTION, this.increment, _add_callback);\n this._flush_one_queue(UNION_ACTION, this.union, _union_callback);\n\n // we have to fire off each $append individually since there is\n // no concat method server side\n var $append_queue = this._mixpanel['persistence'].load_queue(APPEND_ACTION);\n if (!_.isUndefined($append_queue) && _.isArray($append_queue) && $append_queue.length) {\n var $append_item;\n var append_callback = function(response, data) {\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, $append_item);\n }\n if (!_.isUndefined(_append_callback)) {\n _append_callback(response, data);\n }\n };\n for (var i = $append_queue.length - 1; i >= 0; i--) {\n $append_queue = this._mixpanel['persistence'].load_queue(APPEND_ACTION);\n $append_item = $append_queue.pop();\n _this._mixpanel['persistence'].save();\n if (!_.isEmptyObject($append_item)) {\n _this.append($append_item, append_callback);\n }\n }\n }\n\n // same for $remove\n var $remove_queue = this._mixpanel['persistence'].load_queue(REMOVE_ACTION);\n if (!_.isUndefined($remove_queue) && _.isArray($remove_queue) && $remove_queue.length) {\n var $remove_item;\n var remove_callback = function(response, data) {\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, $remove_item);\n }\n if (!_.isUndefined(_remove_callback)) {\n _remove_callback(response, data);\n }\n };\n for (var j = $remove_queue.length - 1; j >= 0; j--) {\n $remove_queue = this._mixpanel['persistence'].load_queue(REMOVE_ACTION);\n $remove_item = $remove_queue.pop();\n _this._mixpanel['persistence'].save();\n if (!_.isEmptyObject($remove_item)) {\n _this.remove($remove_item, remove_callback);\n }\n }\n }\n};\n\nMixpanelPeople.prototype._is_reserved_property = function(prop) {\n return prop === '$distinct_id' || prop === '$token' || prop === '$device_id' || prop === '$user_id' || prop === '$had_persisted_distinct_id';\n};\n\n// MixpanelPeople Exports\nMixpanelPeople.prototype['set'] = MixpanelPeople.prototype.set;\nMixpanelPeople.prototype['set_once'] = MixpanelPeople.prototype.set_once;\nMixpanelPeople.prototype['unset'] = MixpanelPeople.prototype.unset;\nMixpanelPeople.prototype['increment'] = MixpanelPeople.prototype.increment;\nMixpanelPeople.prototype['append'] = MixpanelPeople.prototype.append;\nMixpanelPeople.prototype['remove'] = MixpanelPeople.prototype.remove;\nMixpanelPeople.prototype['union'] = MixpanelPeople.prototype.union;\nMixpanelPeople.prototype['track_charge'] = MixpanelPeople.prototype.track_charge;\nMixpanelPeople.prototype['clear_charges'] = MixpanelPeople.prototype.clear_charges;\nMixpanelPeople.prototype['delete_user'] = MixpanelPeople.prototype.delete_user;\nMixpanelPeople.prototype['toString'] = MixpanelPeople.prototype.toString;\n\n/* eslint camelcase: \"off\" */\n\n\n/*\n * Constants\n */\n/** @const */ var SET_QUEUE_KEY = '__mps';\n/** @const */ var SET_ONCE_QUEUE_KEY = '__mpso';\n/** @const */ var UNSET_QUEUE_KEY = '__mpus';\n/** @const */ var ADD_QUEUE_KEY = '__mpa';\n/** @const */ var APPEND_QUEUE_KEY = '__mpap';\n/** @const */ var REMOVE_QUEUE_KEY = '__mpr';\n/** @const */ var UNION_QUEUE_KEY = '__mpu';\n// This key is deprecated, but we want to check for it to see whether aliasing is allowed.\n/** @const */ var PEOPLE_DISTINCT_ID_KEY = '$people_distinct_id';\n/** @const */ var ALIAS_ID_KEY = '__alias';\n/** @const */ var EVENT_TIMERS_KEY = '__timers';\n/** @const */ var RESERVED_PROPERTIES = [\n SET_QUEUE_KEY,\n SET_ONCE_QUEUE_KEY,\n UNSET_QUEUE_KEY,\n ADD_QUEUE_KEY,\n APPEND_QUEUE_KEY,\n REMOVE_QUEUE_KEY,\n UNION_QUEUE_KEY,\n PEOPLE_DISTINCT_ID_KEY,\n ALIAS_ID_KEY,\n EVENT_TIMERS_KEY\n];\n\n/**\n * Mixpanel Persistence Object\n * @constructor\n */\nvar MixpanelPersistence = function(config) {\n this['props'] = {};\n this.campaign_params_saved = false;\n\n if (config['persistence_name']) {\n this.name = 'mp_' + config['persistence_name'];\n } else {\n this.name = 'mp_' + config['token'] + '_mixpanel';\n }\n\n var storage_type = config['persistence'];\n if (storage_type !== 'cookie' && storage_type !== 'localStorage') {\n console$1.critical('Unknown persistence type ' + storage_type + '; falling back to cookie');\n storage_type = config['persistence'] = 'cookie';\n }\n\n if (storage_type === 'localStorage' && _.localStorage.is_supported()) {\n this.storage = _.localStorage;\n } else {\n this.storage = _.cookie;\n }\n\n this.load();\n this.update_config(config);\n this.upgrade();\n this.save();\n};\n\nMixpanelPersistence.prototype.properties = function() {\n var p = {};\n\n this.load();\n\n // Filter out reserved properties\n _.each(this['props'], function(v, k) {\n if (!_.include(RESERVED_PROPERTIES, k)) {\n p[k] = v;\n }\n });\n return p;\n};\n\nMixpanelPersistence.prototype.load = function() {\n if (this.disabled) { return; }\n\n var entry = this.storage.parse(this.name);\n\n if (entry) {\n this['props'] = _.extend({}, entry);\n }\n};\n\nMixpanelPersistence.prototype.upgrade = function() {\n var old_cookie,\n old_localstorage;\n\n // if transferring from cookie to localStorage or vice-versa, copy existing\n // super properties over to new storage mode\n if (this.storage === _.localStorage) {\n old_cookie = _.cookie.parse(this.name);\n\n _.cookie.remove(this.name);\n _.cookie.remove(this.name, true);\n\n if (old_cookie) {\n this.register_once(old_cookie);\n }\n } else if (this.storage === _.cookie) {\n old_localstorage = _.localStorage.parse(this.name);\n\n _.localStorage.remove(this.name);\n\n if (old_localstorage) {\n this.register_once(old_localstorage);\n }\n }\n};\n\nMixpanelPersistence.prototype.save = function() {\n if (this.disabled) { return; }\n\n this.storage.set(\n this.name,\n JSONStringify(this['props']),\n this.expire_days,\n this.cross_subdomain,\n this.secure,\n this.cross_site,\n this.cookie_domain\n );\n};\n\nMixpanelPersistence.prototype.load_prop = function(key) {\n this.load();\n return this['props'][key];\n};\n\nMixpanelPersistence.prototype.remove = function() {\n // remove both domain and subdomain cookies\n this.storage.remove(this.name, false, this.cookie_domain);\n this.storage.remove(this.name, true, this.cookie_domain);\n};\n\n// removes the storage entry and deletes all loaded data\n// forced name for tests\nMixpanelPersistence.prototype.clear = function() {\n this.remove();\n this['props'] = {};\n};\n\n/**\n* @param {Object} props\n* @param {*=} default_value\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register_once = function(props, default_value, days) {\n if (_.isObject(props)) {\n if (typeof(default_value) === 'undefined') { default_value = 'None'; }\n this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n this.load();\n\n _.each(props, function(val, prop) {\n if (!this['props'].hasOwnProperty(prop) || this['props'][prop] === default_value) {\n this['props'][prop] = val;\n }\n }, this);\n\n this.save();\n\n return true;\n }\n return false;\n};\n\n/**\n* @param {Object} props\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register = function(props, days) {\n if (_.isObject(props)) {\n this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n this.load();\n _.extend(this['props'], props);\n this.save();\n\n return true;\n }\n return false;\n};\n\nMixpanelPersistence.prototype.unregister = function(prop) {\n this.load();\n if (prop in this['props']) {\n delete this['props'][prop];\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.update_search_keyword = function(referrer) {\n this.register(_.info.searchInfo(referrer));\n};\n\n// EXPORTED METHOD, we test this directly.\nMixpanelPersistence.prototype.update_referrer_info = function(referrer) {\n // If referrer doesn't exist, we want to note the fact that it was type-in traffic.\n this.register_once({\n '$initial_referrer': referrer || '$direct',\n '$initial_referring_domain': _.info.referringDomain(referrer) || '$direct'\n }, '');\n};\n\nMixpanelPersistence.prototype.get_referrer_info = function() {\n return _.strip_empty_properties({\n '$initial_referrer': this['props']['$initial_referrer'],\n '$initial_referring_domain': this['props']['$initial_referring_domain']\n });\n};\n\nMixpanelPersistence.prototype.update_config = function(config) {\n this.default_expiry = this.expire_days = config['cookie_expiration'];\n this.set_disabled(config['disable_persistence']);\n this.set_cookie_domain(config['cookie_domain']);\n this.set_cross_site(config['cross_site_cookie']);\n this.set_cross_subdomain(config['cross_subdomain_cookie']);\n this.set_secure(config['secure_cookie']);\n};\n\nMixpanelPersistence.prototype.set_disabled = function(disabled) {\n this.disabled = disabled;\n if (this.disabled) {\n this.remove();\n } else {\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cookie_domain = function(cookie_domain) {\n if (cookie_domain !== this.cookie_domain) {\n this.remove();\n this.cookie_domain = cookie_domain;\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cross_site = function(cross_site) {\n if (cross_site !== this.cross_site) {\n this.cross_site = cross_site;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cross_subdomain = function(cross_subdomain) {\n if (cross_subdomain !== this.cross_subdomain) {\n this.cross_subdomain = cross_subdomain;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.get_cross_subdomain = function() {\n return this.cross_subdomain;\n};\n\nMixpanelPersistence.prototype.set_secure = function(secure) {\n if (secure !== this.secure) {\n this.secure = secure ? true : false;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype._add_to_people_queue = function(queue, data) {\n var q_key = this._get_queue_key(queue),\n q_data = data[queue],\n set_q = this._get_or_create_queue(SET_ACTION),\n set_once_q = this._get_or_create_queue(SET_ONCE_ACTION),\n unset_q = this._get_or_create_queue(UNSET_ACTION),\n add_q = this._get_or_create_queue(ADD_ACTION),\n union_q = this._get_or_create_queue(UNION_ACTION),\n remove_q = this._get_or_create_queue(REMOVE_ACTION, []),\n append_q = this._get_or_create_queue(APPEND_ACTION, []);\n\n if (q_key === SET_QUEUE_KEY) {\n // Update the set queue - we can override any existing values\n _.extend(set_q, q_data);\n // if there was a pending increment, override it\n // with the set.\n this._pop_from_people_queue(ADD_ACTION, q_data);\n // if there was a pending union, override it\n // with the set.\n this._pop_from_people_queue(UNION_ACTION, q_data);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === SET_ONCE_QUEUE_KEY) {\n // only queue the data if there is not already a set_once call for it.\n _.each(q_data, function(v, k) {\n if (!(k in set_once_q)) {\n set_once_q[k] = v;\n }\n });\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === UNSET_QUEUE_KEY) {\n _.each(q_data, function(prop) {\n\n // undo previously-queued actions on this key\n _.each([set_q, set_once_q, add_q, union_q], function(enqueued_obj) {\n if (prop in enqueued_obj) {\n delete enqueued_obj[prop];\n }\n });\n _.each(append_q, function(append_obj) {\n if (prop in append_obj) {\n delete append_obj[prop];\n }\n });\n\n unset_q[prop] = true;\n\n });\n } else if (q_key === ADD_QUEUE_KEY) {\n _.each(q_data, function(v, k) {\n // If it exists in the set queue, increment\n // the value\n if (k in set_q) {\n set_q[k] += v;\n } else {\n // If it doesn't exist, update the add\n // queue\n if (!(k in add_q)) {\n add_q[k] = 0;\n }\n add_q[k] += v;\n }\n }, this);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === UNION_QUEUE_KEY) {\n _.each(q_data, function(v, k) {\n if (_.isArray(v)) {\n if (!(k in union_q)) {\n union_q[k] = [];\n }\n // Prevent duplicate values\n _.each(v, function(item) {\n if (!_.include(union_q[k], item)) {\n union_q[k].push(item);\n }\n });\n }\n });\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === REMOVE_QUEUE_KEY) {\n remove_q.push(q_data);\n this._pop_from_people_queue(APPEND_ACTION, q_data);\n } else if (q_key === APPEND_QUEUE_KEY) {\n append_q.push(q_data);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n }\n\n console$1.log('MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):');\n console$1.log(data);\n\n this.save();\n};\n\nMixpanelPersistence.prototype._pop_from_people_queue = function(queue, data) {\n var q = this['props'][this._get_queue_key(queue)];\n if (!_.isUndefined(q)) {\n _.each(data, function(v, k) {\n if (queue === APPEND_ACTION || queue === REMOVE_ACTION) {\n // list actions: only remove if both k+v match\n // e.g. remove should not override append in a case like\n // append({foo: 'bar'}); remove({foo: 'qux'})\n _.each(q, function(queued_action) {\n if (queued_action[k] === v) {\n delete queued_action[k];\n }\n });\n } else {\n delete q[k];\n }\n }, this);\n }\n};\n\nMixpanelPersistence.prototype.load_queue = function(queue) {\n return this.load_prop(this._get_queue_key(queue));\n};\n\nMixpanelPersistence.prototype._get_queue_key = function(queue) {\n if (queue === SET_ACTION) {\n return SET_QUEUE_KEY;\n } else if (queue === SET_ONCE_ACTION) {\n return SET_ONCE_QUEUE_KEY;\n } else if (queue === UNSET_ACTION) {\n return UNSET_QUEUE_KEY;\n } else if (queue === ADD_ACTION) {\n return ADD_QUEUE_KEY;\n } else if (queue === APPEND_ACTION) {\n return APPEND_QUEUE_KEY;\n } else if (queue === REMOVE_ACTION) {\n return REMOVE_QUEUE_KEY;\n } else if (queue === UNION_ACTION) {\n return UNION_QUEUE_KEY;\n } else {\n console$1.error('Invalid queue:', queue);\n }\n};\n\nMixpanelPersistence.prototype._get_or_create_queue = function(queue, default_val) {\n var key = this._get_queue_key(queue);\n default_val = _.isUndefined(default_val) ? {} : default_val;\n return this['props'][key] || (this['props'][key] = default_val);\n};\n\nMixpanelPersistence.prototype.set_event_timer = function(event_name, timestamp) {\n var timers = this.load_prop(EVENT_TIMERS_KEY) || {};\n timers[event_name] = timestamp;\n this['props'][EVENT_TIMERS_KEY] = timers;\n this.save();\n};\n\nMixpanelPersistence.prototype.remove_event_timer = function(event_name) {\n var timers = this.load_prop(EVENT_TIMERS_KEY) || {};\n var timestamp = timers[event_name];\n if (!_.isUndefined(timestamp)) {\n delete this['props'][EVENT_TIMERS_KEY][event_name];\n this.save();\n }\n return timestamp;\n};\n\n/* eslint camelcase: \"off\" */\n\n/*\n * Mixpanel JS Library\n *\n * Copyright 2012, Mixpanel, Inc. All Rights Reserved\n * http://mixpanel.com/\n *\n * Includes portions of Underscore.js\n * http://documentcloud.github.com/underscore/\n * (c) 2011 Jeremy Ashkenas, DocumentCloud Inc.\n * Released under the MIT License.\n */\n\n/*\nSIMPLE STYLE GUIDE:\n\nthis.x === public function\nthis._x === internal - only use within this file\nthis.__x === private - only use within the class\n\nGlobals should be all caps\n*/\n\nvar init_type; // MODULE or SNIPPET loader\n// allow bundlers to specify how extra code (recorder bundle) should be loaded\n// eslint-disable-next-line no-unused-vars\nvar load_extra_bundle = function(src, _onload) {\n throw new Error(src + ' not available in this build.');\n};\n\nvar mixpanel_master; // main mixpanel instance / object\nvar INIT_MODULE = 0;\nvar INIT_SNIPPET = 1;\n\nvar IDENTITY_FUNC = function(x) {return x;};\n\n/** @const */ var PRIMARY_INSTANCE_NAME = 'mixpanel';\n/** @const */ var PAYLOAD_TYPE_BASE64 = 'base64';\n/** @const */ var PAYLOAD_TYPE_JSON = 'json';\n/** @const */ var DEVICE_ID_PREFIX = '$device:';\n\n\n/*\n * Dynamic... constants? Is that an oxymoron?\n */\n// http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/\n// https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#withCredentials\nvar USE_XHR = (win.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest());\n\n// IE<10 does not support cross-origin XHR's but script tags\n// with defer won't block window.onload; ENQUEUE_REQUESTS\n// should only be true for Opera<12\nvar ENQUEUE_REQUESTS = !USE_XHR && (userAgent.indexOf('MSIE') === -1) && (userAgent.indexOf('Mozilla') === -1);\n\n// save reference to navigator.sendBeacon so it can be minified\nvar sendBeacon = null;\nif (navigator['sendBeacon']) {\n sendBeacon = function() {\n // late reference to navigator.sendBeacon to allow patching/spying\n return navigator['sendBeacon'].apply(navigator, arguments);\n };\n}\n\nvar DEFAULT_API_ROUTES = {\n 'track': 'track/',\n 'engage': 'engage/',\n 'groups': 'groups/',\n 'record': 'record/',\n 'flags': 'flags/'\n};\n\n/*\n * Module-level globals\n */\nvar DEFAULT_CONFIG = {\n 'api_host': 'https://api-js.mixpanel.com',\n 'api_hosts': {},\n 'api_routes': DEFAULT_API_ROUTES,\n 'api_extra_query_params': {},\n 'api_method': 'POST',\n 'api_transport': 'XHR',\n 'api_payload_format': PAYLOAD_TYPE_BASE64,\n 'app_host': 'https://mixpanel.com',\n 'autocapture': false,\n 'cdn': 'https://cdn.mxpnl.com',\n 'cross_site_cookie': false,\n 'cross_subdomain_cookie': true,\n 'error_reporter': NOOP_FUNC,\n 'flags': false,\n 'persistence': 'cookie',\n 'persistence_name': '',\n 'cookie_domain': '',\n 'cookie_name': '',\n 'loaded': NOOP_FUNC,\n 'mp_loader': null,\n 'track_marketing': true,\n 'track_pageview': false,\n 'skip_first_touch_marketing': false,\n 'store_google': true,\n 'stop_utm_persistence': false,\n 'save_referrer': true,\n 'test': false,\n 'verbose': false,\n 'img': false,\n 'debug': false,\n 'track_links_timeout': 300,\n 'cookie_expiration': 365,\n 'upgrade': false,\n 'disable_persistence': false,\n 'disable_cookie': false,\n 'secure_cookie': false,\n 'ip': true,\n 'opt_out_tracking_by_default': false,\n 'opt_out_persistence_by_default': false,\n 'opt_out_tracking_persistence_type': 'localStorage',\n 'opt_out_tracking_cookie_prefix': null,\n 'property_blacklist': [],\n 'xhr_headers': {}, // { header: value, header2: value }\n 'ignore_dnt': false,\n 'batch_requests': true,\n 'batch_size': 50,\n 'batch_flush_interval_ms': 5000,\n 'batch_request_timeout_ms': 90000,\n 'batch_autostart': true,\n 'hooks': {},\n 'record_block_class': new RegExp('^(mp-block|fs-exclude|amp-block|rr-block|ph-no-capture)$'),\n 'record_block_selector': 'img, video, audio',\n 'record_canvas': false,\n 'record_collect_fonts': false,\n 'record_console': true,\n 'record_heatmap_data': false,\n 'record_idle_timeout_ms': 30 * 60 * 1000, // 30 minutes\n 'record_mask_text_class': new RegExp('^(mp-mask|fs-mask|amp-mask|rr-mask|ph-mask)$'),\n 'record_mask_text_selector': '*',\n 'record_max_ms': MAX_RECORDING_MS,\n 'record_min_ms': 0,\n 'record_sessions_percent': 0,\n 'recorder_src': 'https://cdn.mxpnl.com/libs/mixpanel-recorder.min.js'\n};\n\nvar DOM_LOADED = false;\n\n/**\n * Mixpanel Library Object\n * @constructor\n */\nvar MixpanelLib = function() {};\n\n\n/**\n * create_mplib(token:string, config:object, name:string)\n *\n * This function is used by the init method of MixpanelLib objects\n * as well as the main initializer at the end of the JSLib (that\n * initializes document.mixpanel as well as any additional instances\n * declared before this file has loaded).\n */\nvar create_mplib = function(token, config, name) {\n var instance,\n target = (name === PRIMARY_INSTANCE_NAME) ? mixpanel_master : mixpanel_master[name];\n\n if (target && init_type === INIT_MODULE) {\n instance = target;\n } else {\n if (target && !_.isArray(target)) {\n console$1.error('You have already initialized ' + name);\n return;\n }\n instance = new MixpanelLib();\n }\n\n instance._cached_groups = {}; // cache groups in a pool\n\n instance._init(token, config, name);\n\n instance['people'] = new MixpanelPeople();\n instance['people']._init(instance);\n\n if (!instance.get_config('skip_first_touch_marketing')) {\n // We need null UTM params in the object because\n // UTM parameters act as a tuple. If any UTM param\n // is present, then we set all UTM params including\n // empty ones together\n var utm_params = _.info.campaignParams(null);\n var initial_utm_params = {};\n var has_utm = false;\n _.each(utm_params, function(utm_value, utm_key) {\n initial_utm_params['initial_' + utm_key] = utm_value;\n if (utm_value) {\n has_utm = true;\n }\n });\n if (has_utm) {\n instance['people'].set_once(initial_utm_params);\n }\n }\n\n // if any instance on the page has debug = true, we set the\n // global debug to be true\n Config.DEBUG = Config.DEBUG || instance.get_config('debug');\n\n // if target is not defined, we called init after the lib already\n // loaded, so there won't be an array of things to execute\n if (!_.isUndefined(target) && _.isArray(target)) {\n // Crunch through the people queue first - we queue this data up &\n // flush on identify, so it's better to do all these operations first\n instance._execute_array.call(instance['people'], target['people']);\n instance._execute_array(target);\n }\n\n return instance;\n};\n\n// Initialization methods\n\n/**\n * This function initializes a new instance of the Mixpanel tracking object.\n * All new instances are added to the main mixpanel object as sub properties (such as\n * mixpanel.library_name) and also returned by this function. To define a\n * second instance on the page, you would call:\n *\n * mixpanel.init('new token', { your: 'config' }, 'library_name');\n *\n * and use it like so:\n *\n * mixpanel.library_name.track(...);\n *\n * @param {String} token Your Mixpanel API token\n * @param {Object} [config] A dictionary of config options to override. See a list of default config options.\n * @param {String} [name] The name for the new mixpanel instance that you want created\n */\nMixpanelLib.prototype.init = function (token, config, name) {\n if (_.isUndefined(name)) {\n this.report_error('You must name your new library: init(token, config, name)');\n return;\n }\n if (name === PRIMARY_INSTANCE_NAME) {\n this.report_error('You must initialize the main mixpanel object right after you include the Mixpanel js snippet');\n return;\n }\n\n var instance = create_mplib(token, config, name);\n mixpanel_master[name] = instance;\n instance._loaded();\n\n return instance;\n};\n\n// mixpanel._init(token:string, config:object, name:string)\n//\n// This function sets up the current instance of the mixpanel\n// library. The difference between this method and the init(...)\n// method is this one initializes the actual instance, whereas the\n// init(...) method sets up a new library and calls _init on it.\n//\nMixpanelLib.prototype._init = function(token, config, name) {\n config = config || {};\n\n this['__loaded'] = true;\n this['config'] = {};\n\n var variable_features = {};\n\n // default to JSON payload for standard mixpanel.com API hosts\n if (!('api_payload_format' in config)) {\n var api_host = config['api_host'] || DEFAULT_CONFIG['api_host'];\n if (api_host.match(/\\.mixpanel\\.com/)) {\n variable_features['api_payload_format'] = PAYLOAD_TYPE_JSON;\n }\n }\n\n this.set_config(_.extend({}, DEFAULT_CONFIG, variable_features, config, {\n 'name': name,\n 'token': token,\n 'callback_fn': ((name === PRIMARY_INSTANCE_NAME) ? name : PRIMARY_INSTANCE_NAME + '.' + name) + '._jsc'\n }));\n\n this['_jsc'] = NOOP_FUNC;\n\n this.__dom_loaded_queue = [];\n this.__request_queue = [];\n this.__disabled_events = [];\n this._flags = {\n 'disable_all_events': false,\n 'identify_called': false\n };\n\n // set up request queueing/batching\n this.request_batchers = {};\n this._batch_requests = this.get_config('batch_requests');\n if (this._batch_requests) {\n if (!_.localStorage.is_supported(true) || !USE_XHR) {\n this._batch_requests = false;\n console$1.log('Turning off Mixpanel request-queueing; needs XHR and localStorage support');\n _.each(this.get_batcher_configs(), function(batcher_config) {\n console$1.log('Clearing batch queue ' + batcher_config.queue_key);\n _.localStorage.remove(batcher_config.queue_key);\n });\n } else {\n this.init_batchers();\n if (sendBeacon && win.addEventListener) {\n // Before page closes or hides (user tabs away etc), attempt to flush any events\n // queued up via navigator.sendBeacon. Since sendBeacon doesn't report success/failure,\n // events will not be removed from the persistent store; if the site is loaded again,\n // the events will be flushed again on startup and deduplicated on the Mixpanel server\n // side.\n // There is no reliable way to capture only page close events, so we lean on the\n // visibilitychange and pagehide events as recommended at\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event#usage_notes.\n // These events fire when the user clicks away from the current page/tab, so will occur\n // more frequently than page unload, but are the only mechanism currently for capturing\n // this scenario somewhat reliably.\n var flush_on_unload = _.bind(function() {\n if (!this.request_batchers.events.stopped) {\n this.request_batchers.events.flush({unloading: true});\n }\n }, this);\n win.addEventListener('pagehide', function(ev) {\n if (ev['persisted']) {\n flush_on_unload();\n }\n });\n win.addEventListener('visibilitychange', function() {\n if (document$1['visibilityState'] === 'hidden') {\n flush_on_unload();\n }\n });\n }\n }\n }\n\n this['persistence'] = this['cookie'] = new MixpanelPersistence(this['config']);\n this.unpersisted_superprops = {};\n this._gdpr_init();\n\n var uuid = _.UUID();\n if (!this.get_distinct_id()) {\n // There is no need to set the distinct id\n // or the device id if something was already stored\n // in the persitence\n this.register_once({\n 'distinct_id': DEVICE_ID_PREFIX + uuid,\n '$device_id': uuid\n }, '');\n }\n\n this.flags = new FeatureFlagManager({\n getFullApiRoute: _.bind(function() {\n return this.get_api_host('flags') + '/' + this.get_config('api_routes')['flags'];\n }, this),\n getConfigFunc: _.bind(this.get_config, this),\n setConfigFunc: _.bind(this.set_config, this),\n getPropertyFunc: _.bind(this.get_property, this),\n trackingFunc: _.bind(this.track, this)\n });\n this.flags.init();\n this['flags'] = this.flags;\n\n this.autocapture = new Autocapture(this);\n this.autocapture.init();\n\n this._init_tab_id();\n this._check_and_start_session_recording();\n};\n\n/**\n * Assigns a unique UUID to this tab / window by leveraging sessionStorage.\n * This is primarily used for session recording, where data must be isolated to the current tab.\n */\nMixpanelLib.prototype._init_tab_id = function() {\n if (this.get_config('disable_persistence')) {\n console$1.log('Tab ID initialization skipped due to disable_persistence config');\n } else if (_.sessionStorage.is_supported()) {\n try {\n var key_suffix = this.get_config('name') + '_' + this.get_config('token');\n var tab_id_key = 'mp_tab_id_' + key_suffix;\n\n // A flag is used to determine if sessionStorage is copied over and we need to generate a new tab ID.\n // This enforces a unique ID in the cases like duplicated tab, window.open(...)\n var should_generate_new_tab_id_key = 'mp_gen_new_tab_id_' + key_suffix;\n if (_.sessionStorage.get(should_generate_new_tab_id_key) || !_.sessionStorage.get(tab_id_key)) {\n _.sessionStorage.set(tab_id_key, '$tab-' + _.UUID());\n }\n\n _.sessionStorage.set(should_generate_new_tab_id_key, '1');\n this.tab_id = _.sessionStorage.get(tab_id_key);\n\n // Remove the flag when the tab is unloaded to indicate the stored tab ID can be reused. This event is not reliable to detect all page unloads,\n // but reliable in cases where the user remains in the tab e.g. a refresh or href navigation.\n // If the flag is absent, this indicates to the next SDK instance that we can reuse the stored tab_id.\n win.addEventListener('beforeunload', function () {\n _.sessionStorage.remove(should_generate_new_tab_id_key);\n });\n } catch(err) {\n this.report_error('Error initializing tab id', err);\n }\n } else {\n this.report_error('Session storage is not supported, cannot keep track of unique tab ID.');\n }\n};\n\nMixpanelLib.prototype.get_tab_id = function () {\n return this.tab_id || null;\n};\n\nMixpanelLib.prototype._should_load_recorder = function () {\n if (this.get_config('disable_persistence')) {\n console$1.log('Load recorder check skipped due to disable_persistence config');\n return Promise.resolve(false);\n }\n\n var recording_registry_idb = new IDBStorageWrapper(RECORDING_REGISTRY_STORE_NAME);\n var tab_id = this.get_tab_id();\n return recording_registry_idb.init()\n .then(function () {\n return recording_registry_idb.getAll();\n })\n .then(function (recordings) {\n for (var i = 0; i < recordings.length; i++) {\n // if there are expired recordings in the registry, we should load the recorder to flush them\n // if there's a recording for this tab id, we should load the recorder to continue the recording\n if (isRecordingExpired(recordings[i]) || recordings[i]['tabId'] === tab_id) {\n return true;\n }\n }\n return false;\n })\n .catch(_.bind(function (err) {\n this.report_error('Error checking recording registry', err);\n }, this));\n};\n\nMixpanelLib.prototype._check_and_start_session_recording = addOptOutCheckMixpanelLib(function(force_start) {\n if (!win['MutationObserver']) {\n console$1.critical('Browser does not support MutationObserver; skipping session recording');\n return;\n }\n\n var loadRecorder = _.bind(function(startNewIfInactive) {\n var handleLoadedRecorder = _.bind(function() {\n this._recorder = this._recorder || new win['__mp_recorder'](this);\n this._recorder['resumeRecording'](startNewIfInactive);\n }, this);\n\n if (_.isUndefined(win['__mp_recorder'])) {\n load_extra_bundle(this.get_config('recorder_src'), handleLoadedRecorder);\n } else {\n handleLoadedRecorder();\n }\n }, this);\n\n /**\n * If the user is sampled or start_session_recording is called, we always load the recorder since it's guaranteed a recording should start.\n * Otherwise, if the recording registry has any records then it's likely there's a recording in progress or orphaned data that needs to be flushed.\n */\n var is_sampled = this.get_config('record_sessions_percent') > 0 && Math.random() * 100 <= this.get_config('record_sessions_percent');\n if (force_start || is_sampled) {\n loadRecorder(true);\n } else {\n this._should_load_recorder()\n .then(function (shouldLoad) {\n if (shouldLoad) {\n loadRecorder(false);\n }\n });\n }\n});\n\nMixpanelLib.prototype.start_session_recording = function () {\n this._check_and_start_session_recording(true);\n};\n\nMixpanelLib.prototype.stop_session_recording = function () {\n if (this._recorder) {\n return this._recorder['stopRecording']();\n }\n return Promise.resolve();\n};\n\nMixpanelLib.prototype.pause_session_recording = function () {\n if (this._recorder) {\n return this._recorder['pauseRecording']();\n }\n return Promise.resolve();\n};\n\nMixpanelLib.prototype.resume_session_recording = function () {\n if (this._recorder) {\n return this._recorder['resumeRecording']();\n }\n return Promise.resolve();\n};\n\nMixpanelLib.prototype.is_recording_heatmap_data = function () {\n return this._get_session_replay_id() && this.get_config('record_heatmap_data');\n};\n\nMixpanelLib.prototype.get_session_recording_properties = function () {\n var props = {};\n var replay_id = this._get_session_replay_id();\n if (replay_id) {\n props['$mp_replay_id'] = replay_id;\n }\n return props;\n};\n\nMixpanelLib.prototype.get_session_replay_url = function () {\n var replay_url = null;\n var replay_id = this._get_session_replay_id();\n if (replay_id) {\n var query_params = _.HTTPBuildQuery({\n 'replay_id': replay_id,\n 'distinct_id': this.get_distinct_id(),\n 'token': this.get_config('token')\n });\n replay_url = 'https://mixpanel.com/projects/replay-redirect?' + query_params;\n }\n return replay_url;\n};\n\nMixpanelLib.prototype._get_session_replay_id = function () {\n var replay_id = null;\n if (this._recorder) {\n replay_id = this._recorder['replayId'];\n }\n return replay_id || null;\n};\n\n// \"private\" public method to reach into the recorder in test cases\nMixpanelLib.prototype.__get_recorder = function () {\n return this._recorder;\n};\n\n// Private methods\n\nMixpanelLib.prototype._loaded = function() {\n this.get_config('loaded')(this);\n this._set_default_superprops();\n this['people'].set_once(this['persistence'].get_referrer_info());\n\n // `store_google` is now deprecated and previously stored UTM parameters are cleared\n // from persistence by default.\n if (this.get_config('store_google') && this.get_config('stop_utm_persistence')) {\n var utm_params = _.info.campaignParams(null);\n _.each(utm_params, function(_utm_value, utm_key) {\n // We need to unregister persisted UTM parameters so old values\n // are not mixed with the new UTM parameters\n this.unregister(utm_key);\n }.bind(this));\n }\n};\n\n// update persistence with info on referrer, UTM params, etc\nMixpanelLib.prototype._set_default_superprops = function() {\n this['persistence'].update_search_keyword(document$1.referrer);\n // Registering super properties for UTM persistence by 'store_google' is deprecated.\n if (this.get_config('store_google') && !this.get_config('stop_utm_persistence')) {\n this.register(_.info.campaignParams());\n }\n if (this.get_config('save_referrer')) {\n this['persistence'].update_referrer_info(document$1.referrer);\n }\n};\n\nMixpanelLib.prototype._dom_loaded = function() {\n _.each(this.__dom_loaded_queue, function(item) {\n this._track_dom.apply(this, item);\n }, this);\n\n if (!this.has_opted_out_tracking()) {\n _.each(this.__request_queue, function(item) {\n this._send_request.apply(this, item);\n }, this);\n }\n\n delete this.__dom_loaded_queue;\n delete this.__request_queue;\n};\n\nMixpanelLib.prototype._track_dom = function(DomClass, args) {\n if (this.get_config('img')) {\n this.report_error('You can\\'t use DOM tracking functions with img = true.');\n return false;\n }\n\n if (!DOM_LOADED) {\n this.__dom_loaded_queue.push([DomClass, args]);\n return false;\n }\n\n var dt = new DomClass().init(this);\n return dt.track.apply(dt, args);\n};\n\n/**\n * _prepare_callback() should be called by callers of _send_request for use\n * as the callback argument.\n *\n * If there is no callback, this returns null.\n * If we are going to make XHR/XDR requests, this returns a function.\n * If we are going to use script tags, this returns a string to use as the\n * callback GET param.\n */\nMixpanelLib.prototype._prepare_callback = function(callback, data) {\n if (_.isUndefined(callback)) {\n return null;\n }\n\n if (USE_XHR) {\n var callback_function = function(response) {\n callback(response, data);\n };\n return callback_function;\n } else {\n // if the user gives us a callback, we store as a random\n // property on this instances jsc function and update our\n // callback string to reflect that.\n var jsc = this['_jsc'];\n var randomized_cb = '' + Math.floor(Math.random() * 100000000);\n var callback_string = this.get_config('callback_fn') + '[' + randomized_cb + ']';\n jsc[randomized_cb] = function(response) {\n delete jsc[randomized_cb];\n callback(response, data);\n };\n return callback_string;\n }\n};\n\nMixpanelLib.prototype._send_request = function(url, data, options, callback) {\n var succeeded = true;\n\n if (ENQUEUE_REQUESTS) {\n this.__request_queue.push(arguments);\n return succeeded;\n }\n\n var DEFAULT_OPTIONS = {\n method: this.get_config('api_method'),\n transport: this.get_config('api_transport'),\n verbose: this.get_config('verbose')\n };\n var body_data = null;\n\n if (!callback && (_.isFunction(options) || typeof options === 'string')) {\n callback = options;\n options = null;\n }\n options = _.extend(DEFAULT_OPTIONS, options || {});\n if (!USE_XHR) {\n options.method = 'GET';\n }\n var use_post = options.method === 'POST';\n var use_sendBeacon = sendBeacon && use_post && options.transport.toLowerCase() === 'sendbeacon';\n\n // needed to correctly format responses\n var verbose_mode = options.verbose;\n if (data['verbose']) { verbose_mode = true; }\n\n if (this.get_config('test')) { data['test'] = 1; }\n if (verbose_mode) { data['verbose'] = 1; }\n if (this.get_config('img')) { data['img'] = 1; }\n if (!USE_XHR) {\n if (callback) {\n data['callback'] = callback;\n } else if (verbose_mode || this.get_config('test')) {\n // Verbose output (from verbose mode, or an error in test mode) is a json blob,\n // which by itself is not valid javascript. Without a callback, this verbose output will\n // cause an error when returned via jsonp, so we force a no-op callback param.\n // See the ECMA script spec: http://www.ecma-international.org/ecma-262/5.1/#sec-12.4\n data['callback'] = '(function(){})';\n }\n }\n\n data['ip'] = this.get_config('ip')?1:0;\n data['_'] = new Date().getTime().toString();\n\n if (use_post) {\n body_data = 'data=' + encodeURIComponent(data['data']);\n delete data['data'];\n }\n\n _.extend(data, this.get_config('api_extra_query_params'));\n\n url += '?' + _.HTTPBuildQuery(data);\n\n var lib = this;\n if ('img' in data) {\n var img = document$1.createElement('img');\n img.src = url;\n document$1.body.appendChild(img);\n } else if (use_sendBeacon) {\n try {\n succeeded = sendBeacon(url, body_data);\n } catch (e) {\n lib.report_error(e);\n succeeded = false;\n }\n try {\n if (callback) {\n callback(succeeded ? 1 : 0);\n }\n } catch (e) {\n lib.report_error(e);\n }\n } else if (USE_XHR) {\n try {\n var req = new XMLHttpRequest();\n req.open(options.method, url, true);\n\n var headers = this.get_config('xhr_headers');\n if (use_post) {\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\n }\n _.each(headers, function(headerValue, headerName) {\n req.setRequestHeader(headerName, headerValue);\n });\n\n if (options.timeout_ms && typeof req.timeout !== 'undefined') {\n req.timeout = options.timeout_ms;\n var start_time = new Date().getTime();\n }\n\n // send the mp_optout cookie\n // withCredentials cannot be modified until after calling .open on Android and Mobile Safari\n req.withCredentials = true;\n req.onreadystatechange = function () {\n if (req.readyState === 4) { // XMLHttpRequest.DONE == 4, except in safari 4\n if (req.status === 200) {\n if (callback) {\n if (verbose_mode) {\n var response;\n try {\n response = _.JSONDecode(req.responseText);\n } catch (e) {\n lib.report_error(e);\n if (options.ignore_json_errors) {\n response = req.responseText;\n } else {\n return;\n }\n }\n callback(response);\n } else {\n callback(Number(req.responseText));\n }\n }\n } else {\n var error;\n if (\n req.timeout &&\n !req.status &&\n new Date().getTime() - start_time >= req.timeout\n ) {\n error = 'timeout';\n } else {\n error = 'Bad HTTP status: ' + req.status + ' ' + req.statusText;\n }\n lib.report_error(error);\n if (callback) {\n if (verbose_mode) {\n var response_headers = req['responseHeaders'] || {};\n callback({status: 0, httpStatusCode: req['status'], error: error, retryAfter: response_headers['Retry-After']});\n } else {\n callback(0);\n }\n }\n }\n }\n };\n req.send(body_data);\n } catch (e) {\n lib.report_error(e);\n succeeded = false;\n }\n } else {\n var script = document$1.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n var s = document$1.getElementsByTagName('script')[0];\n s.parentNode.insertBefore(script, s);\n }\n\n return succeeded;\n};\n\n/**\n * _execute_array() deals with processing any mixpanel function\n * calls that were called before the Mixpanel library were loaded\n * (and are thus stored in an array so they can be called later)\n *\n * Note: we fire off all the mixpanel function calls && user defined\n * functions BEFORE we fire off mixpanel tracking calls. This is so\n * identify/register/set_config calls can properly modify early\n * tracking calls.\n *\n * @param {Array} array\n */\nMixpanelLib.prototype._execute_array = function(array) {\n var fn_name, alias_calls = [], other_calls = [], tracking_calls = [];\n _.each(array, function(item) {\n if (item) {\n fn_name = item[0];\n if (_.isArray(fn_name)) {\n tracking_calls.push(item); // chained call e.g. mixpanel.get_group().set()\n } else if (typeof(item) === 'function') {\n item.call(this);\n } else if (_.isArray(item) && fn_name === 'alias') {\n alias_calls.push(item);\n } else if (_.isArray(item) && fn_name.indexOf('track') !== -1 && typeof(this[fn_name]) === 'function') {\n tracking_calls.push(item);\n } else {\n other_calls.push(item);\n }\n }\n }, this);\n\n var execute = function(calls, context) {\n _.each(calls, function(item) {\n if (_.isArray(item[0])) {\n // chained call\n var caller = context;\n _.each(item, function(call) {\n caller = caller[call[0]].apply(caller, call.slice(1));\n });\n } else {\n this[item[0]].apply(this, item.slice(1));\n }\n }, context);\n };\n\n execute(alias_calls, this);\n execute(other_calls, this);\n execute(tracking_calls, this);\n};\n\n// request queueing utils\n\nMixpanelLib.prototype.are_batchers_initialized = function() {\n return !!this.request_batchers.events;\n};\n\nMixpanelLib.prototype.get_batcher_configs = function() {\n var queue_prefix = '__mpq_' + this.get_config('token');\n this._batcher_configs = this._batcher_configs || {\n events: {type: 'events', api_name: 'track', queue_key: queue_prefix + '_ev'},\n people: {type: 'people', api_name: 'engage', queue_key: queue_prefix + '_pp'},\n groups: {type: 'groups', api_name: 'groups', queue_key: queue_prefix + '_gr'}\n };\n return this._batcher_configs;\n};\n\nMixpanelLib.prototype.init_batchers = function() {\n if (!this.are_batchers_initialized()) {\n var batcher_for = _.bind(function(attrs) {\n return new RequestBatcher(\n attrs.queue_key,\n {\n libConfig: this['config'],\n errorReporter: this.get_config('error_reporter'),\n sendRequestFunc: _.bind(function(data, options, cb) {\n var api_routes = this.get_config('api_routes');\n this._send_request(\n this.get_api_host(attrs.api_name) + '/' + api_routes[attrs.api_name],\n this._encode_data_for_request(data),\n options,\n this._prepare_callback(cb, data)\n );\n }, this),\n beforeSendHook: _.bind(function(item) {\n return this._run_hook('before_send_' + attrs.type, item);\n }, this),\n stopAllBatchingFunc: _.bind(this.stop_batch_senders, this),\n usePersistence: true,\n }\n );\n }, this);\n var batcher_configs = this.get_batcher_configs();\n this.request_batchers = {\n events: batcher_for(batcher_configs.events),\n people: batcher_for(batcher_configs.people),\n groups: batcher_for(batcher_configs.groups)\n };\n }\n if (this.get_config('batch_autostart')) {\n this.start_batch_senders();\n }\n};\n\nMixpanelLib.prototype.start_batch_senders = function() {\n this._batchers_were_started = true;\n if (this.are_batchers_initialized()) {\n this._batch_requests = true;\n _.each(this.request_batchers, function(batcher) {\n batcher.start();\n });\n }\n};\n\nMixpanelLib.prototype.stop_batch_senders = function() {\n this._batch_requests = false;\n _.each(this.request_batchers, function(batcher) {\n batcher.stop();\n batcher.clear();\n });\n};\n\n/**\n * push() keeps the standard async-array-push\n * behavior around after the lib is loaded.\n * This is only useful for external integrations that\n * do not wish to rely on our convenience methods\n * (created in the snippet).\n *\n * ### Usage:\n * mixpanel.push(['register', { a: 'b' }]);\n *\n * @param {Array} item A [function_name, args...] array to be executed\n */\nMixpanelLib.prototype.push = function(item) {\n this._execute_array([item]);\n};\n\n/**\n * Disable events on the Mixpanel object. If passed no arguments,\n * this function disables tracking of any event. If passed an\n * array of event names, those events will be disabled, but other\n * events will continue to be tracked.\n *\n * Note: this function does not stop other mixpanel functions from\n * firing, such as register() or people.set().\n *\n * @param {Array} [events] An array of event names to disable\n */\nMixpanelLib.prototype.disable = function(events) {\n if (typeof(events) === 'undefined') {\n this._flags.disable_all_events = true;\n } else {\n this.__disabled_events = this.__disabled_events.concat(events);\n }\n};\n\nMixpanelLib.prototype._encode_data_for_request = function(data) {\n var encoded_data = JSONStringify(data);\n if (this.get_config('api_payload_format') === PAYLOAD_TYPE_BASE64) {\n encoded_data = _.base64Encode(encoded_data);\n }\n return {'data': encoded_data};\n};\n\n// internal method for handling track vs batch-enqueue logic\nMixpanelLib.prototype._track_or_batch = function(options, callback) {\n var truncated_data = _.truncate(options.data, 255);\n var endpoint = options.endpoint;\n var batcher = options.batcher;\n var should_send_immediately = options.should_send_immediately;\n var send_request_options = options.send_request_options || {};\n callback = callback || NOOP_FUNC;\n\n var request_enqueued_or_initiated = true;\n var send_request_immediately = _.bind(function() {\n if (!send_request_options.skip_hooks) {\n truncated_data = this._run_hook('before_send_' + options.type, truncated_data);\n }\n if (truncated_data) {\n console$1.log('MIXPANEL REQUEST:');\n console$1.log(truncated_data);\n return this._send_request(\n endpoint,\n this._encode_data_for_request(truncated_data),\n send_request_options,\n this._prepare_callback(callback, truncated_data)\n );\n } else {\n return null;\n }\n }, this);\n\n if (this._batch_requests && !should_send_immediately) {\n batcher.enqueue(truncated_data).then(function(succeeded) {\n if (succeeded) {\n callback(1, truncated_data);\n } else {\n send_request_immediately();\n }\n });\n } else {\n request_enqueued_or_initiated = send_request_immediately();\n }\n\n return request_enqueued_or_initiated && truncated_data;\n};\n\n/**\n * Track an event. This is the most important and\n * frequently used Mixpanel function.\n *\n * ### Usage:\n *\n * // track an event named 'Registered'\n * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * // track an event using navigator.sendBeacon\n * mixpanel.track('Left page', {'duration_seconds': 35}, {transport: 'sendBeacon'});\n *\n * To track link clicks or form submissions, see track_links() or track_forms().\n *\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Object} [options] Optional configuration for this track request.\n * @param {String} [options.transport] Transport method for network request ('xhr' or 'sendBeacon').\n * @param {Boolean} [options.send_immediately] Whether to bypass batching/queueing and send track request immediately.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\nMixpanelLib.prototype.track = addOptOutCheckMixpanelLib(function(event_name, properties, options, callback) {\n if (!callback && typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n var transport = options['transport']; // external API, don't minify 'transport' prop\n if (transport) {\n options.transport = transport; // 'transport' prop name can be minified internally\n }\n var should_send_immediately = options['send_immediately'];\n if (typeof callback !== 'function') {\n callback = NOOP_FUNC;\n }\n\n if (_.isUndefined(event_name)) {\n this.report_error('No event name provided to mixpanel.track');\n return;\n }\n\n if (this._event_is_disabled(event_name)) {\n callback(0);\n return;\n }\n\n // set defaults\n properties = _.extend({}, properties);\n properties['token'] = this.get_config('token');\n\n // set $duration if time_event was previously called for this event\n var start_timestamp = this['persistence'].remove_event_timer(event_name);\n if (!_.isUndefined(start_timestamp)) {\n var duration_in_ms = new Date().getTime() - start_timestamp;\n properties['$duration'] = parseFloat((duration_in_ms / 1000).toFixed(3));\n }\n\n this._set_default_superprops();\n\n var marketing_properties = this.get_config('track_marketing')\n ? _.info.marketingParams()\n : {};\n\n // note: extend writes to the first object, so lets make sure we\n // don't write to the persistence properties object and info\n // properties object by passing in a new object\n\n // update properties with pageview info and super-properties\n properties = _.extend(\n {},\n _.info.properties({'mp_loader': this.get_config('mp_loader')}),\n marketing_properties,\n this['persistence'].properties(),\n this.unpersisted_superprops,\n this.get_session_recording_properties(),\n properties\n );\n\n var property_blacklist = this.get_config('property_blacklist');\n if (_.isArray(property_blacklist)) {\n _.each(property_blacklist, function(blacklisted_prop) {\n delete properties[blacklisted_prop];\n });\n } else {\n this.report_error('Invalid value for property_blacklist config: ' + property_blacklist);\n }\n\n var data = {\n 'event': event_name,\n 'properties': properties\n };\n var ret = this._track_or_batch({\n type: 'events',\n data: data,\n endpoint: this.get_api_host('events') + '/' + this.get_config('api_routes')['track'],\n batcher: this.request_batchers.events,\n should_send_immediately: should_send_immediately,\n send_request_options: options\n }, callback);\n\n return ret;\n});\n\n/**\n * Register the current user into one/many groups.\n *\n * ### Usage:\n *\n * mixpanel.set_group('company', ['mixpanel', 'google']) // an array of IDs\n * mixpanel.set_group('company', 'mixpanel')\n * mixpanel.set_group('company', 128746312)\n *\n * @param {String} group_key Group key\n * @param {Array|String|Number} group_ids An array of group IDs, or a singular group ID\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n *\n */\nMixpanelLib.prototype.set_group = addOptOutCheckMixpanelLib(function(group_key, group_ids, callback) {\n if (!_.isArray(group_ids)) {\n group_ids = [group_ids];\n }\n var prop = {};\n prop[group_key] = group_ids;\n this.register(prop);\n return this['people'].set(group_key, group_ids, callback);\n});\n\n/**\n * Add a new group for this user.\n *\n * ### Usage:\n *\n * mixpanel.add_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.add_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n var old_values = this.get_property(group_key);\n var prop = {};\n if (old_values === undefined) {\n prop[group_key] = [group_id];\n this.register(prop);\n } else {\n if (old_values.indexOf(group_id) === -1) {\n old_values.push(group_id);\n prop[group_key] = old_values;\n this.register(prop);\n }\n }\n return this['people'].union(group_key, group_id, callback);\n});\n\n/**\n * Remove a group from this user.\n *\n * ### Usage:\n *\n * mixpanel.remove_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.remove_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n var old_value = this.get_property(group_key);\n // if the value doesn't exist, the persistent store is unchanged\n if (old_value !== undefined) {\n var idx = old_value.indexOf(group_id);\n if (idx > -1) {\n old_value.splice(idx, 1);\n this.register({group_key: old_value});\n }\n if (old_value.length === 0) {\n this.unregister(group_key);\n }\n }\n return this['people'].remove(group_key, group_id, callback);\n});\n\n/**\n * Track an event with specific groups.\n *\n * ### Usage:\n *\n * mixpanel.track_with_groups('purchase', {'product': 'iphone'}, {'University': ['UCB', 'UCLA']})\n *\n * @param {String} event_name The name of the event (see `mixpanel.track()`)\n * @param {Object=} properties A set of properties to include with the event you're sending (see `mixpanel.track()`)\n * @param {Object=} groups An object mapping group name keys to one or more values\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.track_with_groups = addOptOutCheckMixpanelLib(function(event_name, properties, groups, callback) {\n var tracking_props = _.extend({}, properties || {});\n _.each(groups, function(v, k) {\n if (v !== null && v !== undefined) {\n tracking_props[k] = v;\n }\n });\n return this.track(event_name, tracking_props, callback);\n});\n\nMixpanelLib.prototype._create_map_key = function (group_key, group_id) {\n return group_key + '_' + JSON.stringify(group_id);\n};\n\nMixpanelLib.prototype._remove_group_from_cache = function (group_key, group_id) {\n delete this._cached_groups[this._create_map_key(group_key, group_id)];\n};\n\n/**\n * Look up reference to a Mixpanel group\n *\n * ### Usage:\n *\n * mixpanel.get_group(group_key, group_id)\n *\n * @param {String} group_key Group key\n * @param {Object} group_id A valid Mixpanel property type\n * @returns {Object} A MixpanelGroup identifier\n */\nMixpanelLib.prototype.get_group = function (group_key, group_id) {\n var map_key = this._create_map_key(group_key, group_id);\n var group = this._cached_groups[map_key];\n if (group === undefined || group._group_key !== group_key || group._group_id !== group_id) {\n group = new MixpanelGroup();\n group._init(this, group_key, group_id);\n this._cached_groups[map_key] = group;\n }\n return group;\n};\n\n/**\n * Track a default Mixpanel page view event, which includes extra default event properties to\n * improve page view data.\n *\n * ### Usage:\n *\n * // track a default $mp_web_page_view event\n * mixpanel.track_pageview();\n *\n * // track a page view event with additional event properties\n * mixpanel.track_pageview({'ab_test_variant': 'card-layout-b'});\n *\n * // example approach to track page views on different page types as event properties\n * mixpanel.track_pageview({'page': 'pricing'});\n * mixpanel.track_pageview({'page': 'homepage'});\n *\n * // UNCOMMON: Tracking a page view event with a custom event_name option. NOT expected to be used for\n * // individual pages on the same site or product. Use cases for custom event_name may be page\n * // views on different products or internal applications that are considered completely separate\n * mixpanel.track_pageview({'page': 'customer-search'}, {'event_name': '[internal] Admin Page View'});\n *\n * ### Notes:\n *\n * The `config.track_pageview` option for mixpanel.init()\n * may be turned on for tracking page loads automatically.\n *\n * // track only page loads\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: true});\n *\n * // track when the URL changes in any manner\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'full-url'});\n *\n * // track when the URL changes, ignoring any changes in the hash part\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'url-with-path-and-query-string'});\n *\n * // track when the path changes, ignoring any query parameter or hash changes\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'url-with-path'});\n *\n * @param {Object} [properties] An optional set of additional properties to send with the page view event\n * @param {Object} [options] Page view tracking options\n * @param {String} [options.event_name] - Alternate name for the tracking event\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\nMixpanelLib.prototype.track_pageview = addOptOutCheckMixpanelLib(function(properties, options) {\n if (typeof properties !== 'object') {\n properties = {};\n }\n options = options || {};\n var event_name = options['event_name'] || '$mp_web_page_view';\n\n var default_page_properties = _.extend(\n _.info.mpPageViewProperties(),\n _.info.campaignParams(),\n _.info.clickParams()\n );\n\n var event_properties = _.extend(\n {},\n default_page_properties,\n properties\n );\n\n return this.track(event_name, event_properties);\n});\n\n/**\n * Track clicks on a set of document elements. Selector must be a\n * valid query. Elements must exist on the page at the time track_links is called.\n *\n * ### Usage:\n *\n * // track click for link id #nav\n * mixpanel.track_links('#nav', 'Clicked Nav Link');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the Mixpanel\n * servers to respond. If they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked. To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument. You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] A properties object or function that returns a dictionary of properties when passed a DOMElement\n */\nMixpanelLib.prototype.track_links = function() {\n return this._track_dom.call(this, LinkTracker, arguments);\n};\n\n/**\n * Track form submissions. Selector must be a valid query.\n *\n * ### Usage:\n *\n * // track submission for form id 'register'\n * mixpanel.track_forms('#register', 'Created Account');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the mixpanel\n * servers to respond, if they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked. To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument. You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] This can be a set of properties, or a function that returns a set of properties after being passed a DOMElement\n */\nMixpanelLib.prototype.track_forms = function() {\n return this._track_dom.call(this, FormTracker, arguments);\n};\n\n/**\n * Time an event by including the time between this call and a\n * later 'track' call for the same event in the properties sent\n * with the event.\n *\n * ### Usage:\n *\n * // time an event named 'Registered'\n * mixpanel.time_event('Registered');\n * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * When called for a particular event name, the next track call for that event\n * name will include the elapsed time between the 'time_event' and 'track'\n * calls. This value is stored as seconds in the '$duration' property.\n *\n * @param {String} event_name The name of the event.\n */\nMixpanelLib.prototype.time_event = function(event_name) {\n if (_.isUndefined(event_name)) {\n this.report_error('No event name provided to mixpanel.time_event');\n return;\n }\n\n if (this._event_is_disabled(event_name)) {\n return;\n }\n\n this['persistence'].set_event_timer(event_name, new Date().getTime());\n};\n\nvar REGISTER_DEFAULTS = {\n 'persistent': true\n};\n/**\n * Helper to parse options param for register methods, maintaining\n * legacy support for plain \"days\" param instead of options object\n * @param {Number|Object} [days_or_options] 'days' option (Number), or Options object for register methods\n * @returns {Object} options object\n */\nvar options_for_register = function(days_or_options) {\n var options;\n if (_.isObject(days_or_options)) {\n options = days_or_options;\n } else if (!_.isUndefined(days_or_options)) {\n options = {'days': days_or_options};\n } else {\n options = {};\n }\n return _.extend({}, REGISTER_DEFAULTS, options);\n};\n\n/**\n * Register a set of super properties, which are included with all\n * events. This will overwrite previous super property values.\n *\n * ### Usage:\n *\n * // register 'Gender' as a super property\n * mixpanel.register({'Gender': 'Female'});\n *\n * // register several super properties when a user signs up\n * mixpanel.register({\n * 'Email': 'jdoe@example.com',\n * 'Account Type': 'Free'\n * });\n *\n * // register only for the current pageload\n * mixpanel.register({'Name': 'Pat'}, {persistent: false});\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register = function(props, days_or_options) {\n var options = options_for_register(days_or_options);\n if (options['persistent']) {\n this['persistence'].register(props, options['days']);\n } else {\n _.extend(this.unpersisted_superprops, props);\n }\n};\n\n/**\n * Register a set of super properties only once. This will not\n * overwrite previous super property values, unlike register().\n *\n * ### Usage:\n *\n * // register a super property for the first time only\n * mixpanel.register_once({\n * 'First Login Date': new Date().toISOString()\n * });\n *\n * // register once, only for the current pageload\n * mixpanel.register_once({\n * 'First interaction time': new Date().toISOString()\n * }, 'None', {persistent: false});\n *\n * ### Notes:\n *\n * If default_value is specified, current super properties\n * with that value will be overwritten.\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {*} [default_value] Value to override if already set in super properties (ex: 'False') Default: 'None'\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register_once = function(props, default_value, days_or_options) {\n var options = options_for_register(days_or_options);\n if (options['persistent']) {\n this['persistence'].register_once(props, default_value, options['days']);\n } else {\n if (typeof(default_value) === 'undefined') {\n default_value = 'None';\n }\n _.each(props, function(val, prop) {\n if (!this.unpersisted_superprops.hasOwnProperty(prop) || this.unpersisted_superprops[prop] === default_value) {\n this.unpersisted_superprops[prop] = val;\n }\n }, this);\n }\n};\n\n/**\n * Delete a super property stored with the current user.\n *\n * @param {String} property The name of the super property to remove\n * @param {Object} [options]\n * @param {boolean} [options.persistent=true] - whether to look in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.unregister = function(property, options) {\n options = options_for_register(options);\n if (options['persistent']) {\n this['persistence'].unregister(property);\n } else {\n delete this.unpersisted_superprops[property];\n }\n};\n\nMixpanelLib.prototype._register_single = function(prop, value) {\n var props = {};\n props[prop] = value;\n this.register(props);\n};\n\n/**\n * Identify a user with a unique ID to track user activity across\n * devices, tie a user to their events, and create a user profile.\n * If you never call this method, unique visitors are tracked using\n * a UUID generated the first time they visit the site.\n *\n * Call identify when you know the identity of the current user,\n * typically after login or signup. We recommend against using\n * identify for anonymous visitors to your site.\n *\n * ### Notes:\n * If your project has\n * ID Merge\n * enabled, the identify method will connect pre- and\n * post-authentication events when appropriate.\n *\n * If your project does not have ID Merge enabled, identify will\n * change the user's local distinct_id to the unique ID you pass.\n * Events tracked prior to authentication will not be connected\n * to the same user identity. If ID Merge is disabled, alias can\n * be used to connect pre- and post-registration events.\n *\n * @param {String} [unique_id] A string that uniquely identifies a user. If not provided, the distinct_id currently in the persistent store (cookie or localStorage) will be used.\n */\nMixpanelLib.prototype.identify = function(\n new_distinct_id, _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n // Optional Parameters\n // _set_callback:function A callback to be run if and when the People set queue is flushed\n // _add_callback:function A callback to be run if and when the People add queue is flushed\n // _append_callback:function A callback to be run if and when the People append queue is flushed\n // _set_once_callback:function A callback to be run if and when the People set_once queue is flushed\n // _union_callback:function A callback to be run if and when the People union queue is flushed\n // _unset_callback:function A callback to be run if and when the People unset queue is flushed\n\n var previous_distinct_id = this.get_distinct_id();\n if (new_distinct_id && previous_distinct_id !== new_distinct_id) {\n // we allow the following condition if previous distinct_id is same as new_distinct_id\n // so that you can force flush people updates for anonymous profiles.\n if (typeof new_distinct_id === 'string' && new_distinct_id.indexOf(DEVICE_ID_PREFIX) === 0) {\n this.report_error('distinct_id cannot have $device: prefix');\n return -1;\n }\n this.register({'$user_id': new_distinct_id});\n }\n\n if (!this.get_property('$device_id')) {\n // The persisted distinct id might not actually be a device id at all\n // it might be a distinct id of the user from before\n var device_id = previous_distinct_id;\n this.register_once({\n '$had_persisted_distinct_id': true,\n '$device_id': device_id\n }, '');\n }\n\n // identify only changes the distinct id if it doesn't match either the existing or the alias;\n // if it's new, blow away the alias as well.\n if (new_distinct_id !== previous_distinct_id && new_distinct_id !== this.get_property(ALIAS_ID_KEY)) {\n this.unregister(ALIAS_ID_KEY);\n this.register({'distinct_id': new_distinct_id});\n }\n this._flags.identify_called = true;\n // Flush any queued up people requests\n this['people']._flush(_set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback);\n\n // send an $identify event any time the distinct_id is changing - logic on the server\n // will determine whether or not to do anything with it.\n if (new_distinct_id !== previous_distinct_id) {\n this.track('$identify', {\n 'distinct_id': new_distinct_id,\n '$anon_distinct_id': previous_distinct_id\n }, {skip_hooks: true});\n }\n\n // check feature flags again if distinct id has changed\n if (new_distinct_id !== previous_distinct_id) {\n this.flags.fetchFlags();\n }\n};\n\n/**\n * Clears super properties and generates a new random distinct_id for this instance.\n * Useful for clearing data when a user logs out.\n */\nMixpanelLib.prototype.reset = function() {\n this.stop_session_recording();\n this['persistence'].clear();\n this._flags.identify_called = false;\n var uuid = _.UUID();\n this.register_once({\n 'distinct_id': DEVICE_ID_PREFIX + uuid,\n '$device_id': uuid\n }, '');\n this._check_and_start_session_recording();\n};\n\n/**\n * Returns the current distinct id of the user. This is either the id automatically\n * generated by the library or the id that has been passed by a call to identify().\n *\n * ### Notes:\n *\n * get_distinct_id() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // set distinct_id after the mixpanel library has loaded\n * mixpanel.init('YOUR PROJECT TOKEN', {\n * loaded: function(mixpanel) {\n * distinct_id = mixpanel.get_distinct_id();\n * }\n * });\n */\nMixpanelLib.prototype.get_distinct_id = function() {\n return this.get_property('distinct_id');\n};\n\n/**\n * The alias method creates an alias which Mixpanel will use to\n * remap one id to another. Multiple aliases can point to the\n * same identifier.\n *\n * The following is a valid use of alias:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // You can add multiple id aliases to the existing ID\n * mixpanel.alias('newer_id', 'existing_id');\n *\n * Aliases can also be chained - the following is a valid example:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // chain newer_id - new_id - existing_id\n * mixpanel.alias('newer_id', 'new_id');\n *\n * Aliases cannot point to multiple identifiers - the following\n * example will not work:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // this is invalid as 'new_id' already points to 'existing_id'\n * mixpanel.alias('new_id', 'newer_id');\n *\n * ### Notes:\n *\n * If your project does not have\n * ID Merge\n * enabled, the best practice is to call alias once when a unique\n * ID is first created for a user (e.g., when a user first registers\n * for an account). Do not use alias multiple times for a single\n * user without ID Merge enabled.\n *\n * @param {String} alias A unique identifier that you want to use for this user in the future.\n * @param {String} [original] The current identifier being used for this user.\n */\nMixpanelLib.prototype.alias = function(alias, original) {\n // If the $people_distinct_id key exists in persistence, there has been a previous\n // mixpanel.people.identify() call made for this user. It is VERY BAD to make an alias with\n // this ID, as it will duplicate users.\n if (alias === this.get_property(PEOPLE_DISTINCT_ID_KEY)) {\n this.report_error('Attempting to create alias for existing People user - aborting.');\n return -2;\n }\n\n var _this = this;\n if (_.isUndefined(original)) {\n original = this.get_distinct_id();\n }\n if (alias !== original) {\n this._register_single(ALIAS_ID_KEY, alias);\n return this.track('$create_alias', {\n 'alias': alias,\n 'distinct_id': original\n }, {\n skip_hooks: true\n }, function() {\n // Flush the people queue\n _this.identify(alias);\n });\n } else {\n this.report_error('alias matches current distinct_id - skipping api call.');\n this.identify(alias);\n return -1;\n }\n};\n\n/**\n * Provide a string to recognize the user by. The string passed to\n * this method will appear in the Mixpanel Streams product rather\n * than an automatically generated name. Name tags do not have to\n * be unique.\n *\n * This value will only be included in Streams data.\n *\n * @param {String} name_tag A human readable name for the user\n * @deprecated\n */\nMixpanelLib.prototype.name_tag = function(name_tag) {\n this._register_single('mp_name_tag', name_tag);\n};\n\n/**\n * Update the configuration of a mixpanel library instance.\n *\n * The default config is:\n *\n * {\n * // host for requests (customizable for e.g. a local proxy)\n * api_host: 'https://api-js.mixpanel.com',\n *\n * // endpoints for different types of requests\n * api_routes: {\n * track: 'track/',\n * engage: 'engage/',\n * groups: 'groups/',\n * }\n *\n * // HTTP method for tracking requests\n * api_method: 'POST'\n *\n * // transport for sending requests ('XHR' or 'sendBeacon')\n * // NB: sendBeacon should only be used for scenarios such as\n * // page unload where a \"best-effort\" attempt to send is\n * // acceptable; the sendBeacon API does not support callbacks\n * // or any way to know the result of the request. Mixpanel\n * // tracking via sendBeacon will not support any event-\n * // batching or retry mechanisms.\n * api_transport: 'XHR'\n *\n * // request-batching/queueing/retry\n * batch_requests: true,\n *\n * // maximum number of events/updates to send in a single\n * // network request\n * batch_size: 50,\n *\n * // milliseconds to wait between sending batch requests\n * batch_flush_interval_ms: 5000,\n *\n * // milliseconds to wait for network responses to batch requests\n * // before they are considered timed-out and retried\n * batch_request_timeout_ms: 90000,\n *\n * // override value for cookie domain, only useful for ensuring\n * // correct cross-subdomain cookies on unusual domains like\n * // subdomain.mainsite.avocat.fr; NB this cannot be used to\n * // set cookies on a different domain than the current origin\n * cookie_domain: ''\n *\n * // super properties cookie expiration (in days)\n * cookie_expiration: 365\n *\n * // if true, cookie will be set with SameSite=None; Secure\n * // this is only useful in special situations, like embedded\n * // 3rd-party iframes that set up a Mixpanel instance\n * cross_site_cookie: false\n *\n * // super properties span subdomains\n * cross_subdomain_cookie: true\n *\n * // debug mode\n * debug: false\n *\n * // if this is true, the mixpanel cookie or localStorage entry\n * // will be deleted, and no user persistence will take place\n * disable_persistence: false\n *\n * // if this is true, Mixpanel will automatically determine\n * // City, Region and Country data using the IP address of\n * //the client\n * ip: true\n *\n * // opt users out of tracking by this Mixpanel instance by default\n * opt_out_tracking_by_default: false\n *\n * // opt users out of browser data storage by this Mixpanel instance by default\n * opt_out_persistence_by_default: false\n *\n * // persistence mechanism used by opt-in/opt-out methods - cookie\n * // or localStorage - falls back to cookie if localStorage is unavailable\n * opt_out_tracking_persistence_type: 'localStorage'\n *\n * // customize the name of cookie/localStorage set by opt-in/opt-out methods\n * opt_out_tracking_cookie_prefix: null\n *\n * // type of persistent store for super properties (cookie/\n * // localStorage) if set to 'localStorage', any existing\n * // mixpanel cookie value with the same persistence_name\n * // will be transferred to localStorage and deleted\n * persistence: 'cookie'\n *\n * // name for super properties persistent store\n * persistence_name: ''\n *\n * // names of properties/superproperties which should never\n * // be sent with track() calls\n * property_blacklist: []\n *\n * // if this is true, mixpanel cookies will be marked as\n * // secure, meaning they will only be transmitted over https\n * secure_cookie: false\n *\n * // disables enriching user profiles with first touch marketing data\n * skip_first_touch_marketing: false\n *\n * // the amount of time track_links will\n * // wait for Mixpanel's servers to respond\n * track_links_timeout: 300\n *\n * // adds any UTM parameters and click IDs present on the page to any events fired\n * track_marketing: true\n *\n * // enables automatic page view tracking using default page view events through\n * // the track_pageview() method\n * track_pageview: false\n *\n * // if you set upgrade to be true, the library will check for\n * // a cookie from our old js library and import super\n * // properties from it, then the old cookie is deleted\n * // The upgrade config option only works in the initialization,\n * // so make sure you set it when you create the library.\n * upgrade: false\n *\n * // extra HTTP request headers to set for each API request, in\n * // the format {'Header-Name': value}\n * xhr_headers: {}\n *\n * // whether to ignore or respect the web browser's Do Not Track setting\n * ignore_dnt: false\n * }\n *\n *\n * @param {Object} config A dictionary of new configuration values to update\n */\nMixpanelLib.prototype.set_config = function(config) {\n if (_.isObject(config)) {\n _.extend(this['config'], config);\n\n var new_batch_size = config['batch_size'];\n if (new_batch_size) {\n _.each(this.request_batchers, function(batcher) {\n batcher.resetBatchSize();\n });\n }\n\n if (!this.get_config('persistence_name')) {\n this['config']['persistence_name'] = this['config']['cookie_name'];\n }\n if (!this.get_config('disable_persistence')) {\n this['config']['disable_persistence'] = this['config']['disable_cookie'];\n }\n\n if (this['persistence']) {\n this['persistence'].update_config(this['config']);\n }\n Config.DEBUG = Config.DEBUG || this.get_config('debug');\n\n if (('autocapture' in config || 'record_heatmap_data' in config) && this.autocapture) {\n this.autocapture.init();\n }\n }\n};\n\n/**\n * returns the current config object for the library.\n */\nMixpanelLib.prototype.get_config = function(prop_name) {\n return this['config'][prop_name];\n};\n\n/**\n * Fetch a hook function from config, with safe default, and run it\n * against the given arguments\n * @param {string} hook_name which hook to retrieve\n * @returns {any|null} return value of user-provided hook, or null if nothing was returned\n */\nMixpanelLib.prototype._run_hook = function(hook_name) {\n var ret = (this['config']['hooks'][hook_name] || IDENTITY_FUNC).apply(this, slice.call(arguments, 1));\n if (typeof ret === 'undefined') {\n this.report_error(hook_name + ' hook did not return a value');\n ret = null;\n }\n return ret;\n};\n\n/**\n * Returns the value of the super property named property_name. If no such\n * property is set, get_property() will return the undefined value.\n *\n * ### Notes:\n *\n * get_property() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // grab value for 'user_id' after the mixpanel library has loaded\n * mixpanel.init('YOUR PROJECT TOKEN', {\n * loaded: function(mixpanel) {\n * user_id = mixpanel.get_property('user_id');\n * }\n * });\n *\n * @param {String} property_name The name of the super property you want to retrieve\n */\nMixpanelLib.prototype.get_property = function(property_name) {\n return this['persistence'].load_prop([property_name]);\n};\n\n/**\n * Get the API host for a specific endpoint type, falling back to the default api_host if not specified\n *\n * @param {String} endpoint_type The type of endpoint (e.g., \"events\", \"people\", \"groups\")\n * @returns {String} The API host to use for this endpoint\n */\nMixpanelLib.prototype.get_api_host = function(endpoint_type) {\n return this.get_config('api_hosts')[endpoint_type] || this.get_config('api_host');\n};\n\nMixpanelLib.prototype.toString = function() {\n var name = this.get_config('name');\n if (name !== PRIMARY_INSTANCE_NAME) {\n name = PRIMARY_INSTANCE_NAME + '.' + name;\n }\n return name;\n};\n\nMixpanelLib.prototype._event_is_disabled = function(event_name) {\n return _.isBlockedUA(userAgent) ||\n this._flags.disable_all_events ||\n _.include(this.__disabled_events, event_name);\n};\n\n// perform some housekeeping around GDPR opt-in/out state\nMixpanelLib.prototype._gdpr_init = function() {\n var is_localStorage_requested = this.get_config('opt_out_tracking_persistence_type') === 'localStorage';\n\n // try to convert opt-in/out cookies to localStorage if possible\n if (is_localStorage_requested && _.localStorage.is_supported()) {\n if (!this.has_opted_in_tracking() && this.has_opted_in_tracking({'persistence_type': 'cookie'})) {\n this.opt_in_tracking({'enable_persistence': false});\n }\n if (!this.has_opted_out_tracking() && this.has_opted_out_tracking({'persistence_type': 'cookie'})) {\n this.opt_out_tracking({'clear_persistence': false});\n }\n this.clear_opt_in_out_tracking({\n 'persistence_type': 'cookie',\n 'enable_persistence': false\n });\n }\n\n // check whether the user has already opted out - if so, clear & disable persistence\n if (this.has_opted_out_tracking()) {\n this._gdpr_update_persistence({'clear_persistence': true});\n\n // check whether we should opt out by default\n // note: we don't clear persistence here by default since opt-out default state is often\n // used as an initial state while GDPR information is being collected\n } else if (!this.has_opted_in_tracking() && (\n this.get_config('opt_out_tracking_by_default') || _.cookie.get('mp_optout')\n )) {\n _.cookie.remove('mp_optout');\n this.opt_out_tracking({\n 'clear_persistence': this.get_config('opt_out_persistence_by_default')\n });\n }\n};\n\n/**\n * Enable or disable persistence based on options\n * only enable/disable if persistence is not already in this state\n * @param {boolean} [options.clear_persistence] If true, will delete all data stored by the sdk in persistence and disable it\n * @param {boolean} [options.enable_persistence] If true, will re-enable sdk persistence\n */\nMixpanelLib.prototype._gdpr_update_persistence = function(options) {\n var disabled;\n if (options && options['clear_persistence']) {\n disabled = true;\n } else if (options && options['enable_persistence']) {\n disabled = false;\n } else {\n return;\n }\n\n if (!this.get_config('disable_persistence') && this['persistence'].disabled !== disabled) {\n this['persistence'].set_disabled(disabled);\n }\n\n if (disabled) {\n this.stop_batch_senders();\n this.stop_session_recording();\n } else {\n // only start batchers after opt-in if they have previously been started\n // in order to avoid unintentionally starting up batching for the first time\n if (this._batchers_were_started) {\n this.start_batch_senders();\n }\n }\n};\n\n// call a base gdpr function after constructing the appropriate token and options args\nMixpanelLib.prototype._gdpr_call_func = function(func, options) {\n options = _.extend({\n 'track': _.bind(this.track, this),\n 'persistence_type': this.get_config('opt_out_tracking_persistence_type'),\n 'cookie_prefix': this.get_config('opt_out_tracking_cookie_prefix'),\n 'cookie_expiration': this.get_config('cookie_expiration'),\n 'cross_site_cookie': this.get_config('cross_site_cookie'),\n 'cross_subdomain_cookie': this.get_config('cross_subdomain_cookie'),\n 'cookie_domain': this.get_config('cookie_domain'),\n 'secure_cookie': this.get_config('secure_cookie'),\n 'ignore_dnt': this.get_config('ignore_dnt')\n }, options);\n\n // check if localStorage can be used for recording opt out status, fall back to cookie if not\n if (!_.localStorage.is_supported()) {\n options['persistence_type'] = 'cookie';\n }\n\n return func(this.get_config('token'), {\n track: options['track'],\n trackEventName: options['track_event_name'],\n trackProperties: options['track_properties'],\n persistenceType: options['persistence_type'],\n persistencePrefix: options['cookie_prefix'],\n cookieDomain: options['cookie_domain'],\n cookieExpiration: options['cookie_expiration'],\n crossSiteCookie: options['cross_site_cookie'],\n crossSubdomainCookie: options['cross_subdomain_cookie'],\n secureCookie: options['secure_cookie'],\n ignoreDnt: options['ignore_dnt']\n });\n};\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // opt user in\n * mixpanel.opt_in_tracking();\n *\n * // opt user in with specific event name, properties, cookie configuration\n * mixpanel.opt_in_tracking({\n * track_event_name: 'User opted in',\n * track_event_properties: {\n * 'Email': 'jdoe@example.com'\n * },\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {function} [options.track] Function used for tracking a Mixpanel event to record the opt-in action (default is this Mixpanel instance's track method)\n * @param {string} [options.track_event_name=$opt_in] Event name to be used for tracking the opt-in action\n * @param {Object} [options.track_properties] Set of properties to be tracked along with the opt-in action\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_in_tracking = function(options) {\n options = _.extend({\n 'enable_persistence': true\n }, options);\n\n this._gdpr_call_func(optIn, options);\n this._gdpr_update_persistence(options);\n};\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // opt user out\n * mixpanel.opt_out_tracking();\n *\n * // opt user out with different cookie configuration from Mixpanel instance\n * mixpanel.opt_out_tracking({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.delete_user=true] If true, will delete the currently identified user's profile and clear all charges after opting the user out\n * @param {boolean} [options.clear_persistence=true] If true, will delete all data stored by the sdk in persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_out_tracking = function(options) {\n options = _.extend({\n 'clear_persistence': true,\n 'delete_user': true\n }, options);\n\n // delete user and clear charges since these methods may be disabled by opt-out\n if (options['delete_user'] && this['people'] && this['people']._identify_called()) {\n this['people'].delete_user();\n this['people'].clear_charges();\n }\n\n this._gdpr_call_func(optOut, options);\n this._gdpr_update_persistence(options);\n};\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * var has_opted_in = mixpanel.has_opted_in_tracking();\n * // use has_opted_in value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-in status\n */\nMixpanelLib.prototype.has_opted_in_tracking = function(options) {\n return this._gdpr_call_func(hasOptedIn, options);\n};\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * var has_opted_out = mixpanel.has_opted_out_tracking();\n * // use has_opted_out value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-out status\n */\nMixpanelLib.prototype.has_opted_out_tracking = function(options) {\n return this._gdpr_call_func(hasOptedOut, options);\n};\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // clear user's opt-in/out status\n * mixpanel.clear_opt_in_out_tracking();\n *\n * // clear user's opt-in/out status with specific cookie configuration - should match\n * // configuration used when opt_in_tracking/opt_out_tracking methods were called.\n * mixpanel.clear_opt_in_out_tracking({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.clear_opt_in_out_tracking = function(options) {\n options = _.extend({\n 'enable_persistence': true\n }, options);\n\n this._gdpr_call_func(clearOptInOut, options);\n this._gdpr_update_persistence(options);\n};\n\nMixpanelLib.prototype.report_error = function(msg, err) {\n console$1.error.apply(console$1.error, arguments);\n try {\n if (!err && !(msg instanceof Error)) {\n msg = new Error(msg);\n }\n this.get_config('error_reporter')(msg, err);\n } catch(err) {\n console$1.error(err);\n }\n};\n\n// EXPORTS (for closure compiler)\n\n// MixpanelLib Exports\nMixpanelLib.prototype['init'] = MixpanelLib.prototype.init;\nMixpanelLib.prototype['reset'] = MixpanelLib.prototype.reset;\nMixpanelLib.prototype['disable'] = MixpanelLib.prototype.disable;\nMixpanelLib.prototype['time_event'] = MixpanelLib.prototype.time_event;\nMixpanelLib.prototype['track'] = MixpanelLib.prototype.track;\nMixpanelLib.prototype['track_links'] = MixpanelLib.prototype.track_links;\nMixpanelLib.prototype['track_forms'] = MixpanelLib.prototype.track_forms;\nMixpanelLib.prototype['track_pageview'] = MixpanelLib.prototype.track_pageview;\nMixpanelLib.prototype['register'] = MixpanelLib.prototype.register;\nMixpanelLib.prototype['register_once'] = MixpanelLib.prototype.register_once;\nMixpanelLib.prototype['unregister'] = MixpanelLib.prototype.unregister;\nMixpanelLib.prototype['identify'] = MixpanelLib.prototype.identify;\nMixpanelLib.prototype['alias'] = MixpanelLib.prototype.alias;\nMixpanelLib.prototype['name_tag'] = MixpanelLib.prototype.name_tag;\nMixpanelLib.prototype['set_config'] = MixpanelLib.prototype.set_config;\nMixpanelLib.prototype['get_config'] = MixpanelLib.prototype.get_config;\nMixpanelLib.prototype['get_api_host'] = MixpanelLib.prototype.get_api_host;\nMixpanelLib.prototype['get_property'] = MixpanelLib.prototype.get_property;\nMixpanelLib.prototype['get_distinct_id'] = MixpanelLib.prototype.get_distinct_id;\nMixpanelLib.prototype['toString'] = MixpanelLib.prototype.toString;\nMixpanelLib.prototype['opt_out_tracking'] = MixpanelLib.prototype.opt_out_tracking;\nMixpanelLib.prototype['opt_in_tracking'] = MixpanelLib.prototype.opt_in_tracking;\nMixpanelLib.prototype['has_opted_out_tracking'] = MixpanelLib.prototype.has_opted_out_tracking;\nMixpanelLib.prototype['has_opted_in_tracking'] = MixpanelLib.prototype.has_opted_in_tracking;\nMixpanelLib.prototype['clear_opt_in_out_tracking'] = MixpanelLib.prototype.clear_opt_in_out_tracking;\nMixpanelLib.prototype['get_group'] = MixpanelLib.prototype.get_group;\nMixpanelLib.prototype['set_group'] = MixpanelLib.prototype.set_group;\nMixpanelLib.prototype['add_group'] = MixpanelLib.prototype.add_group;\nMixpanelLib.prototype['remove_group'] = MixpanelLib.prototype.remove_group;\nMixpanelLib.prototype['track_with_groups'] = MixpanelLib.prototype.track_with_groups;\nMixpanelLib.prototype['start_batch_senders'] = MixpanelLib.prototype.start_batch_senders;\nMixpanelLib.prototype['stop_batch_senders'] = MixpanelLib.prototype.stop_batch_senders;\nMixpanelLib.prototype['start_session_recording'] = MixpanelLib.prototype.start_session_recording;\nMixpanelLib.prototype['stop_session_recording'] = MixpanelLib.prototype.stop_session_recording;\nMixpanelLib.prototype['pause_session_recording'] = MixpanelLib.prototype.pause_session_recording;\nMixpanelLib.prototype['resume_session_recording'] = MixpanelLib.prototype.resume_session_recording;\nMixpanelLib.prototype['get_session_recording_properties'] = MixpanelLib.prototype.get_session_recording_properties;\nMixpanelLib.prototype['get_session_replay_url'] = MixpanelLib.prototype.get_session_replay_url;\nMixpanelLib.prototype['get_tab_id'] = MixpanelLib.prototype.get_tab_id;\nMixpanelLib.prototype['DEFAULT_API_ROUTES'] = DEFAULT_API_ROUTES;\n\n// Exports intended only for testing\nMixpanelLib.prototype['__get_recorder'] = MixpanelLib.prototype.__get_recorder;\n\n// MixpanelPersistence Exports\nMixpanelPersistence.prototype['properties'] = MixpanelPersistence.prototype.properties;\nMixpanelPersistence.prototype['update_search_keyword'] = MixpanelPersistence.prototype.update_search_keyword;\nMixpanelPersistence.prototype['update_referrer_info'] = MixpanelPersistence.prototype.update_referrer_info;\nMixpanelPersistence.prototype['get_cross_subdomain'] = MixpanelPersistence.prototype.get_cross_subdomain;\nMixpanelPersistence.prototype['clear'] = MixpanelPersistence.prototype.clear;\n\n\nvar instances = {};\nvar extend_mp = function() {\n // add all the sub mixpanel instances\n _.each(instances, function(instance, name) {\n if (name !== PRIMARY_INSTANCE_NAME) { mixpanel_master[name] = instance; }\n });\n\n // add private functions as _\n mixpanel_master['_'] = _;\n};\n\nvar override_mp_init_func = function() {\n // we override the snippets init function to handle the case where a\n // user initializes the mixpanel library after the script loads & runs\n mixpanel_master['init'] = function(token, config, name) {\n if (name) {\n // initialize a sub library\n if (!mixpanel_master[name]) {\n mixpanel_master[name] = instances[name] = create_mplib(token, config, name);\n mixpanel_master[name]._loaded();\n }\n return mixpanel_master[name];\n } else {\n var instance = mixpanel_master;\n\n if (instances[PRIMARY_INSTANCE_NAME]) {\n // main mixpanel lib already initialized\n instance = instances[PRIMARY_INSTANCE_NAME];\n } else if (token) {\n // intialize the main mixpanel lib\n instance = create_mplib(token, config, PRIMARY_INSTANCE_NAME);\n instance._loaded();\n instances[PRIMARY_INSTANCE_NAME] = instance;\n }\n\n mixpanel_master = instance;\n if (init_type === INIT_SNIPPET) {\n win[PRIMARY_INSTANCE_NAME] = mixpanel_master;\n }\n extend_mp();\n }\n };\n};\n\nvar add_dom_loaded_handler = function() {\n // Cross browser DOM Loaded support\n function dom_loaded_handler() {\n // function flag since we only want to execute this once\n if (dom_loaded_handler.done) { return; }\n dom_loaded_handler.done = true;\n\n DOM_LOADED = true;\n ENQUEUE_REQUESTS = false;\n\n _.each(instances, function(inst) {\n inst._dom_loaded();\n });\n }\n\n function do_scroll_check() {\n try {\n document$1.documentElement.doScroll('left');\n } catch(e) {\n setTimeout(do_scroll_check, 1);\n return;\n }\n\n dom_loaded_handler();\n }\n\n if (document$1.addEventListener) {\n if (document$1.readyState === 'complete') {\n // safari 4 can fire the DOMContentLoaded event before loading all\n // external JS (including this file). you will see some copypasta\n // on the internet that checks for 'complete' and 'loaded', but\n // 'loaded' is an IE thing\n dom_loaded_handler();\n } else {\n document$1.addEventListener('DOMContentLoaded', dom_loaded_handler, false);\n }\n } else if (document$1.attachEvent) {\n // IE\n document$1.attachEvent('onreadystatechange', dom_loaded_handler);\n\n // check to make sure we arn't in a frame\n var toplevel = false;\n try {\n toplevel = win.frameElement === null;\n } catch(e) {\n // noop\n }\n\n if (document$1.documentElement.doScroll && toplevel) {\n do_scroll_check();\n }\n }\n\n // fallback handler, always will work\n _.register_event(win, 'load', dom_loaded_handler, true);\n};\n\nfunction init_as_module(bundle_loader) {\n load_extra_bundle = bundle_loader;\n init_type = INIT_MODULE;\n mixpanel_master = new MixpanelLib();\n\n override_mp_init_func();\n mixpanel_master['init']();\n add_dom_loaded_handler();\n\n return mixpanel_master;\n}\n\n// For loading separate bundles asynchronously via script tag\n// so that we don't load them until they are needed at runtime.\n\n// For builds that have everything in one bundle, no extra work.\nfunction loadNoop (_src, onload) {\n onload();\n}\n\n/* eslint camelcase: \"off\" */\n\nvar mixpanel = init_as_module(loadNoop);\n\nexport { mixpanel as default };\n","/**\n * Mixpanel Tracking Utility\n *\n * Provides centralized tracking functionality with error handling\n * and support for global and event-specific properties.\n */\n\nimport mixpanel from 'mixpanel-browser';\n\n// Track initialization status\nlet isInitialized = false;\n\n// Initialize Mixpanel if token is provided and data consent is given\nconst initializeMixpanel = () => {\n try {\n if (typeof window === 'undefined') {\n return false;\n }\n\n // Don't re-initialize if already done\n if (isInitialized) {\n return true;\n }\n\n const config = window.marketplaceConfig || {};\n\n // Check if data consent is given\n const dataConsentStatus = config.data_consent_status;\n if (!dataConsentStatus) {\n return false;\n }\n\n const mixpanelConfig = config.mixpanel || {};\n const token = mixpanelConfig.token;\n\n // Only initialize if token is provided\n if (!token || token === '') {\n return false;\n }\n\n mixpanel.init(token, {\n debug: mixpanelConfig.debug || false,\n track_pageview: false, // We'll handle page views manually\n persistence: 'localStorage',\n // Disable automatic collection of potentially sensitive properties for privacy\n property_blacklist: [\n '$initial_referrer',\n '$initial_referring_domain',\n '$current_url',\n '$referrer',\n '$referring_domain',\n 'mp_lib',\n '$lib_version',\n '$browser',\n '$browser_version',\n '$device',\n '$screen_height',\n '$screen_width',\n '$os',\n '$search_engine',\n ],\n });\n\n // Set distinct_id if provided\n const distinctId = mixpanelConfig.distinctId;\n if (distinctId && distinctId !== '') {\n mixpanel.identify(distinctId);\n }\n\n isInitialized = true;\n return true;\n } catch (error) {\n return false;\n }\n};\n\n// Export initializeMixpanel for manual initialization from React components\nexport { initializeMixpanel };\n\n// Check if Mixpanel is available\nconst isMixpanelAvailable = () => {\n try {\n return isInitialized && typeof mixpanel !== 'undefined';\n } catch (error) {\n return false;\n }\n};\n\n/**\n * Disable Mixpanel tracking (when consent is revoked)\n * Resets the SDK and clears the initialization flag\n */\nexport const disableMixpanel = () => {\n try {\n if (isInitialized && typeof mixpanel !== 'undefined') {\n // Reset Mixpanel instance to stop tracking\n mixpanel.reset();\n isInitialized = false;\n }\n } catch (error) {\n console.error('[MixpanelTracking] Error disabling Mixpanel:', error);\n }\n};\n\n/**\n * Enable Mixpanel tracking (when consent is granted)\n * Reinitializes Mixpanel with current config from window.marketplaceConfig\n */\nexport const enableMixpanel = () => {\n try {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const config = window.marketplaceConfig || {};\n const mixpanelConfig = config.mixpanel || {};\n const token = mixpanelConfig.token;\n\n // Only initialize if token is provided\n if (!token || token === '') {\n return false;\n }\n\n // Reset flag to allow re-initialization\n isInitialized = false;\n\n // Initialize Mixpanel\n return initializeMixpanel();\n } catch (error) {\n console.error('[MixpanelTracking] Error enabling Mixpanel:', error);\n return false;\n }\n};\n\n/**\n * Get global tracking properties from window.marketplaceConfig.mixpanel.globalProperties\n * @returns {Object} Global properties object\n */\nexport const getGlobalProperties = () => {\n try {\n if (typeof window === 'undefined') {\n return {};\n }\n\n const config = window.marketplaceConfig || {};\n const mixpanelConfig = config.mixpanel || {};\n const globalProps = mixpanelConfig.globalProperties || {};\n\n // Add hit_type and page/path properties to the global properties from PHP\n // Extract base path from query params for 'page' property\n const urlParams = new URLSearchParams(window.location.search);\n const pageParam = urlParams.get('page') || '';\n\n const enhancedProperties = {\n ...globalProps,\n hit_type: 'event',\n page: pageParam || window.location.pathname,\n path: window.location.pathname + window.location.search,\n referrer: document.referrer.split('/').filter(Boolean).pop() || '',\n };\n\n // Filter out empty values to keep the payload clean\n return Object.fromEntries(\n Object.entries(enhancedProperties).filter(([_, value]) => {\n if (value === '' || value === null || value === undefined) {\n return false;\n }\n if (Array.isArray(value) && value.length === 0) {\n return false;\n }\n return true;\n })\n );\n } catch (error) {\n return {};\n }\n};\n\n/**\n * Track a Mixpanel event with global and event-specific properties\n * @param {string} eventName - Name of the event to track\n * @param {Object} eventProperties - Event-specific properties\n */\nexport const trackEvent = (eventName, eventProperties = {}) => {\n try {\n if (!isMixpanelAvailable()) {\n // Silently skip tracking if Mixpanel is not available\n // This is expected when data consent is not given or token is missing\n return;\n }\n\n // Merge global properties with event-specific properties\n const properties = {\n ...getGlobalProperties(),\n ...eventProperties,\n };\n\n // Track the event\n mixpanel.track(eventName, properties);\n\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking event:', eventName, error);\n }\n};\n\n/**\n * Track page view event\n * @param {Object} options - Page view options\n * @param {string} options.pluginSlug - Plugin slug (for detail pages)\n * @param {string} options.pluginName - Plugin name (for detail pages)\n * @param {string} options.category - Plugin category\n * @param {string} options.itemName - Custom item_name value (overrides default)\n * @param {boolean} options.isContentRendered - Whether content was successfully rendered (default: true)\n * @param {number} options.contentReceivedAt - Timestamp when API content was received\n * @param {number} options.contentRenderedAt - Timestamp when content was rendered to page\n * @param {boolean} options.isCached - Whether the response was served from cache (default: false)\n */\nexport const trackPageView = ({ pluginSlug, pluginName, category, itemName, isContentRendered = true, contentReceivedAt = null, contentRenderedAt = null, isCached = false } = {}) => {\n try {\n const timestamp = Date.now();\n\n const eventProperties = {\n content_received_at: contentReceivedAt || timestamp,\n is_content_rendered: isContentRendered,\n is_cached: isCached,\n };\n\n // Only add content_rendered_at if content was successfully rendered\n if (isContentRendered) {\n eventProperties.content_rendered_at = contentRenderedAt || timestamp;\n }\n\n // Use itemName if provided, otherwise use pluginSlug (for backward compatibility)\n if (itemName) {\n eventProperties.item_name = itemName;\n } else if (pluginSlug) {\n eventProperties.item_name = pluginSlug;\n }\n\n if (pluginSlug) {\n eventProperties.product_slug = pluginSlug;\n }\n\n if (pluginName) {\n eventProperties.product_name = pluginName;\n }\n\n if (category) {\n eventProperties.item_category = category;\n }\n\n trackEvent('Page Viewed', eventProperties);\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking page view:', error);\n }\n};\n\n/**\n * Track plugin action (install, activate, etc.)\n * @param {Object} options - Action options\n * @param {string} options.action - Action type (e.g., 'install', 'activate')\n * @param {Object} options.plugin - Plugin object\n * @param {string} options.result - Action result (e.g., 'success', 'error')\n */\nexport const trackPluginAction = ({ action, plugin, result = 'initiated' } = {}) => {\n try {\n if (!plugin) {\n return;\n }\n\n const eventName = `Plugin ${action.charAt(0).toUpperCase() + action.slice(1)}`;\n\n const eventProperties = {\n action: action,\n product_slug: plugin.slug || '',\n product_name: plugin.name || '',\n item_name: plugin.slug || '',\n result: result,\n timestamp: Date.now(),\n };\n\n // Add plugin-specific properties\n if (plugin.categories && plugin.categories.length > 0) {\n const category = typeof plugin.categories[0] === 'object'\n ? plugin.categories[0].slug || plugin.categories[0].title\n : plugin.categories[0];\n eventProperties.item_category = category;\n }\n\n if (plugin.licenseType) {\n eventProperties.license_type = plugin.licenseType;\n }\n\n if (plugin.priceAmount !== undefined) {\n eventProperties.price_amount = plugin.priceAmount;\n }\n\n if (plugin.priceCurrency) {\n eventProperties.price_currency = plugin.priceCurrency;\n }\n\n trackEvent(eventName, eventProperties);\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking plugin action:', error);\n }\n};\n\n/**\n * Extract common properties from a plugin object\n * @param {Object} plugin - Plugin object\n * @returns {Object} Extracted properties\n */\nconst extractPluginProperties = (plugin) => {\n if (!plugin) return {};\n\n const properties = {\n product_slug: plugin.slug || '',\n product_name: plugin.name || '',\n // Note: item_name is NOT included here by default\n // It should be set contextually by the calling function\n };\n\n // Extract category\n if (plugin.categories && plugin.categories.length > 0) {\n const category = typeof plugin.categories[0] === 'object'\n ? plugin.categories[0].slug || plugin.categories[0].title\n : plugin.categories[0];\n properties.item_category = category;\n }\n\n // Extract license type\n if (plugin.licenseType) {\n properties.license_type = plugin.licenseType;\n }\n\n // Extract price information\n if (plugin.priceAmount !== undefined) {\n properties.price_amount = plugin.priceAmount;\n }\n\n if (plugin.priceCurrency) {\n properties.price_currency = plugin.priceCurrency;\n }\n\n return properties;\n};\n\n/**\n * Track button click event\n * @param {Object} options - Click options\n * @param {string} options.buttonName - Name/label of the button\n * @param {string} options.buttonAction - Action associated with the button\n * @param {Object} options.plugin - Optional plugin object (will auto-extract properties)\n * @param {Object} options.context - Additional context (merged with plugin properties)\n */\nexport const trackButtonClick = ({ buttonName, buttonAction, plugin = null, context = {} } = {}) => {\n try {\n // Start with base properties\n const eventProperties = {\n button_name: buttonName || '',\n button_action: buttonAction || '',\n item_name: buttonName || '', // item_name should be the button name\n timestamp: Date.now(),\n };\n\n // Auto-extract plugin properties if plugin object is provided\n if (plugin) {\n Object.assign(eventProperties, extractPluginProperties(plugin));\n }\n\n // Merge additional context (context takes precedence over auto-extracted properties)\n Object.assign(eventProperties, context);\n\n trackEvent('Button Clicked', eventProperties);\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking button click:', error);\n }\n};\n\n/**\n * Track marketplace visit\n * @param {number} contentReceivedAt - Timestamp when API content was received\n * @param {number} contentRenderedAt - Timestamp when content was rendered to page\n * @param {boolean} isCached - Whether the response was served from cache\n */\nexport const trackMarketplaceVisit = (contentReceivedAt = null, contentRenderedAt = null, isCached = false) => {\n try {\n trackPageView({\n category: 'marketplace_home',\n itemName: 'Catalog Page', // Set item_name to 'Catalog page' for marketplace listing\n contentReceivedAt: contentReceivedAt,\n contentRenderedAt: contentRenderedAt,\n isCached: isCached,\n });\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking marketplace visit:', error);\n }\n};\n\n/**\n * Track plugin detail page visit\n * @param {Object} plugin - Plugin object\n * @param {number} contentReceivedAt - Timestamp when API content was received\n * @param {number} contentRenderedAt - Timestamp when content was rendered to page\n * @param {boolean} isCached - Whether the response was served from cache\n */\nexport const trackPluginDetailVisit = (plugin, contentReceivedAt = null, contentRenderedAt = null, isCached = false) => {\n try {\n if (!plugin) {\n console.warn('[MixpanelTracking] Plugin object required for tracking detail visit');\n return;\n }\n\n const category = plugin.categories && plugin.categories.length > 0\n ? (typeof plugin.categories[0] === 'object'\n ? plugin.categories[0].slug || plugin.categories[0].title\n : plugin.categories[0])\n : '';\n\n trackPageView({\n pluginSlug: plugin.slug,\n pluginName: plugin.name,\n category: category,\n itemName: 'Product Page', // Set item_name to 'Product page' for plugin detail page\n contentReceivedAt: contentReceivedAt,\n contentRenderedAt: contentRenderedAt,\n isCached: isCached,\n });\n } catch (error) {\n console.error('[MixpanelTracking] Error tracking plugin detail visit:', error);\n }\n};\n\n// Export default object with all tracking functions\nexport default {\n trackEvent,\n trackPageView,\n trackPluginAction,\n trackButtonClick,\n trackMarketplaceVisit,\n trackPluginDetailVisit,\n getGlobalProperties,\n isMixpanelAvailable,\n};\n","import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape\n};\nexport const setDefaults = (options = {}) => {\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n};\nexport const getDefaults = () => defaultOptions;","import React, { createContext, useContext, useState, useEffect, useCallback, useRef } from 'react';\nimport { trackButtonClick, initializeMixpanel, enableMixpanel, disableMixpanel } from '../utils/mixpanelTracking';\nimport { isWpVersionSupported as isWpVersionSupportedHelper } from '../utils/wpVersionHelper';\n\nconst MarketplaceContext = createContext(null);\n\nexport const MarketplaceProvider = ({\n children,\n apiBaseUrl,\n useWPHandlers,\n wpConfig,\n enableDefaultStyles,\n assetsBaseUrl\n}) => {\n const [pluginInAction, setPluginInAction] = useState({});\n const [subscriptionStatus, setSubscriptionStatus] = useState({});\n const [isCheckingSubscription, setIsCheckingSubscription] = useState({});\n const [plugins, setPlugins] = useState([]);\n const [uiI18n, setUiI18n] = useState({});\n const [loadingAction, setLoadingAction] = useState('');\n const [loadingPlugin, setLoadingPlugin] = useState('');\n const [noticeState, setNoticeState] = useState({ visible: false, type: null, pluginSlug: null });\n const [errorState, setErrorState] = useState({ visible: false, type: null, pluginSlug: null });\n const [successState, setSuccessState] = useState({ visible: false, type: null, pluginSlug: null });\n const [allPluginsActivated, setAllPluginsActivated] = useState(false);\n const [catalogError, setCatalogError] = useState(false);\n const [catalogLoading, setCatalogLoading] = useState(true);\n\n // State for tracking consent status\n const [consentStatus, setConsentStatus] = useState(() => {\n const initialConsent = typeof window !== \"undefined\" && window.marketplaceConfig?.data_consent_status;\n // Convert to boolean: handle true, 'true', '1', 1 as true\n return initialConsent === true || initialConsent === 'true' || initialConsent === '1' || initialConsent === 1;\n });\n\n // Use ref to track which subscriptions have been checked to avoid recreation of fetchSubscriptionStatus\n const checkedSubscriptionsRef = useRef({});\n\n // Use ref to track reload timeout so it can be cancelled if user navigates\n const reloadTimeoutRef = useRef(null);\n\n const brand = typeof window !== \"undefined\" && window.marketplaceConfig?.brand;\n const isOnecomBrand = brand === \"onecom\";\n\n // Get active plugin slugs from WordPress config\n const activePlugins = typeof window !== \"undefined\" && window.marketplaceConfig?.activePlugins\n ? window.marketplaceConfig.activePlugins\n : [];\n\n // Get active theme author from WordPress config\n const activeThemeAuthor = typeof window !== \"undefined\" && window.marketplaceConfig?.activeThemeAuthor\n ? window.marketplaceConfig.activeThemeAuthor\n : \"\";\n\n // Get WP version from WordPress config\n const wpVersion = typeof window !== \"undefined\" && window.marketplaceConfig?.wpVersion\n ? window.marketplaceConfig.wpVersion\n : \"\";\n\n useEffect(() => {\n const persistedNotice = sessionStorage.getItem('mp_success_notice');\n if (persistedNotice) {\n try {\n const noticeData = JSON.parse(persistedNotice);\n setNoticeState({\n visible: noticeData.visible,\n type: noticeData.type,\n pluginSlug: noticeData.pluginSlug\n });\n setSuccessState({\n visible: noticeData.visible,\n type: noticeData.successType,\n pluginSlug: noticeData.pluginSlug\n });\n\n // Schedule clearing from sessionStorage AFTER the notice is set in state\n // and the components have had a chance to mount and check it.\n // We use a small timeout to ensure it stays in sessionStorage long enough\n // for ProductDetail.jsx mount effect to see it.\n setTimeout(() => {\n sessionStorage.removeItem('mp_success_notice');\n }, 100);\n } catch (e) {\n console.error('Error parsing persisted success notice', e);\n }\n }\n }, []);\n\n // Initialize Mixpanel on mount and monitor consent changes\n // Uses useEffect to ensure Mixpanel only initializes when consent is given\n useEffect(() => {\n // Initialize Mixpanel on component mount based on initial consent status\n if (consentStatus === true) {\n initializeMixpanel();\n }\n\n // Set up listener for consent changes from plugin\n const handleConsentChange = (e) => {\n const newConsentStatus = e.detail?.data_consent_status !== undefined ? e.detail.data_consent_status : false;\n\n // Update state\n setConsentStatus(newConsentStatus);\n\n // Handle Mixpanel based on new consent status\n if (newConsentStatus === true) {\n // Consent granted - enable Mixpanel\n // Update window.marketplaceConfig consent status\n // Note: mixpanel config (token, globalProperties, distinctId) is always sent by PHP\n // regardless of consent status, so we can use it directly\n if (typeof window !== \"undefined\" && window.marketplaceConfig) {\n window.marketplaceConfig.data_consent_status = true;\n }\n\n // Enable Mixpanel - it will read the config from window.marketplaceConfig\n enableMixpanel();\n } else {\n\n // Update window.marketplaceConfig\n if (typeof window !== \"undefined\" && window.marketplaceConfig) {\n window.marketplaceConfig.data_consent_status = false;\n // Keep mixpanel config available for when consent is granted again\n }\n\n disableMixpanel();\n }\n };\n\n // Listen for custom consent change event from plugin (same page)\n window.addEventListener('onConsentStatusChanged', handleConsentChange);\n\n // Listen for localStorage changes (cross-page communication)\n const handleStorageChange = (e) => {\n // Only handle changes to our consent key\n if (e.key === 'onecom_data_consent_status') {\n const newConsentStatus = e.newValue === '1';\n\n // Trigger the same handler with the new consent status\n handleConsentChange({ detail: { data_consent_status: newConsentStatus } });\n }\n };\n\n window.addEventListener('storage', handleStorageChange);\n\n // Cleanup on unmount\n return () => {\n window.removeEventListener('onConsentStatusChanged', handleConsentChange);\n window.removeEventListener('storage', handleStorageChange);\n };\n }, []); // Empty dependency array - only run on mount/unmount\n\n // Fetch subscription status for special plugins (wp-rocket, rank-math-pro)\n const fetchSubscriptionStatus = useCallback(async (pluginSlug) => {\n if (!isOnecomBrand) return;\n\n if (!isSpecialPlugin(pluginSlug)) return;\n\n // Mark as being checked\n setIsCheckingSubscription(prev => ({ ...prev, [pluginSlug]: true }));\n\n try {\n const ajaxUrl = typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.wpConfig?.ajaxUrl;\n if (!ajaxUrl) {\n setIsCheckingSubscription(prev => ({ ...prev, [pluginSlug]: false }));\n return;\n }\n\n const formData = new FormData();\n formData.append('action', 'get_addon_purchase_status');\n formData.append('addon_purchase_check', 'true');\n formData.append('addon_slug', pluginSlug);\n\n const res = await fetch(ajaxUrl, {\n method: 'POST',\n body: formData\n });\n\n const json = await res.json();\n\n setSubscriptionStatus(prev => ({ ...prev, [pluginSlug]: json.is_purchased }));\n } catch (e) {\n setSubscriptionStatus(prev => ({ ...prev, [pluginSlug]: false }));\n } finally {\n setIsCheckingSubscription(prev => ({ ...prev, [pluginSlug]: false }));\n }\n }, [isOnecomBrand]);\n\n // Function to cancel scheduled reload (called when user clicks \"Get Started\")\n const cancelReload = useCallback(() => {\n if (reloadTimeoutRef.current) {\n clearTimeout(reloadTimeoutRef.current);\n reloadTimeoutRef.current = null;\n }\n sessionStorage.removeItem('mp_success_notice');\n }, []);\n\n const isSpecialPlugin = useCallback((pluginSlug) => {\n return pluginSlug === \"wp-rocket\" || pluginSlug === \"seo-by-rank-math-pro\";\n }, []);\n\n const isWpVersionSupported = useCallback((minVersion) => {\n return isWpVersionSupportedHelper(wpVersion, minVersion);\n }, [wpVersion]);\n\n const shouldShowProvision = useCallback((plugin) => {\n if (!plugin || !isOnecomBrand) return false;\n return isSpecialPlugin(plugin.slug) && !plugin.installed && subscriptionStatus[plugin.slug] === true;\n }, [isOnecomBrand, subscriptionStatus, isSpecialPlugin]);\n\n // Helper function to check if a plugin should be visible based on its rules\n const shouldShowPlugin = useCallback((plugin) => {\n // If plugin has no rules, show it by default\n if (!plugin.rules) {\n return true;\n }\n\n // Check mustHavePlugins rule\n if (plugin.rules.mustHavePlugins && Array.isArray(plugin.rules.mustHavePlugins)) {\n // If the array is empty, no requirements exist, so show the plugin\n if (plugin.rules.mustHavePlugins.length === 0) {\n return true;\n }\n\n // Plugin should be visible if ANY of the required plugins is active\n const hasRequiredPlugin = plugin.rules.mustHavePlugins.some(requiredSlug =>\n activePlugins.includes(requiredSlug)\n );\n\n // If mustHavePlugins rule exists but no required plugin is active, hide the plugin\n if (!hasRequiredPlugin) {\n return false;\n }\n }\n\n // Check mustHaveThemesByAuthor rule\n if (plugin.rules.mustHaveThemesByAuthor && typeof plugin.rules.mustHaveThemesByAuthor === 'string') {\n // Plugin should be visible only if the active theme author matches the required author\n const requiredAuthor = plugin.rules.mustHaveThemesByAuthor;\n if (activeThemeAuthor !== requiredAuthor) {\n return false;\n }\n }\n\n // Add support for other rule types here in the future\n // For now, if all rules pass (or don't exist), show the plugin\n return true;\n }, [activePlugins, activeThemeAuthor]);\n\n // Handle plugin actions (install, activate, deactivate)\n const handlePluginAction = useCallback(async (action, plugin, source = '') => {\n // Check if this is Imagify plugin activation (handles 302 redirect case)\n const isImagifyActivation = action === 'activate' && plugin.slug === 'imagify';\n\n setPluginInAction(prev => ({ ...prev, [plugin.slug]: true }));\n\n // Use ref to track if action was successful (to prevent finally block from clearing pluginInAction)\n let actionSuccessful = false;\n\n // Set loading state for overlay using API response keys\n const pluginName = plugin.name || plugin.slug;\n let loadingMessage = '';\n\n if (action === 'activate') {\n const activatingMsg = uiI18n?.notifications?.activating || 'Activating {0}';\n loadingMessage = activatingMsg.replace('{0}', pluginName) + '...';\n } else if (action === 'deactivate') {\n const deactivatingMsg = uiI18n?.notifications?.deactivating || 'Deactivating {0}';\n loadingMessage = deactivatingMsg.replace('{0}', pluginName) + '...';\n } else if (action === 'install') {\n const installingMsg = uiI18n?.notifications?.installing || 'Installing {0}';\n loadingMessage = installingMsg.replace('{0}', pluginName) + '...';\n } else if (action === 'delete') {\n const deletingMsg = uiI18n?.notifications?.deleting || 'Deleting {0}';\n loadingMessage = deletingMsg.replace('{0}', pluginName) + '...';\n } else {\n // Fallback for other actions\n const actionText = action.charAt(0).toUpperCase() + (action.endsWith('e') ? action.slice(1, -1) : action.slice(1)) + 'ing';\n loadingMessage = `${actionText} ${pluginName}`;\n }\n\n setLoadingAction(loadingMessage);\n setLoadingPlugin('');\n\n // For Imagify, use setTimeout to allow React to render the loading overlay first\n if (isImagifyActivation) {\n // Build URL for activation\n let url = `${apiBaseUrl}${action}/${plugin.slug}`;\n const downloadParam = `download_url=${encodeURIComponent(plugin.download || '')}`;\n\n if (useWPHandlers) {\n url = `${wpConfig.ajaxUrl}?action=marketplace_${action}_plugin&_wpnonce=${wpConfig.nonce}&nonce=${wpConfig.nonce}&slug=${plugin.slug}&${downloadParam}`;\n } else {\n url = url + (url.includes('?') ? '&' : '?') + downloadParam;\n }\n\n // Allow React to render loading overlay, then execute Imagify flow\n setTimeout(async () => {\n // Initiate the activation request (don't wait for response due to 302 redirect)\n try {\n await fetch(url, { method: \"POST\" });\n } catch (err) {\n console.log(\"Imagify activation request initiated\");\n }\n\n // Poll for activation status\n let attempts = 0;\n const maxAttempts = 6;\n const checkActivation = async () => {\n try {\n const checkUrl = `${apiBaseUrl}active/${plugin.slug}`;\n const response = await fetch(checkUrl);\n const data = await response.json();\n\n if (data && data.activated) {\n // Track successful Imagify activation\n trackButtonClick({\n buttonName: 'Activate',\n buttonAction: 'product_activate',\n plugin: plugin,\n context: {\n action: action,\n result: 'success',\n special_case: 'imagify_redirect',\n }\n });\n\n if (source === 'product_detail') {\n // Set flag to skip page view tracking on reload\n sessionStorage.setItem('mp_skip_page_view', 'true');\n sessionStorage.setItem('mp_success_notice', JSON.stringify({\n visible: true,\n type: 'activated',\n pluginSlug: plugin.slug,\n successType: 'activate'\n }));\n\n // Schedule reload\n reloadTimeoutRef.current = setTimeout(() => {\n window.location.reload();\n }, 500);\n } else {\n // Old flow for addons page\n setSuccessState({ visible: true, type: 'activate', pluginSlug: plugin.slug });\n\n // Schedule reload after a while\n reloadTimeoutRef.current = setTimeout(() => {\n sessionStorage.setItem('mp_skip_page_view', 'true');\n window.location.reload();\n }, 3000);\n\n // Clear loading state only\n setLoadingAction('');\n setLoadingPlugin('');\n actionSuccessful = true;\n }\n return;\n }\n } catch (e) {\n console.error(\"Error checking activation status\", e);\n }\n\n attempts++;\n if (attempts < maxAttempts) {\n setTimeout(checkActivation, 1000);\n } else {\n // If we reached max attempts and still not activated, show error\n setErrorState({ visible: true, type: 'activate', pluginSlug: plugin.slug });\n\n // Track activation error\n trackButtonClick({\n buttonName: 'Activate',\n buttonAction: 'product_activate',\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: 'Imagify activation timeout after polling',\n }\n });\n\n // Clear loading state\n setLoadingAction('');\n setLoadingPlugin('');\n setPluginInAction(prev => ({ ...prev, [plugin.slug]: false }));\n }\n };\n\n // Start checking\n setTimeout(checkActivation, 1000);\n }, 100);\n return;\n }\n\n try {\n let url = `${apiBaseUrl}/${action}/${plugin.slug}`;\n\n // prepare encoded download param (safe if plugin.download is undefined)\n const downloadParam = `download_url=${encodeURIComponent(plugin.download || '')}`;\n\n if (useWPHandlers) {\n // original WP-AJAX URL + download_url appended\n url = `${wpConfig.ajaxUrl}?action=marketplace_${action}_plugin&_wpnonce=${wpConfig.nonce}&nonce=${wpConfig.nonce}&slug=${plugin.slug}&${downloadParam}`;\n } else {\n // append download_url to non-WP URL (adds ? or & correctly)\n url = url + (url.includes('?') ? '&' : '?') + downloadParam;\n }\n\n const res = await fetch(url, { method: \"POST\" });\n const result = await res.json();\n\n if (result.success) {\n setPlugins(prev =>\n prev.map(p => {\n if (p.slug === plugin.slug) {\n return { ...p, installed: result.data.installed, activated: result.data.activated };\n }\n\n // Handle Rank Math dependency: if Free is deactivated, Pro is also deactivated\n if (action === 'deactivate' && plugin.slug === 'seo-by-rank-math' && p.slug === 'seo-by-rank-math-pro') {\n return { ...p, activated: false };\n }\n\n // Handle Rank Math dependency: if Pro is activated, Free is also activated\n if (action === 'activate' && plugin.slug === 'seo-by-rank-math-pro' && p.slug === 'seo-by-rank-math') {\n return { ...p, activated: true };\n }\n\n return p;\n })\n );\n\n // Show success notice for install, activate and delete actions\n if (action === 'install' && result.data.installed) {\n setNoticeState({ visible: true, type: 'installed', pluginSlug: plugin.slug });\n\n // Track successful install\n trackButtonClick({\n buttonName: 'Install',\n buttonAction: 'product_install',\n plugin: plugin,\n context: {\n action: action,\n result: 'success',\n }\n });\n } else if (action === 'delete' && !result.data.installed) {\n setNoticeState({ visible: true, type: 'deleted', pluginSlug: plugin.slug });\n setSuccessState({ visible: true, type: 'delete', pluginSlug: plugin.slug });\n\n // Track successful delete\n trackButtonClick({\n buttonName: 'Delete',\n buttonAction: 'product_delete',\n plugin: plugin,\n context: {\n action: action,\n result: 'success',\n }\n });\n } else if (action === 'activate' && result.data.activated) {\n actionSuccessful = true; // Mark action as successful to prevent finally block from clearing pluginInAction\n\n // Track successful activate\n trackButtonClick({\n buttonName: 'Activate',\n buttonAction: 'product_activate',\n plugin: plugin,\n context: {\n action: action,\n result: 'success',\n }\n });\n\n if (source === 'product_detail') {\n // Set flag to skip page view tracking on reload\n sessionStorage.setItem('mp_skip_page_view', 'true');\n sessionStorage.setItem('mp_success_notice', JSON.stringify({\n visible: true,\n type: 'activated',\n pluginSlug: plugin.slug,\n successType: 'activate'\n }));\n\n // Schedule reload almost instantly\n reloadTimeoutRef.current = setTimeout(() => {\n window.location.reload();\n }, 500);\n } else {\n // Old flow for addons page\n setSuccessState({ visible: true, type: 'activate', pluginSlug: plugin.slug });\n\n // Schedule reload after a while\n reloadTimeoutRef.current = setTimeout(() => {\n // Set flag to skip page view tracking on reload\n sessionStorage.setItem('mp_skip_page_view', 'true');\n window.location.reload();\n }, 3000);\n\n // Clear loading state only\n setLoadingAction('');\n setLoadingPlugin('');\n }\n\n return; // Skip finally block (though finally will still execute, actionSuccessful flag prevents clearing)\n } else if (action === 'deactivate' && !result.data.activated) {\n actionSuccessful = true; // Mark action as successful to prevent finally block from clearing pluginInAction\n setSuccessState({ visible: true, type: 'deactivate', pluginSlug: plugin.slug });\n\n // Track successful deactivate\n trackButtonClick({\n buttonName: 'Deactivate',\n buttonAction: 'product_deactivate',\n plugin: plugin,\n context: {\n action: action,\n result: 'success',\n }\n });\n\n // Schedule reload after deactivation to refresh plugin state\n reloadTimeoutRef.current = setTimeout(() => {\n // Set flag to skip page view tracking on reload\n sessionStorage.setItem('mp_skip_page_view', 'true');\n window.location.reload();\n }, 3000);\n\n // Don't clear pluginInAction for successful deactivation - keep back button disabled until reload\n // Clear loading state only\n setLoadingAction('');\n setLoadingPlugin('');\n return;\n }\n } else {\n // Show error toast for activation and installation errors\n if (action === 'activate') {\n setErrorState({ visible: true, type: 'activate', pluginSlug: plugin.slug });\n\n // Track activation error\n trackButtonClick({\n buttonName: 'Activate',\n buttonAction: 'product_activate',\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: result.data?.message || uiI18n?.notifications?.pluginActivationFailed || 'Activation failed',\n }\n });\n } else if (action === 'deactivate') {\n setErrorState({ visible: true, type: 'deactivate', pluginSlug: plugin.slug });\n\n // Track deactivation error\n trackButtonClick({\n buttonName: 'Deactivate',\n buttonAction: 'product_deactivate',\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: result.data?.message || uiI18n?.notifications?.pluginDeactivationFailed || 'Deactivation failed',\n }\n });\n } else if (action === 'install') {\n setErrorState({ visible: true, type: 'install', pluginSlug: plugin.slug });\n\n // Track installation error\n trackButtonClick({\n buttonName: 'Install',\n buttonAction: 'product_install',\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: result.data?.message || 'Installation failed',\n }\n });\n } else if (action === 'delete') {\n setErrorState({ visible: true, type: 'delete', pluginSlug: plugin.slug });\n\n // Track deletion error\n trackButtonClick({\n buttonName: 'Delete',\n buttonAction: 'product_delete',\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: result.data?.message || uiI18n?.notifications?.pluginDeletionFailed || 'Deletion failed',\n }\n });\n } else {\n alert(result.data?.message || \"Failed to perform action\");\n }\n }\n } catch (err) {\n console.error(\"Plugin action failed\", err);\n\n // Track network/exception errors for install and activate\n if (action === 'activate' || action === 'install' || action === 'delete') {\n trackButtonClick({\n buttonName: action === 'activate' ? 'Activate' : (action === 'install' ? 'Install' : 'Delete'),\n buttonAction: action === 'activate' ? 'product_activate' : (action === 'install' ? 'product_install' : 'product_delete'),\n plugin: plugin,\n context: {\n action: action,\n result: 'error',\n error_message: err.message || 'Network error',\n }\n });\n }\n } finally {\n // Only clear pluginInAction if action was not successful\n // For successful actions (activate/deactivate), keep it true until page reload\n if (!actionSuccessful) {\n setPluginInAction(prev => ({ ...prev, [plugin.slug]: false }));\n }\n // Clear loading state\n setLoadingAction('');\n setLoadingPlugin('');\n }\n }, [apiBaseUrl, useWPHandlers, wpConfig, uiI18n]);\n\n const value = {\n apiBaseUrl,\n useWPHandlers,\n wpConfig,\n enableDefaultStyles,\n assetsBaseUrl,\n pluginInAction,\n setPluginInAction,\n subscriptionStatus,\n isCheckingSubscription,\n fetchSubscriptionStatus,\n isOnecomBrand,\n plugins,\n setPlugins,\n uiI18n,\n setUiI18n,\n handlePluginAction,\n cancelReload,\n loadingAction,\n loadingPlugin,\n noticeState,\n setNoticeState,\n errorState,\n setErrorState,\n successState,\n setSuccessState,\n allPluginsActivated,\n setAllPluginsActivated,\n catalogError,\n setCatalogError,\n catalogLoading,\n setCatalogLoading,\n shouldShowProvision,\n isSpecialPlugin,\n shouldShowPlugin,\n isWpVersionSupported,\n wpVersion,\n activePlugins,\n activeThemeAuthor\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const useMarketplace = () => {\n const context = useContext(MarketplaceContext);\n if (!context) {\n throw new Error('useMarketplace must be used within MarketplaceProvider');\n }\n return context;\n};\n","import { useState, useEffect, useContext, useRef, useCallback } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace, isString, isObject } from './utils.js';\nconst usePrevious = (value, ignore) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\nconst alwaysNewT = (i18n, language, namespace, keyPrefix) => i18n.getFixedT(language, namespace, keyPrefix);\nconst useMemoizedT = (i18n, language, namespace, keyPrefix) => useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);\nexport const useTranslation = (ns, props = {}) => {\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', 'useTranslation: You will need to pass in an i18next instance by using initReactI18next');\n const notReadyT = (k, optsOrDefaultValue) => {\n if (isString(optsOrDefaultValue)) return optsOrDefaultValue;\n if (isObject(optsOrDefaultValue) && isString(optsOrDefaultValue.defaultValue)) return optsOrDefaultValue.defaultValue;\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n const retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n if (i18n.options.react?.wait) warnOnce(i18n, 'DEPRECATED_OPTION', 'useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n const i18nOptions = {\n ...getDefaults(),\n ...i18n.options.react,\n ...props\n };\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n let namespaces = ns || defaultNSFromContext || i18n.options?.defaultNS;\n namespaces = isString(namespaces) ? [namespaces] : namespaces || ['translation'];\n i18n.reportNamespaces.addUsedNamespaces?.(namespaces);\n const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n const memoGetT = useMemoizedT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const getT = () => memoGetT;\n const getNewT = () => alwaysNewT(i18n, props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const [t, setT] = useState(getT);\n let joinedNS = namespaces.join();\n if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n const previousJoinedNS = usePrevious(joinedNS);\n const isMounted = useRef(true);\n useEffect(() => {\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n isMounted.current = true;\n if (!ready && !useSuspense) {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n } else {\n loadNamespaces(i18n, namespaces, () => {\n if (isMounted.current) setT(getNewT);\n });\n }\n }\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getNewT);\n }\n const boundReset = () => {\n if (isMounted.current) setT(getNewT);\n };\n if (bindI18n) i18n?.on(bindI18n, boundReset);\n if (bindI18nStore) i18n?.store.on(bindI18nStore, boundReset);\n return () => {\n isMounted.current = false;\n if (i18n && bindI18n) bindI18n?.split(' ').forEach(e => i18n.off(e, boundReset));\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n };\n }, [i18n, joinedNS]);\n useEffect(() => {\n if (isMounted.current && ready) {\n setT(getT);\n }\n }, [i18n, keyPrefix, ready]);\n const ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(resolve => {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => resolve());\n } else {\n loadNamespaces(i18n, namespaces, () => resolve());\n }\n });\n};","let i18nInstance;\nexport const setI18n = instance => {\n i18nInstance = instance;\n};\nexport const getI18n = () => i18nInstance;","export const warn = (i18n, code, msg, rest) => {\n const args = [msg, {\n code,\n ...(rest || {})\n }];\n if (i18n?.services?.logger?.forward) {\n return i18n.services.logger.forward(args, 'warn', 'react-i18next::', true);\n }\n if (isString(args[0])) args[0] = `react-i18next:: ${args[0]}`;\n if (i18n?.services?.logger?.warn) {\n i18n.services.logger.warn(...args);\n } else if (console?.warn) {\n console.warn(...args);\n }\n};\nconst alreadyWarned = {};\nexport const warnOnce = (i18n, code, msg, rest) => {\n if (isString(msg) && alreadyWarned[msg]) return;\n if (isString(msg)) alreadyWarned[msg] = new Date();\n warn(i18n, code, msg, rest);\n};\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport const loadNamespaces = (i18n, ns, cb) => {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n};\nexport const loadLanguages = (i18n, lng, ns, cb) => {\n if (isString(ns)) ns = [ns];\n if (i18n.options.preload && i18n.options.preload.indexOf(lng) > -1) return loadNamespaces(i18n, ns, cb);\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n};\nexport const hasLoadedNamespace = (ns, i18n, options = {}) => {\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce(i18n, 'NO_LANGUAGES', 'i18n.languages were undefined or empty', {\n languages: i18n.languages\n });\n return true;\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n};\nexport const getDisplayName = Component => Component.displayName || Component.name || (isString(Component) && Component.length > 0 ? Component : 'Unknown');\nexport const isString = obj => typeof obj === 'string';\nexport const isObject = obj => typeof obj === 'object' && obj !== null;","import React, { useState, useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport PluginActions from \"./PluginActions\";\nimport SuccessNotice from \"./SuccessNotice\";\nimport ErrorToast from \"./ErrorToast\";\nimport { useMarketplace } from \"../context/MarketplaceContext\";\nimport { formatPluginPrice, getFullPrice } from \"../utils/priceFormatter\";\n\nexport default function ProductDetailRankMath({\n plugin,\n onClose,\n usePortal = true,\n loading = false\n}) {\n const {\n assetsBaseUrl,\n useWPHandlers,\n pluginInAction,\n plugins,\n uiI18n,\n subscriptionStatus,\n isCheckingSubscription,\n noticeState,\n setNoticeState,\n setErrorState\n } = useMarketplace();\n\n // Always get both plugins from context - seo-by-rank-math for first column, rank-math-pro for second\n const freePlugin = plugins.find(p => p.slug === \"seo-by-rank-math\") || null;\n const proPlugin = plugins.find(p => p.slug === \"seo-by-rank-math-pro\") || null;\n\n const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== \"undefined\" && window.marketplaceConfig?.assetsBaseUrl) || \"\";\n const iconBase = assetBase ? `${assetBase}assets/icons/` : \"\";\n\n // Show skeleton loaders while loading (even if plugin is null)\n if (loading) {\n const skeletonContent = (\n
\n
\n \n\n {/* Header skeleton - single skeleton loader */}\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n {/* Benefits skeleton - keep structure, add skeletons */}\n
\n
\n
\n
    \n {[...Array(3)].map((_, i) => (\n
  • \n
    \n
  • \n ))}\n
\n
\n
\n\n {/* Core Features skeleton - keep structure, add skeletons */}\n
\n
\n
\n
\n {[...Array(3)].map((_, i) => (\n
\n
\n
\n
\n
\n ))}\n
\n
\n
\n
\n
\n );\n return usePortal ? createPortal(skeletonContent, document.body) : skeletonContent;\n }\n\n // If not loading and plugin is null, return null\n if (!plugin) return null;\n\n // Refs for slider elements\n const tableSliderRef = useRef(null);\n const sliderNavRef = useRef(null);\n const tableRef = useRef(null);\n const tableHeaderRef = useRef(null);\n const paginationRef = useRef(null);\n const dotsRef = useRef([]);\n\n // State for active slide\n const [activeSlide, setActiveSlide] = useState(0);\n\n // Scroll to top when component mounts or plugin changes\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [plugin]);\n\n // Clear banners when component mounts (handles case when user returns via browser back button)\n useEffect(() => {\n // Clear any existing banners when ProductDetail mounts\n // BUT don't clear them if they are for the current plugin (e.g. just activated and reloaded)\n setNoticeState(prev => (prev.visible && (prev.pluginSlug === freePlugin?.slug || prev.pluginSlug === proPlugin?.slug)) ? prev : { visible: false, type: null, pluginSlug: null });\n setErrorState(prev => (prev.visible && (prev.pluginSlug === freePlugin?.slug || prev.pluginSlug === proPlugin?.slug)) ? prev : { visible: false, type: null, pluginSlug: null });\n }, [freePlugin?.slug, proPlugin?.slug, setNoticeState, setErrorState]);\n\n // Hide banners when user navigates back and returns to the product detail page\n useEffect(() => {\n const handlePopState = () => {\n // Clear notice and error state when navigating via browser back/forward\n setNoticeState({ visible: false, type: null, pluginSlug: null });\n setErrorState({ visible: false, type: null, pluginSlug: null });\n };\n\n window.addEventListener('popstate', handlePopState);\n return () => window.removeEventListener('popstate', handlePopState);\n }, [setNoticeState, setErrorState]);\n\n // Navigation button click handlers\n const handlePrevClick = () => {\n const tableSlider = tableSliderRef.current;\n if (!tableSlider) return;\n\n const slideWidth = tableSlider.offsetWidth;\n tableSlider.scrollTo({\n left: tableSlider.scrollLeft - slideWidth,\n behavior: 'smooth'\n });\n };\n\n const handleNextClick = () => {\n const tableSlider = tableSliderRef.current;\n if (!tableSlider) return;\n\n const slideWidth = tableSlider.offsetWidth;\n tableSlider.scrollTo({\n left: tableSlider.scrollLeft + slideWidth,\n behavior: 'smooth'\n });\n };\n\n // Dot click handler\n const handleDotClick = (slideIndex) => {\n const tableSlider = tableSliderRef.current;\n if (!tableSlider) return;\n\n const slideWidth = tableSlider.offsetWidth;\n tableSlider.scrollTo({\n left: slideWidth * slideIndex,\n behavior: 'smooth'\n });\n };\n\n // Slider functionality\n useEffect(() => {\n const tableSlider = tableSliderRef.current;\n const sliderNav = sliderNavRef.current;\n const table = tableRef.current;\n const tableHeader = tableHeaderRef.current;\n const pagination = paginationRef.current;\n\n if (!tableSlider || !sliderNav || !table || !tableHeader || !pagination) return;\n\n const prevButton = sliderNav.querySelector('.gv-previous');\n const nextButton = sliderNav.querySelector('.gv-next');\n\n // State tracking flags to prevent continuous class toggling\n let navIsAtBottom = false;\n let paginationState = 'top'; // 'top', 'overlay', or 'bottom'\n let isPaginationScrolledPast = false;\n let isTableBottomVisible = false;\n let isUpdatingClasses = false; // Flag to prevent observer callbacks during class updates\n\n // Throttle timer for scroll events\n let scrollThrottleTimer = null;\n let isScrollThrottled = false;\n\n // Update active dot and button states based on scroll position\n const updateSliderState = () => {\n const scrollLeft = tableSlider.scrollLeft;\n const slideWidth = tableSlider.offsetWidth;\n const currentSlide = Math.round(scrollLeft / slideWidth);\n\n setActiveSlide(currentSlide);\n\n // Update button disabled states\n if (prevButton) {\n if (currentSlide === 0) {\n prevButton.classList.add('gv-disabled');\n } else {\n prevButton.classList.remove('gv-disabled');\n }\n }\n\n if (nextButton) {\n const maxSlide = Math.round(tableSlider.scrollWidth / slideWidth) - 1;\n if (currentSlide >= maxSlide) {\n nextButton.classList.add('gv-disabled');\n } else {\n nextButton.classList.remove('gv-disabled');\n }\n }\n };\n\n // Calculate and set dynamic positioning for sticky navigation (only when needed)\n const calculateNavPosition = () => {\n const tablePaddingTop = parseFloat(getComputedStyle(table).paddingTop) || 0;\n const headerHeight = tableHeader.offsetHeight;\n const halfHeaderHeight = headerHeight / 2;\n\n // [X] = half of table header height + padding-top of table\n const translateY = halfHeaderHeight + tablePaddingTop;\n\n // [Y] = half viewport height - [X]\n const topValue = (window.innerHeight / 2) - translateY;\n\n // [Z] = half of table header height (excluding padding)\n const bottomValue = 2 * halfHeaderHeight;\n\n sliderNav.style.transform = `translateY(${translateY}px)`;\n sliderNav.style.top = `${topValue}px`;\n sliderNav.style.bottom = `${bottomValue}px`;\n\n return { bottomValue, halfHeaderHeight };\n };\n\n // Check nav boundary and update class only when state changes\n const checkNavBoundary = (bottomValue) => {\n const tableRect = table.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n\n // Calculate the threshold where sticky bottom constraint activates\n const stickyBottomThreshold = viewportHeight - bottomValue;\n\n // Only update class when boundary is crossed (state changes)\n const shouldBeAtBottom = tableRect.bottom <= stickyBottomThreshold;\n\n if (shouldBeAtBottom !== navIsAtBottom) {\n navIsAtBottom = shouldBeAtBottom;\n\n if (navIsAtBottom) {\n sliderNav.classList.add('gv-state-bottom');\n } else {\n sliderNav.classList.remove('gv-state-bottom');\n }\n }\n };\n\n // Update pagination state based on intersection observer flags\n const updatePaginationStateFromObservers = () => {\n // If already updating classes, ignore this call to prevent infinite loop\n if (isUpdatingClasses) {\n return;\n }\n\n // Determine the new state based on observer flags\n let newState;\n if (!isPaginationScrolledPast) {\n newState = 'top';\n } else if (isPaginationScrolledPast && !isTableBottomVisible) {\n newState = 'overlay';\n } else {\n newState = 'bottom';\n }\n\n // Only update classes when state actually changes\n if (newState !== paginationState) {\n // Set flag to prevent observer callbacks during class updates\n isUpdatingClasses = true;\n paginationState = newState;\n\n if (paginationState === 'top') {\n pagination.classList.add('gv-state-top');\n pagination.classList.remove('gv-state-overlay');\n } else if (paginationState === 'overlay') {\n pagination.classList.remove('gv-state-top');\n pagination.classList.add('gv-state-overlay');\n } else {\n pagination.classList.remove('gv-state-top');\n pagination.classList.remove('gv-state-overlay');\n }\n\n // Use requestAnimationFrame to clear flag after browser completes layout update\n requestAnimationFrame(() => {\n // Add a small delay to ensure layout is fully complete\n setTimeout(() => {\n isUpdatingClasses = false;\n }, 50);\n });\n }\n };\n\n // Initial calculation of nav position\n const { bottomValue } = calculateNavPosition();\n\n // Scroll event listener for slider\n tableSlider.addEventListener('scroll', updateSliderState);\n\n // Set up Intersection Observer for pagination element\n // Observes when pagination scrolls past the top of viewport\n const paginationObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n // When pagination is NOT intersecting and is above viewport, it's scrolled past\n if (!entry.isIntersecting && entry.boundingClientRect.top < 0) {\n isPaginationScrolledPast = true;\n } else if (entry.isIntersecting || entry.boundingClientRect.top >= 0) {\n isPaginationScrolledPast = false;\n }\n updatePaginationStateFromObservers();\n });\n },\n {\n threshold: [0, 1],\n rootMargin: '0px'\n }\n );\n\n // Set up Intersection Observer for table bottom\n // Create a sentinel element at the bottom of the table to observe\n const tableBottomSentinel = document.createElement('div');\n tableBottomSentinel.style.position = 'absolute';\n tableBottomSentinel.style.bottom = '0';\n tableBottomSentinel.style.left = '0';\n tableBottomSentinel.style.width = '1px';\n tableBottomSentinel.style.height = '1px';\n tableBottomSentinel.style.pointerEvents = 'none';\n table.style.position = 'relative';\n table.appendChild(tableBottomSentinel);\n\n const tableBottomObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n isTableBottomVisible = entry.isIntersecting;\n updatePaginationStateFromObservers();\n });\n },\n {\n threshold: [0],\n rootMargin: '-100px 0px 0px 0px'\n }\n );\n\n // Start observing\n paginationObserver.observe(pagination);\n tableBottomObserver.observe(tableBottomSentinel);\n\n // Throttled scroll handler - only executes nav boundary check when not already throttled\n const handleScroll = () => {\n if (isScrollThrottled) return;\n\n isScrollThrottled = true;\n\n // Use requestAnimationFrame for smooth updates\n requestAnimationFrame(() => {\n checkNavBoundary(bottomValue);\n });\n\n // Throttle for 100ms to reduce continuous execution\n scrollThrottleTimer = setTimeout(() => {\n isScrollThrottled = false;\n }, 100);\n };\n\n // Resize handler - recalculate positions and check boundaries\n const handleResize = () => {\n const { bottomValue: newBottomValue } = calculateNavPosition();\n checkNavBoundary(newBottomValue);\n };\n\n window.addEventListener('scroll', handleScroll);\n window.addEventListener('resize', handleResize);\n\n // Initial updates\n updateSliderState();\n checkNavBoundary(bottomValue);\n updatePaginationStateFromObservers();\n\n // Cleanup\n return () => {\n if (scrollThrottleTimer) {\n clearTimeout(scrollThrottleTimer);\n }\n tableSlider.removeEventListener('scroll', updateSliderState);\n window.removeEventListener('scroll', handleScroll);\n window.removeEventListener('resize', handleResize);\n paginationObserver.disconnect();\n tableBottomObserver.disconnect();\n if (tableBottomSentinel && tableBottomSentinel.parentNode) {\n tableBottomSentinel.parentNode.removeChild(tableBottomSentinel);\n }\n };\n }, []);\n\n // Use the clicked plugin for header/main content, but always use freePlugin for first column\n const imageURL = (typeof window.onecomWpVars !== \"undefined\" && window.onecomWpVars?.imageURL) || assetBase;\n const iconSrc = plugin.thumbnail || `${assetBase}assets/icons/placeholder.svg`;\n const mainImage = plugin.bannerUrl || plugin.image || plugin.thumbnail || 'https://gravity.group.one/guide-images/product-image@2x.png';\n\n // Extract data with fallbacks for free version (first column - always seo-by-rank-math)\n const title = freePlugin?.name || plugin.name || 'Product';\n const description = freePlugin?.i18n?.description || freePlugin?.i18n?.subtitle;\n const subtitle = freePlugin?.i18n?.subtitle;\n\n // Extract data for pro version (second column - always rank-math-pro)\n const proTitle = proPlugin?.name || 'Rank Math Pro';\n const proDescription = proPlugin?.i18n?.subtitle || proPlugin?.i18n?.description;\n const proPrice = proPlugin ? formatPluginPrice(proPlugin, uiI18n?.labels?.free || 'Free', uiI18n) : '';\n\n // Check if proPrice is \"Free until renewal\" (rebate amount is 0)\n const isProFreeUntilRenewal = proPrice === (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal');\n\n // Extract full price for pro plugin using common utility function\n const proFullPriceAmount = getFullPrice(proPlugin);\n\n // Helper function to extract numbered properties dynamically from i18n object\n const extractNumberedProps = (obj, baseName) => {\n if (!obj || typeof obj !== 'object') return [];\n const results = [];\n let i = 1;\n while (obj[`${baseName}${i}`]) {\n const value = obj[`${baseName}${i}`];\n if (value && value.trim() !== '') {\n results.push(value);\n }\n i++;\n }\n return results;\n };\n\n // Extract key benefits from i18n (use freePlugin's i18n if available, otherwise plugin's i18n)\n const i18nSource = freePlugin?.i18n || plugin.i18n;\n const benefitsFromI18n = extractNumberedProps(i18nSource, 'keyBenefitContent');\n\n // Extract key features separately for both free and pro plugins\n const freeKeyFeatures = extractNumberedProps(freePlugin?.i18n, 'keyFeatureContent');\n const proKeyFeatures = extractNumberedProps(proPlugin?.i18n, 'keyFeatureContent');\n\n // Determine the maximum number of features to display all from both plugins\n const maxFeatures = Math.max(freeKeyFeatures.length, proKeyFeatures.length);\n\n // Extract core features (title/content pairs) from i18n\n const coreFeaturesFromI18n = [];\n if (i18nSource && typeof i18nSource === 'object') {\n let i = 1;\n while (i18nSource[`coreFeatureTitle${i}`] || i18nSource[`coreFeatureContent${i}`]) {\n const title = i18nSource[`coreFeatureTitle${i}`];\n const content = i18nSource[`coreFeatureContent${i}`];\n if (title && title.trim() !== '' && content && content.trim() !== '') {\n coreFeaturesFromI18n.push({ name: title, desc: content });\n }\n i++;\n }\n }\n\n // Use only i18n data - no fallbacks\n const benefits = benefitsFromI18n;\n const coreFeatures = coreFeaturesFromI18n;\n\n const content = (\n
\n
\n \n\n\n
\n
\n

Rank Math

\n

{description}

\n
\n
\n \n \n \n \n
\n
\n\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n

{`${title} free`}

\n

{subtitle}

\n
\n
\n
\n
\n {uiI18n?.labels?.free || 'Free'}\n
\n
\n {useWPHandlers && freePlugin ? (\n \n ) : (\n freePlugin?.download && (\n \n )\n )}\n
\n
\n
\n
Recommended
\n
\n

{proTitle}

\n

{proDescription.substring(0, 120)}{proDescription.length > 120 ? '…' : ''}

\n
\n
\n
\n
\n {proPrice}{proPrice && !isProFreeUntilRenewal && `,-`}\n {proPrice && !isProFreeUntilRenewal && /{uiI18n?.labels?.timeMonth}}\n
\n {proPrice &&\n
\n
{uiI18n.labels.afterThat} [{proFullPriceAmount}]/{uiI18n?.labels?.timeMonth}
\n
}\n
\n {useWPHandlers && proPlugin ? (\n \n ) : (\n \n )}\n
\n
\n
\n
\n {maxFeatures > 0 && (\n
\n
\n
\n

{uiI18n?.keyFeatureHeading || freePlugin?.i18n?.keyFeatureHeading || 'Key features'}

\n
\n
\n

{uiI18n?.keyFeatureHeading || proPlugin?.i18n?.keyFeatureHeading || 'Key features'}

\n
\n
\n {Array.from({ length: maxFeatures }).map((_, i) => (\n
\n
\n {freeKeyFeatures[i] || ''}\n
\n
\n {proKeyFeatures[i] || ''}\n
\n
\n ))}\n
\n )}\n
\n
\n
\n
\n
\n {[0, 1].map((slideIndex) => (\n handleDotClick(slideIndex)}\n style={{ cursor: 'pointer' }}\n >\n ))}\n
\n
\n
\n
\n\n
\n {benefits.length > 0 && (\n
\n

{uiI18n?.benefitHeading || plugin.i18n?.benefitHeading || 'Key benefits'}

\n
    \n {benefits.map((b, i) =>
  • {b}
  • )}\n
\n
\n )}\n
\n\n {coreFeatures.length > 0 && (\n
\n
\n

{uiI18n?.featureOverviewHeading || plugin.i18n?.featureOverviewHeading || 'Core features overview'}

\n
\n {coreFeatures.map((cf, i) => (\n
\n

{cf.name}

\n

{cf.desc}

\n
\n ))}\n
\n
\n
\n )}\n
\n
\n );\n\n return usePortal ? createPortal(content, document.body) : content;\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\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\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__.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};","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport MarketplaceApp from \"./MarketplaceApp\";\nimport './i18n'\nimport { isWpVersionSupported } from \"./utils/wpVersionHelper\";\n\n// Inside-WP auto-mount\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const el = document.getElementById(\"marketplace-root\");\n if (el) {\n const config = window.marketplaceConfig || {};\n if (config.locale) {\n import(\"i18next\").then(({ default: i18n }) => {\n i18n.changeLanguage(config.locale);\n });\n }\n\n const isSupported = isWpVersionSupported(config.wpVersion, '6.2');\n\n if (typeof ReactDOM.createRoot === 'function' && isSupported) {\n // React 18+\n const root = ReactDOM.createRoot(el);\n root.render();\n } else {\n // React 17 or unsupported version\n // For unsupported versions, MarketplaceApp will still render and show WpVersionErrorState\n // We just need to use the compatible render method\n ReactDOM.render(, el);\n }\n }\n});\n"],"names":["isWpVersionSupported","version","minVersion","v1","String","split","v2","i","Math","max","length","num1","parseInt","num2","CURRENCY_SYMBOLS","CURRENCIES_WITH_POST_SYMBOL","getCurrencySymbol","currencyCode","formatPriceWithSymbol","amount","symbol","includes","getFullPrice","plugin","prices","Array","isArray","fullPrice","find","p","priceType","currency","formattedAmount","Number","toFixed","getRebatePrice","rebatePrice","undefined","formatPluginPrice","freeLabel","uiI18n","licenseType","price","labels","freeUntilRenewal","priceToUse","isActive","priceCurrency","priceAmount","WpVersionErrorState","useMarketplace","updateText","notifications","updateWPText","replace","createElement","className","updateWPTitle","type","onClick","handleUpdateClick","window","location","href","marketplaceConfig","wpConfig","adminUrl","updateWPButton","PluginActions","assetsBaseUrl","pluginInAction","subscriptionStatus","isCheckingSubscription","isOnecomBrand","handlePluginAction","isSpecialPlugin","pluginSubscriptionStatus","slug","pluginIsCheckingSubscription","assetBase","iconBase","handleClick","action","isNotInstalled","installed","trackButtonClick","buttonName","buttonAction","context","result","event","CustomEvent","detail","bubbles","cancelable","composed","document","dispatchEvent","formatMessage","message","pluginName","name","shouldShowSelectButton","shouldShowSkeleton","handleSelectClick","disabled","activated","handleManage","product_slug","product_name","has_redirect_url","redirectUrl","trim","has_onboarding_url","onboardingUrl","getPluginRedirectUrl","navigateToPluginUrl","manage","src","activating","activateButton","i18n","installing","installButton","I18nContext","createContext","ReportNamespaces","constructor","this","usedNamespaces","addUsedNamespaces","namespaces","forEach","ns","getUsedNamespaces","Object","keys","module","exports","ErrorState","useTranslation","t","handleRefresh","reload","initReactI18next","init","instance","options","react","isString","obj","defer","res","rej","promise","Promise","resolve","reject","makeString","object","lastOfPathSeparatorRegExp","cleanKey","key","indexOf","canNotTraverseDeeper","getLastOfPath","path","Empty","stack","stackIndex","prototype","hasOwnProperty","call","k","setPath","newValue","e","slice","last","getPath","deepExtend","target","source","overwrite","prop","regexEscape","str","_entityMap","escape","data","s","chars","looksLikeObjectPathRegExpCache","capacity","regExpMap","Map","regExpQueue","getRegExp","pattern","regExpFromCache","get","regExpNew","RegExp","delete","shift","set","push","deepFind","keySeparator","tokens","current","next","nextPath","j","getCleanedCode","code","consoleLogger","log","args","output","warn","error","console","apply","Logger","concreteLogger","prefix","logger","debug","forward","deprecate","lvl","debugOnly","create","moduleName","clone","baseLogger","EventEmitter","observers","on","events","listener","numListeners","off","emit","from","entries","observer","numTimesAdded","ResourceStore","defaultNS","super","ignoreJSONStructure","addNamespaces","removeNamespaces","index","splice","getResource","lng","join","addResource","value","silent","concat","addResources","resources","m","addResourceBundle","deep","skipCopy","pack","JSON","parse","stringify","removeResourceBundle","hasResourceBundle","getResourceBundle","getDataByLanguage","hasLanguageSomeTranslations","v","toJSON","postProcessor","processors","addPostProcessor","handle","translator","processor","process","PATH_KEY","Symbol","keysFromSelector","selector","opts","state","handler","proxy","revoke","Proxy","revocable","createProxy","checkedLoadedFor","shouldHandleAsObject","Translator","services","a","copy","changeLanguage","language","exists","o","interpolation","opt","resolved","extractFromKey","nsSeparator","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","filter","c","r","map","matched","test","ki","substring","looksLikeObjectPath","match","interpolator","nestingRegexp","parts","translate","lastKey","overloadTranslationOptionHandler","arguments","returnDetails","namespace","appendNamespaceToCIMode","toLowerCase","usedKey","exactUsedKey","usedLng","usedNS","usedParams","getUsedParamsDetails","resUsedKey","resExactUsedKey","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","needsPluralHandling","count","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValueSuffixOrdinalFallback","ordinal","needsZeroSuffixLookup","defaultValue","pluralSeparator","resForObjHndl","resType","toString","extendTranslation","usedDefault","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","l","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","suffixes","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","defaultVariables","skipInterpolation","skipOnVariables","nestBef","nb","interpolate","na","nest","reset","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","extracted","fallbackNS","needsContextHandling","codes","utils","hasLoadedNamespace","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","contextSeparator","possibleKey","pop","returnNull","returnEmptyString","resourceStore","optionsKeys","useOptionsReplaceForData","option","LanguageUtil","supportedLngs","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","formattedCode","Intl","getCanonicalLocales","lowerCaseLng","cleanCode","isSupportedCode","load","nonExplicitSupportedLngs","getBestMatchFromCodes","cleanedLng","lngScOnly","lngOnly","supportedLng","fallbacks","default","fallbackCode","fallbackCodes","addCode","fc","suffixesOrder","zero","one","two","few","many","other","dummyRule","select","resolvedOptions","pluralCategories","PluralResolver","pluralRulesCache","addRule","rules","clearCache","getRule","cleanedCode","cacheKey","rule","PluralRules","err","lngPart","needsPlural","getPluralFormsOfKey","sort","pluralCategory1","pluralCategory2","pluralCategory","prepend","deepFindWithDefaults","defaultData","getPathWithDefaults","regexSafe","val","Interpolator","format","escapeValue","escape$1","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapeSuffix","unescapePrefix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","getOrResetRegExp","existingRegExp","lastIndex","regexp","regexpUnescape","replaces","handleFormat","interpolationkey","f","missingInterpolationHandler","regex","safeValue","todo","exec","matchedVar","temp","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","keyEndIndex","lastIndexOf","elem","Boolean","reduce","createCachedFormatter","fn","cache","optForCache","formatParams","frm","createNonCachedFormatter","Formatter","cf","cacheInBuiltFormats","formats","number","formatter","NumberFormat","style","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","range","list","ListFormat","add","addCached","findIndex","mem","formatName","formatOptions","formatStr","optStr","rest","trimmedKey","isNaN","parseFormatStr","formatted","valOptions","locale","Connector","backend","store","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","queue","queueLoad","languages","callback","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","pendingCount","loaded","errors","q","pushPath","removePending","done","loadedKeys","n","read","fcName","tried","wait","resolver","setTimeout","bind","then","catch","prepareLoading","loadOne","fallbackValue","isUpdate","clb","initAsync","preload","simplifyPluralSuffix","partialBundledLanguages","ret","tDescription","transformOptions","initImmediate","noop","I18n","inst","modules","external","getOwnPropertyNames","getPrototypeOf","isInitialized","isClone","isInitializing","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","deferred","finish","initializedStoreOnce","loadResources","usedCallback","append","resolvedLanguage","setResolvedLanguage","reloadResources","use","Error","li","lngInLngs","unshift","isLanguageChangingTo","setLngProps","setLng","fl","cacheUserLanguage","async","detect","getFixedT","keyPrefix","fixedT","resultKey","setDefaultNamespace","lastLng","loadNotPending","loadState","precheck","preResult","loadNamespaces","loadLanguages","preloaded","newLngs","dir","Locale","getTextInfo","ti","direction","createInstance","cloneInstance","forkResourceStore","mergedOptions","clonedData","prev","acc","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","unescape","text","forceOnboarding","isRankMath","hasOnboardingUrl","rankMathRegistrationSkip","redirectPath","cleanPath","startsWith","fullUrl","origin","FeaturedCarousel","loading","plugins","currentIndex","setCurrentIndex","useState","slidesPerView","setSlidesPerView","activePlugins","activeThemeAuthor","useEffect","updateSlidesPerView","innerWidth","addEventListener","removeEventListener","shouldShowPlugin","mustHavePlugins","some","requiredSlug","mustHaveThemesByAuthor","requiredAuthor","rankMathActivated","rankMathProActivated","featuredPlugins","featured","b","displayOrder","Infinity","totalSlides","maxIndex","width","position","overflow","display","gap","_","minWidth","maxWidth","flex","backgroundColor","borderRadius","justifyContent","maxHeight","border","background","marginBottom","marginTop","height","headings","recommendedHeading","transition","transform","title","featuredTitle","description","featuredContent","freeTrialPeriod","free","mainImage","bannerUrl","image","thumbnail","categoryObj","categories","WebkitLineClamp","WebkitBoxOrient","textOverflow","url","URL","searchParams","history","pushState","PopStateEvent","handleReadMore","featuredCta","timeMonth","media","srcSet","alt","goToPrevious","alignItems","cursor","opacity","min","goToSlide","padding","goToNext","LoadingOverlay","loadingAction","loadingPlugin","spinnerSrc","normalizePlugins","rawResponse","catalog","items","normalized","_plugin$installed","_plugin$activated","descriptionFromTextKeys","values","download","download_url","downloadUrl","authorName","author","authorUrl","seen","Set","has","SuccessNotice","noticeState","setNoticeState","cancelReload","visible","pluginSlug","isInstalled","isActivated","pluginInstalled","pluginActivated","activateNow","manageInMyProducts","handleActivate","activatePluginButton","handleClose","sessionStorage","removeItem","ProductDetail","onClose","usePortal","useWPHandlers","setErrorState","skeletonContent","minHeight","role","createPortal","body","scrollTo","handlePopState","onecomWpVars","subtitle","shortDescription","subTitle","isFree","freeTrialText","hasFreeTrialText","hasFreeTrialPeriod","freeTrial","isFreeUntilRenewal","fullPriceAmount","rebatePriceAmount","extractNumberedProps","baseName","results","benefitsFromI18n","keyFeaturesFromI18n","coreFeaturesFromI18n","featureTitle","content","desc","keyFeatures","benefits","coreFeatures","preventDefault","back","pointerEvents","backButton","ErrorToast","Fragment","untilRenewal","afterThat","keyFeatureHeading","benefitHeading","featureOverviewHeading","propPlugin","errorState","isVisible","timer","clearTimeout","isActivateError","isDeactivateError","isInstallError","isDeleteError","pluginActivationFailed","pluginDeactivationFailed","pluginInstallationFailed","pluginDeletionFailed","Marketplace","apiBaseUrl","enableDefaultStyles","setPluginInAction","fetchSubscriptionStatus","setPlugins","setUiI18n","allPluginsActivated","setAllPluginsActivated","catalogError","setCatalogError","catalogLoading","setCatalogLoading","shouldShowProvision","downloadingPlugins","setDownloadingPlugins","selectedPlugin","setSelectedPlugin","hasFetchedPlugins","useRef","hasTrackedMarketplaceVisit","lastTrackedPluginSlug","contentReceivedTimestamp","contentRenderTimestamp","isCachedRef","pluginFromQuery","URLSearchParams","search","getBaseUrl","currentPluginParam","fetch","json","Date","now","is_cached","success","trackPageView","category","isContentRendered","normalizedPlugins","apiUiI18n","fetchPlugins","visiblePlugins","React","bySlug","allActivated","getItem","trackMarketplaceVisit","trackPluginDetailVisit","shouldUseRankMathDetail","brand","isRankMathPlugin","DetailComponent","ProductDetailRankMath","replaceState","categoryMap","categoryKey","info","catKey","allPluginsOwned","managePlugins","viewProductsButton","iconUrl","listingDescription","en_GB","translation","da_DK","de_DE","es_ES","fi_FI","fr_FR","it_IT","nl_NL","no_NO","nb_NO","pt_PT","sv_SE","fi","MarketplaceContent","isSupportedWpVersion","isDetailPage","setIsDetailPage","checkDetailPage","hasPlugin","originalPushState","originalReplaceState","ProductBanner","MarketplaceApp","MarketplaceProvider","leftBannerUrl","rightBannerUrl","pageTitle","pageContent","__defProp","defineProperty","__publicField","enumerable","configurable","writable","__defNormalProp","promises","fetchWithCache","self","caches","open","response","ok","put","GvFlagElement","HTMLElement","observedAttributes","fetchFlag","svg","innerHTML","connectedCallback","getAttribute","attributeChangedCallback","oldValue","GvIconElement","fetchIcon","GvIllustrationElement","fetchIllustration","GvIndicatorElement","fetchIndicator","GvLoaderElement","fetchLoader","GvLogoElement","fetchLogo","GvPayIconElement","fetchPayIcon","GvTileElement","fetchTile","defineCustomElement","tagName","elementClass","customElements","define","TAG_NAME","win","loc","hostname","crypto","randomUUID","navigator","userAgent","onLine","referrer","screen","_array_like_to_array","arr","len","arr2","asyncGeneratorStep","gen","_next","_throw","arg","_async_to_generator","_construct","Parent","Class","_is_native_reflect_construct","Reflect","construct","Function","_set_prototype_of","_create_class","Constructor","protoProps","staticProps","props","descriptor","_defineProperties","_extends","assign","_get_prototype_of","setPrototypeOf","__proto__","_inherits","subClass","superClass","TypeError","_instanceof","left","right","hasInstance","_object_without_properties_loose","excluded","sourceKeys","_type_of","_wrap_native_super","_cache","Wrapper","valueOf","_create_for_of_iterator_helper_loose","allowArrayLike","it","iterator","minLen","_unsupported_iterable_to_array","_ts_generator","thisArg","y","g","label","sent","trys","ops","verb","op","step","_ts_values","_a","__defProp$1","__publicField$1","__defNormalProp$1","__defProp$1$1","__publicField$1$1","__defNormalProp$1$1","NodeType$3","NodeType2","testableAccessors$1","Node","ShadowRoot","Element","MutationObserver","testableMethods$1","untaintedBasePrototype$1","getUntaintedPrototype$1","defaultObj","globalThis","defaultPrototype","accessorNames","isUntaintedAccessors","every","accessor","_a2","_b","getOwnPropertyDescriptor","methodNames","isUntaintedMethods","method","Zone","iframeEl","appendChild","contentWindow","untaintedObject","removeChild","untaintedAccessorCache$1","getUntaintedAccessor$1","untaintedPrototype","untaintedAccessor","index$1","n2","isElement","nodeType","ELEMENT_NODE","isShadowRoot","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","cssRules","sheetHref","ownerNode","ownerDocument","cssText","rule2","stringifyRule","isCSSImportRule","importStringified","styleSheet","statement","layerName","supportsText","mediaText","escapeImportStatement","absolutifyURLs","ruleStringified","isCSSStyleRule","selectorText","Mirror","WeakMap","_proto","getId","id","getMeta","getNode","idNodeMap","getIds","nodeMetaMap","removeNodeFromMap","_this","childNodes","childNode","hasNode","node2","meta","oldNode","maskInputValue","param","element","maskInputOptions","maskInputFn","actualType","repeat","ORIGINAL_ATTRIBUTE_NAME","getInputType","hasAttribute","extractFileExtension","baseURL","_ref","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","quote1","path1","quote2","path2","path3","filePath","maybeQuote","_step","_iterator","part","normalizeCssString","_testNoPxNorm","canvasService","canvasCtx","_id","tagNameRegex","genId","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","doc","attributeValue","getHref","customHref","a2","setAttribute","transformAttribute","pos","collectCharacters","regEx","chars2","descriptorsStr","inParens","c2","charAt","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","classList","needMaskingText","maskTextClass","maskTextSelector","el","closest","contains","matches","e2","serializeNode","mirror2","mirror","blockClass","blockSelector","needsMask","inlineStylesheet","_options_maskInputOptions","maskTextFn","_options_dataURLOptions","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","_options_newlyAddedElement","newlyAddedElement","_options_cssCaptured","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","isCustomElement","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName$1","attributes","i2","attr","stylesheet","styleSheets","rel","_cssText","sheet","cssText1","childNodes2","splits","iterCount","cssTextNorm","normFactor","textContent","textContentNorm","startSubstring","cssNormSplits","splitNorm","jLimit","prevTextContent","prevMinLength","floor","normPart","splitCssText","markCssSplits","checked","selected","rr_open_mode","__context","canvas","ctx","getContext","x2","getImageData","originalGetImageData","Uint32Array","buffer","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","imageSrc","currentSrc","priorCrossOrigin","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","drawImage","complete","removeAttribute","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","_n2_getBoundingClientRect","getBoundingClientRect","class","rr_width","rr_height","contentDocument","rr_src","isSVG","ownerSVGElement","isCustom","serializeElementNode","TEXT_NODE","parent","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","_options_skipChild","skipChild","_options_inlineStylesheet","slimDOMOptions","_options_inlineImages","_options_recordCanvas","onSerialize","onIframeLoad","_options_iframeLoadTimeout","iframeLoadTimeout","onStylesheetLoad","_options_stylesheetLoadTimeout","stylesheetLoadTimeout","_options_keepIframeSrcFn","_options_preserveWhiteSpace","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","serializedChildNode","shadowRootEl1","_step1","_iterator1","serializedChildNode1","isShadow","readyState","fired","blankUrl","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","__esModule","getAugmentedNamespace$1","f2","a22","d","picocolors_browser$1","x$1","create$1","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","createColors","picocolors_browserExports$1","require$$2$1","freeze","toStringTag","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","Error1","CssSyntaxError","line","column","file","plugin22","reason","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","color","css","mark","aside","lines","start","end","_pico$1_createColors","index2","gutter","spacing","cssSyntaxError$1","symbols$1","isClean","my","DEFAULT_RAW$1","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier$2$1","Stringifier","builder","atrule","params","rawValue","raws","afterName","nodes","block","between","beforeAfter","raw","buf","depth","child","before","decl","string","important","own","first","root2","root","rawCache","toUpperCase","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","rawSemicolon","ownSemicolon","stringifier$1","Stringifier$1$1","stringify$4$1","stringify_1$1","isClean$2$1","my$2$1","CssSyntaxError$2$1","Stringifier2$1","stringify$3$1","cloneNode$1","cloned","Node$4$1","Node2","defaults","addToError","postcssNode","input","insertAfter","overrides","insertBefore","cleanRaws","keepBetween","cloneAfter","cloneBefore","_this_rangeBy","rangeBy","getProxyProcessor","toProxy","markDirty","positionBy","stringRepresentation","positionInside","word","endIndex","defaultType","remove","replaceWith","_len","_key","bookmark","foundSelf","result2","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","proxyCache","stringifier2","node","node$1","Declaration$4$1","Node$3$1","Declaration","declaration$1","SourceMapConsumer$2$1","SourceMapConsumer","SourceMapGenerator$2$1","SourceMapGenerator","existsSync$1","existsSync","readFileSync$1","readFileSync","dirname$1$1","dirname","join$1","PreviousMap$2$1","PreviousMap","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","decodeURIComponent","substr","lastMatch","Buffer","atob","encoding","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","loadFile","fromSourceMap","prevPath","map1","withContent","sourcesContent","previousMap$1","SourceMapConsumer$1$1","SourceMapGenerator$1$1","fileURLToPath$1","fileURLToPath","pathToFileURL$1$1","pathToFileURL","isAbsolute$1","isAbsolute","resolve$1$1","nanoid$2","size","random","terminalHighlight$2","CssSyntaxError$1$1","PreviousMap$1$1","fromOffsetCache$1","sourceMapAvailable$1$1","pathAvailable$1$1","Input$4$1","Input","hasBOM","mapResolve","offset","fromOffset","col","pos1","pos2","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","protocol","sourceContentFor","_i","_iter","input$1","registerInput","SourceMapConsumer$3","SourceMapGenerator$3","dirname$2","relative$1","relative","resolve$2","sep$1","pathToFileURL$2","Input$3$1","sourceMapAvailable$2","pathAvailable$2","mapGenerator$1","MapGenerator","stringify2","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","original","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","encodeURIComponent","fileURL","encodeURI","Comment$4$1","Node$2$1","comment$1","parse$4$1","Rule$4$1","AtRule$4$1","Root$6$1","isClean$1$1","my$1$1","Declaration$3$1","Comment$3$1","cleanSource$1","markDirtyUp$1","proxyOf","Container$7$1","Node$1$1","Container","children","normalize","each","getIterator","indexes","condition","lastEach","_node2","cb","exist","existIndex","reverse","sample","i21","processed","rebuild","removeAll","replaceValues","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","container$1","LazyResult$4$1","Processor$3$1","Document$3$1","Container$6$1","Document2","toResult","registerLazyResult","registerProcessor","document$1$1","Warning$2$1","Warning","warning$1","Warning$1$1","Result$3$1","Result","processor2","messages","lastPlugin","postcssPlugin","warning2","warnings","result$1","SINGLE_QUOTE$1","DOUBLE_QUOTE$1","BACKSLASH$1","SLASH$1","NEWLINE$1","SPACE$1","FEED$1","TAB$1","CR$1","OPEN_SQUARE$1","CLOSE_SQUARE$1","OPEN_PARENTHESES$1","CLOSE_PARENTHESES$1","OPEN_CURLY$1","CLOSE_CURLY$1","SEMICOLON$1","ASTERISK$1","COLON$1","AT$1","RE_AT_END$1","RE_WORD_END$1","RE_BAD_BRACKET$1","RE_HEX_ESCAPE$1","Container$5$1","AtRule$3$1","AtRule","_Container$5$1_prototype_append","_Container$5$1_prototype_prepend","atRule$1","LazyResult$3$1","Processor$2$1","Container$4$1","Root$5$1","Root","ignore","root$1","list$2$1","comma","space","separators","array","func","inQuote","prevQuote","letter","list_1$1","Container$3$1","list$1$1","Rule$3$1","Rule","sep2","rule$1","Declaration$2$1","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","empty","Parser$1$1","Parser","spaces","createTokenizer","token","unnamedAtrule","brackets","tokenizer","endOfFile","nextToken","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","founded","_step_value","doubleColon","quote","escaped","escapePos","currentToken","ignoreErrors","returned","unclosed","what","ignoreUnclosed","controlChar","fromCharCode","tokenizer2$1","customProperty","findLastWithPosition$1","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","type1","hasWord","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","all","lastTokenType","Container$2$1","Parser2$1","Input$2$1","parse$3$1","parser2","parse_1$1","isClean$3","my$3","MapGenerator$1$1","stringify$2$1","Container$1$1","Document$2$1","Result$2$1","parse$2$1","Root$3$1","TYPE_TO_CLASS_NAME$1","PLUGIN_PROPS$1","AtRuleExit","CommentExit","DeclarationExit","DocumentExit","Once","OnceExit","prepare","RootExit","RuleExit","NOT_VISITORS$1","isPromise$1","getEvents$1","toStack$1","eventIndex","visitorIndex","visitors","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","stringified","syntax","parser","helpers","postcss","processing","runAsync","onRejected","finally","onFinally","getAsyncError","handleError","postcssVersion","prepareVisitors","listeners","hasListener","promise1","_loop","_state","runOnRoot","visitTick","visitor","roots","subRoot","sync","stringifier","walkSync","visitSync","onFulfilled","visit2","_visitors_visit2_visitorIndex","registerPostcss","lazyResult$1","MapGenerator2$1","stringify$1$1","parse$1$1","Result$1$1","NoWorkResult$1$1","NoWorkResult","_processor","_css","_opts","_map","_map_generate","generatedCSS","generatedMap","_root","noWorkResult$1","NoWorkResult2$1","LazyResult$1$1","Document$1$1","Root$2$1","Processor$1$1","Processor","processor$1","Declaration$1$1","PreviousMap2$1","Comment$1$1","AtRule$1$1","Input$1$1","Root$1$1","Rule$1$1","fromJSON$1$1","ownInputs","inputHydrated","_defaults_source","fromJSON_1$1","CssSyntaxError2$1","Declaration2$1","LazyResult2$1","Container2$1","Processor2$1","stringify$5","fromJSON$2","Document22","Warning2$1","Comment2$1","AtRule2$1","Result2$1","Input2$1","parse$5","list$3","Rule2$1","Root2$1","Node2$1","postcss$3","initializer","warningPrinted","creator","env","LANG","transformer","processOpts","pluginOpts","fromJSON","atRule","postcss_1$1","postcss$1$1","__defProp2","__publicField2","__defNormalProp2","getDefaultExportFromCjs","getAugmentedNamespace","picocolors_browser","x","picocolors_browserExports","require$$2","pico","terminalHighlight$1","CssSyntaxError$3","CssSyntaxError2","_pico_createColors","cssSyntaxError","symbols","DEFAULT_RAW","Stringifier$2","Stringifier2","Stringifier$1","stringify$4","stringify_1","isClean$2","my$2","CssSyntaxError$2","Stringifier22","stringify$3","cloneNode","Node$4","Node3","Declaration$4","Node$3","Declaration2","declaration","SourceMapConsumer$2","SourceMapGenerator$2","dirname$1","PreviousMap$2","PreviousMap2","previousMap","SourceMapConsumer$1","SourceMapGenerator$1","pathToFileURL$1","resolve$1","nanoid","terminalHighlight","CssSyntaxError$1","PreviousMap$1","fromOffsetCache","sourceMapAvailable$1","pathAvailable$1","Input$4","Input2","resolve$3","Input$3","sourceMapAvailable","pathAvailable","mapGenerator","MapGenerator2","Comment$4","Node$2","Comment2","parse$4","Rule$4","AtRule$4","Root$6","isClean$1","my$1","Declaration$3","Comment$3","cleanSource","markDirtyUp","Container$7","Node$1","Container2","container","LazyResult$4","Processor$3","Document$3","Container$6","Document23","document$1$2","Warning$2","Warning2","warning","Warning$1","Result$3","Result2","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","Container$5","AtRule$3","AtRule2","_Container$5_prototype_append","_Container$5_prototype_prepend","LazyResult$3","Processor$2","Container$4","Root$5","Root2","list$2","list_1","Container$3","list$1","Rule$3","Rule2","Declaration$2","Comment$2","AtRule$2","Root$4","Rule$2","SAFE_COMMENT_NEIGHBOR","Parser$1","Parser2","tokenizer22","findLastWithPosition","Container$2","Parser22","Input$2","parse$3","parse_1","MapGenerator$1","stringify$2","Container$1","Document$2","Result$2","parse$2","Root$3","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","isPromise","getEvents","toStack","cleanMarks","postcss$2","LazyResult$2","LazyResult2","lazyResult","MapGenerator22","stringify$1","parse$1","Result$1","NoWorkResult$1","NoWorkResult2","noWorkResult","NoWorkResult22","LazyResult$1","Document$1","Root$2","Processor$1","Processor2","Declaration$1","PreviousMap22","Comment$1","AtRule$1","Input$1","Root$1","Rule$1","fromJSON$1","fromJSON_1","CssSyntaxError22","Declaration22","LazyResult22","Container22","Processor22","stringify$6","Document222","Warning22","Comment22","AtRule22","Result22","Input22","Rule22","Root22","Node22","postcss_1","postcss$1","BaseRRNode","_args","parentNode","_newChild","_refChild","_node","childIterator","firstChild","nextSibling","testableAccessors","testableMethods","untaintedBasePrototype","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","untaintedMethod","mutationObserverCtor","patch$2","replacement","wrapped","defineProperties","__rrweb_original__","capture","passive","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","timeout","leading","remaining","trailing","hookSetter","isRevoked","receiver","nowTimestamp","getWindowScroll","_c","_d","scrollingElement","pageXOffset","documentElement","top","pageYOffset","getWindowHeight","innerHeight","clientHeight","getWindowWidth","clientWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","nodeName","isSerializedStylesheet","hasShadowRoot","shadowRoot","getTime","StyleSheetMirror","_this_styleIDMap_get","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","inDom","rootShadowHost","getRootShadowHost","shadowHostInDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","errorHandler","DoubleLinkedList","head","addNode","__ln","previousSibling","current1","tail","removeNode","moveKey","parentId","MutationBuffer","mutations","processMutation","frozen","locked","adds","addedIds","addList","getNextId","nextId","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removesSubTreeCache","n21","isAncestorInSet","droppedSet","candidate","tailNode","parentId1","unhandledNode","payload","texts","genTextAreaValueMutation","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","item","cn","attributeName","value1","unattachedDoc","implementation","createHTMLDocument","old","pname","getPropertyValue","newPriority","getPropertyPriority","pname1","addedNodes","genAdds","removedNodes","nodeId","isSerialized","deepDelete","n22","processRemoves","processedNodeManager","inOtherBuffer","targetId","childN","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_isParentRemoved","_isAncestorInSet","callbackWrapper","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","processMutations","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initScrollObserver","scrollCb","sampling","evt","defaultView","scrollLeftTop","scroll","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","index21","recurse","getIdAndStyleId","styleMirror","styleId","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","mutationObserver","currentWindow","mousemoveCb","mouseInteractionCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","_hooks","mutation","mousemove","mouseInteraction","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","handlers","mousemoveHandler","timeBaseline","threshold","callbackThreshold","mousemoveCallback","positions","wrappedCb","totalOffset","timeOffset","updatePosition","clientX","clientY","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","h","initMoveObserver","mouseInteractionHandler","disableMap","currentPointerType","endsWith","eventKey","eventName","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","getHandler","PointerEvent","TouchStart","TouchEnd","initMouseInteractionObserver","scrollHandler","viewportResizeHandler","param1","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","querySelectorAll","text2","lastInputValue","_handlers","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","argumentsList","_getIdAndStyleId","styleBlock","replaceSync","deleteRule","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initStyleSheetObserver","ignoreCSSAttributes","setProperty","CSSStyleDeclaration","priority","removeProperty","initStyleDeclarationObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","collapsed","updateSelection","getSelection","isCollapsed","ranges","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","initCustomElementObserver","pluginHandlers","plugin3","disconnect","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","handleMessage","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","adoptedStyleSheets","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","sRoot","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list2","ctor","contextMap","variableListFor$1","serializeArg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","ArrayBuffer","base64","arraybuffer","bytes","encode","DataView","byteOffset","byteLength","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","recordArgs","hookHandler","setter","encodedJs","blob","Blob","WorkerWrapper","objURL","webkitURL","createObjectURL","worker","Worker","revokeObjectURL","takeFullSnapshot$1","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","_options_sampling","initCanvasMutationObserver","initCanvasFPSObserver","clear","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","_e2_data","commands","rafId","timeBetweenSnapshots","lastSnapshotTime","takeCanvasSnapshots","requestAnimationFrame","matchedCanvas","_this1","bitmap","getContextAttributes","COLOR_BUFFER_BIT","createImageBitmap","postMessage","cancelAnimationFrame","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","_handlers1","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","CSSRule","r2","adoptedStyleSheetData","styleIds","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","destroy","recording","cleanFrame","t2","record","checkoutEveryNms","checkoutEveryNth","_options_blockClass","_options_blockSelector","_options_ignoreClass","_options_ignoreSelector","_options_maskTextClass","_options_maskTextSelector","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","_options_recordDOM","_options_recordCrossOriginIframes","_options_recordAfter","recordAfter","_options_userTriggeredOnInput","_options_collectFonts","_options_ignoreCSSAttributes","errorHandler2","inEmittingFrame","passEmitsToParent","lastFullSnapshotEvent","date","email","month","tel","time","week","password","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","tmp","_ref_blockClass","_ref_blockSelector","_ref_maskTextClass","_ref_maskTextSelector","_ref_inlineStylesheet","_ref_inlineImages","_ref_recordCanvas","_ref_maskAllInputs","_ref_slimDOM","slimDOM","_ref_keepIframeSrcFn","snapshot","initialOffset","CustomElement","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","StackFrame","fileName","functionName","lineNumber","columnNumber","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","ErrorStackParser","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","sanitizedLine","locationParts","functionNameRegex","parseOpera9","parseOpera11","parseOpera10","lineRE","parseFloat","pathToSelector","outerHTML","parentElement","localName","domSiblings","sibling","isObject","isObjTooDeep","limit","stringifyOptions","numOfKeysLimit","depthOfLimit","thisPos","_obj","stringLengthLimit","Event","eventResult","eventValue","defaultLogOptions","level","lengthThreshold","initLogObserver","logOptions","loggerType","logCount","inStack","cancelHandlers","trace","stackFrame","unhandledrejectionHandler","levelType","_logger","patch","builtInProp","cycle","schedulingQueue","setImmediate","ToString","config","schedule","drain","isThenable","_then","oType","notify","chain","notifyIsolated","failure","msg","triggered","def","defWrapper","MakeDefWrapper","iteratePromises","rejecter","idx","MakeDef","NpoPromise","executor","Item","PromisePolyfill","PromisePrototype","msgs","at","ch","escapee","Config","DEBUG","LIB_VERSION","MAX_RECORDING_MS","ArrayProto","FuncProto","ObjProto","windowConsole","document$1","windowOpera","opera","nativeBind","nativeForEach","nativeIndexOf","nativeMap","nativeIsArray","breaker","console$1","isUndefined","toArray","critical","log_func_with_prefix","console_with_prefix","safewrap","safewrapClass","klass","proto","bound","isFunction","extend","isArguments","iterable","include","needle","inherit","subclass","superclass","isEmptyObject","isDate","isNumber","encodeDates","formatDate","pad","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","strip_empty_properties","truncate","JSONEncode","mixed_val","escapable","holder","mind","partial","isFinite","JSONDecode","SyntaxError","hex","uffff","base64Encode","h1","h2","h3","h4","bits","b64","ac","enc","tmp_arr","utf8Encode","stringl","utftext","c1","UUID","uuid","BLOCKED_UA_STRS","isBlockedUA","ua","HTTPBuildQuery","formdata","arg_separator","use_val","use_key","getQueryParam","cookie","nameEQ","ca","set_seconds","seconds","is_cross_subdomain","is_secure","is_cross_site","domain_override","cdomain","expires","secure","domain","extract_domain","setTime","toGMTString","days","new_cookie_val","_testStorageSupported","storage","supported","cheap_guid","setItem","_localStorageSupported","localStorageSupported","forceCheck","localStorage","_sessionStorageSupported","_storageWrapper","is_supported_fn","log_error","is_supported","register_event","fixEvent","stopPropagation","returnValue","cancelBubble","oldSchool","useCapture","ontype","old_handler","new_handler","old_handlers","old_result","new_result","makeHandler","TOKEN_MATCH_REGEX","dom_query","getAllChildren","getElementsByTagName","bad_whitespace","hasClass","getElementsBySelector","foundCount","elements","currentContextIndex","currentContext","getElementById","token_match","checkFunction","attrName","attrOperator","attrValue","query","CAMPAIGN_KEYWORDS","CLICK_IDS","campaignParams","default_value","kw","kwkey","clickParams","idkey","marketingParams","searchEngine","searchInfo","keyword","browser","user_agent","vendor","browserVersion","os","device","referringDomain","currentUrl","properties","extra_props","people_properties","mpPageViewProperties","maxlen","guid","SIMPLE_DOMAIN_MATCH_REGEX","DOMAIN_MATCH_REGEX","domain_regex","tld","NOOP_FUNC","JSONStringify","JSONParse","RECORDING_EVENTS_STORE_NAME","RECORDING_REGISTRY_STORE_NAME","OBJECT_STORES","IDBStorageWrapper","storeName","dbPromise","optIn","_optInOut","optOut","hasOptedIn","_getStorageValue","hasOptedOut","ignoreDnt","win$1","nav","hasDntOn","dntValue","_hasDoNotTrackFlagOn","optedOut","addOptOutCheckMixpanelLib","_addOptOutCheck","get_config","addOptOutCheckMixpanelPeople","_get_config","addOptOutCheckMixpanelGroup","clearOptInOut","_getStorage","_getStorageKey","crossSubdomainCookie","cookieDomain","persistenceType","persistencePrefix","optValue","cookieExpiration","secureCookie","crossSiteCookie","track","trackEventName","trackProperties","getConfigValue","_openDb","openRequest","indexedDB","ev","db","createObjectStore","dbOrError","makeTransaction","mode","storeCb","doTransaction","transaction","oncomplete","onabort","onerror","objectStore","req","getAll","logger$6","SharedLock","storageKey","pollIntervalMS","timeoutMS","promiseImpl","withLock","lockedCB","pid","startTime","keyX","keyY","keyZ","delay","waitFor","predicate","getSetY","valY","criticalSection","removeLock","LocalStorageWrapper","storageOverride","logger$5","RequestQueue","waitMs","timeoutPromise","throttledItems","usePersistence","queueStorage","sharedLockStorage","sharedLockTimeoutMS","reportError","errorReporter","memQueue","initialized","enqueueThrottleMs","enqueuePersisted","_enqueuePersisted","queueEntry","ensureInit","enqueue","flushInterval","queueEntries","enqueueItem","readFromStorage","storedQueue","saveToStorage","succeeded","fillBatch","batchSize","batch","idsInBatch","orphaned","filterOutIDsAndInvalid","idSet","filteredItems","removeItemsByID","removeFromStorage","updatePayloads","existingItems","itemsToUpdate","newItems","newPayload","storageEntry","logger$4","RequestBatcher","libConfig","sendRequest","sendRequestFunc","beforeSendHook","stopAllBatching","stopAllBatchingFunc","stopped","consecutiveRemovalFailures","itemIdsSentSuccessfully","flushOnlyOnInterval","_flushPromise","flush","stop","timeoutID","resetBatchSize","resetFlush","scheduleFlush","flushMS","sendRequestPromise","requestInProgress","currentBatchSize","attemptSecondaryFlush","dataForRequest","transformedItems","addPayload","itemId","timesSent","removeItemsFromQueue","batchSendCallback","unloading","httpStatusCode","retryMS","retryAfter","halvedBatchSize","requestOptions","verbose","ignore_json_errors","timeout_ms","transport","isRecordingExpired","serializedRecording","logger$3","CompressionStream","RECORDER_BATCHER_LIB_CONFIG","ACTIVE_SOURCES","SessionRecording","_mixpanel","mixpanelInstance","_onIdleTimeout","onIdleTimeout","_onMaxLengthReached","onMaxLengthReached","_onBatchSent","onBatchSent","_rrwebRecord","rrwebRecord","_stopRecording","replayId","batchStartUrl","replayStartUrl","idleExpires","maxExpires","replayStartTime","lastEventTimestamp","seqNo","idleTimeoutId","maxTimeoutId","recordMaxMs","recordMinMs","getConfig","batcherKey","batcher","flushEventsWithOptOut","stopRecording","getUserIdInfo","finalFlushUserIdInfo","userIdInfo","get_distinct_id","deviceId","get_property","userId","unloadPersistedData","getDurationMs","_getRecordMinMs","configVar","startRecording","shouldStopBatcher","resetIdleTimeout","idleTimeoutMs","isUserEvent","__enqueuePromise","maxTimeoutMs","skipFlush","isRrwebStopped","flushPromise","onOptOut","_flushEvents","serialize","tabId","get_tab_id","deserialize","_sendRequest","currentReplayId","reqParams","reqBody","onSuccess","responseBody","status","headers","apiHost","get_api_host","numEvents","batchStartTime","batchEndTime","hasFullSnapshot","replayLengthMs","eventsJson","canUseCompressionStream","gzipStream","stream","pipeThrough","Response","compressedBlob","configValue","RecordingRegistry","idb","isPersistenceEnabled","setActiveRecording","getActiveRecording","clearActiveRecording","markActiveRecordingExpired","deleteActiveRecording","flushInactiveRecordings","serializedRecordings","unloadPromises","logger$2","MixpanelRecorder","recordingRegistry","_flushInactivePromise","activeRecording","stopRecordingInProgress","resetRecording","sessionRecordingOptions","activeSerializedRecording","_stopCurrentRecording","pauseRecording","disableActiveRecording","stopRecordingPromise","resumeRecording","startNewIfInactive","getActiveReplayId","EV_CHANGE","EV_CLICK","EV_HASHCHANGE","EV_LOAD","EV_MP_LOCATION_CHANGE","EV_POPSTATE","EV_SCROLLEND","EV_SCROLL","EV_SUBMIT","EV_VISIBILITYCHANGE","CLICK_EVENT_PROPS","OPT_IN_CLASSES","OPT_OUT_CLASSES","SENSITIVE_DATA_CLASSES","TRACKED_ATTRS","INTERACTIVE_ARIA_ROLES","ALWAYS_NON_INTERACTIVE_TAGS","TEXT_CONTAINER_TAGS","EVENT_HANDLER_ATTRIBUTES","logger$1","getClasses","classes","getClassName","cls","baseVal","getPreviousElementSibling","previousElementSibling","isElementNode","getPropertiesFromElement","blockAttrsSet","extraAttrs","allowElementCallback","allowSelectors","elId","shouldTrackElementDetails","attrVal","shouldTrackValue","nthChild","nthOfType","currentElem","getSafeText","elText","isTextNode","isElementAllowed","sel","isElementBlocked","blockElementCallback","blockSelectors","isTag","curEl","elClasses","getPolyfillScrollEndFunction","originalFunction","supportsScrollEnd","polyfillFunction","polyfillEvent","scrollTimer","eventType","hasAnyInteractivityIndicators","isContentEditable","onclick","onmousedown","onmouseup","ontouchstart","ontouchend","hasInlineEventHandlers","primaryRole","hasInteractiveAriaRole","isDefinitelyNonInteractive","getRootNode","host","getClickEventComposedPath","getClickEventTargetElement","RageClickTracker","clicks","ShadowDOMObserver","changeCallback","observerConfig","observedShadowRoots","shadowObservers","isRageClick","thresholdPx","timeoutMs","clickCount","lastClick","sqrt","pow","observeFromEvent","observeShadowRoot","INTERACTION_EVENTS","LAYOUT_EVENTS","NAVIGATION_EVENTS","MUTATION_OBSERVER_CONFIG","attributeFilter","DeadClickTracker","onDeadClickCallback","eventListeners","shadowDOMObserver","isTracking","lastChangeEventTimestamp","pendingClicks","processingActive","processingTimeout","addClick","trackClick","added","triggerProcessing","getDeadClicks","clicksToEvaluate","deadClicks","click","hasChangesAfter","recordChangeEvent","processRecursively","startTracking","selectionHandler","stopTracking","AUTOCAPTURE_CONFIG_KEY","PAGEVIEW_OPTION_FULL_URL","CONFIG_ALLOW_SELECTORS","CONFIG_ALLOW_URL_REGEXES","CONFIG_BLOCK_ATTRS","CONFIG_BLOCK_ELEMENT_CALLBACK","CONFIG_BLOCK_SELECTORS","CONFIG_BLOCK_URL_REGEXES","CONFIG_CAPTURE_EXTRA_ATTRS","CONFIG_CAPTURE_TEXT_CONTENT","CONFIG_SCROLL_CAPTURE_ALL","CONFIG_SCROLL_CHECKPOINTS","CONFIG_TRACK_CLICK","CONFIG_TRACK_DEAD_CLICK","CONFIG_TRACK_INPUT","CONFIG_TRACK_PAGEVIEW","CONFIG_TRACK_RAGE_CLICK","CONFIG_TRACK_SCROLL","CONFIG_TRACK_PAGE_LEAVE","CONFIG_TRACK_SUBMIT","CONFIG_DEFAULTS$1","DEFAULT_PROPS","MP_EV_CLICK","MP_EV_DEAD_CLICK","MP_EV_RAGE_CLICK","Autocapture","mp","maxScrollViewDepth","hasTrackedScrollSession","previousScrollHeight","minDOMApisSupported","initPageListeners","initPageviewTracking","initClickTracking","initDeadClickTracking","initInputTracking","initScrollTracking","initSubmitTracking","initRageClickTracking","initPageLeaveTracking","getFullConfig","autocaptureConfig","currentUrlBlocked","allowUrlRegexes","allowed","allowRegex","blockUrlRegexes","pageviewTrackingConfig","trackDomEvent","mpEventName","isCapturedForHeatMap","is_recording_heatmap_data","_getClickTrackingConfig","blockAttrs","captureTextContent","captureExtraAttrs","capturedForHeatMap","srcElement","shouldTrackDomEvent","targetElementList","elementsJson","explicitNoTrack","shouldTrackDetails","docElement","elementText","guessRealClickTarget","targetProps","getPropsForDOMEvent","listenerPopstate","listenerHashchange","nativePushState","unused","nativeReplaceState","configKey","_trackPageLeave","currentScrollHeight","viewportHeight","scrollPercentage","round","foldLinePercentage","_initScrollDepthTracking","listenerScrollDepth","scrollEndPolyfill","scrollViewHeight","scrollY","scrollHeight","listenerClick","_deadClickTracker","deadClickEvent","listenerDeadClick","currentDeadClickConfig","normalizedConfig","stopDeadClickTracking","listenerChange","listenerLocationchange","previousTrackedUrl","tracked","track_pageview","shouldTrack","didPathChange","trackPageviewOption","lastScrollCheckpoint","listenerRageClick","_rageClickTracker","currentRageClickConfig","listenerScroll","scrollCheckpoints","checkpoint","listenerSubmit","listenerPageLeaveVisibilitychange","listenerPageLeaveLocationchange","listenerPageLoad","FLAGS_CONFIG_KEY","CONFIG_CONTEXT","CONFIG_DEFAULTS","FeatureFlagManager","initOptions","getFullApiRoute","getMpConfig","getConfigFunc","setMpConfig","setConfigFunc","getMpProperty","getPropertyFunc","trackingFunc","minApisSupported","flags","fetchFlags","trackedFeatures","ffConfig","isSystemEnabled","updateContext","newContext","oldContext","areFlagsReady","distinctId","traceparent","_fetchInProgressStartTime","fetchPromise","markFetchComplete","responseFlags","_traceparent","_fetchStartTime","_fetchCompleteTime","_fetchLatency","getVariant","featureName","fallback","getVariantSync","feature","trackFeatureCheck","getVariantValue","getFeatureData","getVariantValueSync","isEnabled","isEnabledSync","trackingProperties","toISOString","DomTracker","create_properties","event_handler","after_track_handler","mixpanel_instance","event_name","user_callback","that","override_event","track_callback","timeout_occured","callback_fired","LinkTracker","new_tab","which","metaKey","ctrlKey","FormTracker","submit","SET_ACTION","SET_ONCE_ACTION","UNSET_ACTION","ADD_ACTION","APPEND_ACTION","UNION_ACTION","REMOVE_ACTION","apiActions","set_action","$set","_is_reserved_property","unset_action","$unset","set_once_action","$set_once","union_action","list_name","$union","append_action","$append","remove_action","$remove","delete_action","MixpanelGroup","_init","group_key","group_id","_group_key","_group_id","_send_request","set_once","unset","union","date_encoded_data","_track_or_batch","endpoint","request_batchers","groups","conf","MixpanelPeople","update_referrer_info","increment","by","$add","track_charge","clear_charges","delete_user","_identify_called","device_id","user_id","had_persisted_distinct_id","people","_enqueue","conf_var","_flags","identify_called","_add_to_people_queue","_flush_one_queue","action_method","queue_to_params_fn","queued_data","load_queue","action_params","_pop_from_people_queue","save","_flush","_set_callback","_add_callback","_append_callback","_set_once_callback","_union_callback","_unset_callback","_remove_callback","$append_queue","$append_item","append_callback","$remove_queue","$remove_item","remove_callback","init_type","SET_QUEUE_KEY","SET_ONCE_QUEUE_KEY","UNSET_QUEUE_KEY","ADD_QUEUE_KEY","APPEND_QUEUE_KEY","REMOVE_QUEUE_KEY","UNION_QUEUE_KEY","PEOPLE_DISTINCT_ID_KEY","ALIAS_ID_KEY","EVENT_TIMERS_KEY","RESERVED_PROPERTIES","MixpanelPersistence","campaign_params_saved","storage_type","update_config","upgrade","entry","old_cookie","old_localstorage","register_once","expire_days","cross_subdomain","cross_site","cookie_domain","load_prop","default_expiry","register","unregister","update_search_keyword","get_referrer_info","set_disabled","set_cookie_domain","set_cross_site","set_cross_subdomain","set_secure","get_cross_subdomain","q_key","_get_queue_key","q_data","set_q","_get_or_create_queue","set_once_q","unset_q","add_q","union_q","remove_q","append_q","enqueued_obj","append_obj","queued_action","default_val","set_event_timer","timers","remove_event_timer","mixpanel_master","load_extra_bundle","_onload","IDENTITY_FUNC","PRIMARY_INSTANCE_NAME","PAYLOAD_TYPE_BASE64","DEVICE_ID_PREFIX","USE_XHR","XMLHttpRequest","ENQUEUE_REQUESTS","sendBeacon","DEFAULT_API_ROUTES","DEFAULT_CONFIG","DOM_LOADED","MixpanelLib","create_mplib","_cached_groups","utm_params","initial_utm_params","has_utm","utm_value","utm_key","_execute_array","report_error","_loaded","variable_features","set_config","__dom_loaded_queue","__request_queue","__disabled_events","_batch_requests","init_batchers","flush_on_unload","get_batcher_configs","batcher_config","queue_key","unpersisted_superprops","_gdpr_init","autocapture","_init_tab_id","_check_and_start_session_recording","key_suffix","tab_id_key","should_generate_new_tab_id_key","tab_id","_should_load_recorder","recording_registry_idb","recordings","force_start","loadRecorder","handleLoadedRecorder","_recorder","is_sampled","shouldLoad","start_session_recording","stop_session_recording","pause_session_recording","resume_session_recording","_get_session_replay_id","get_session_recording_properties","replay_id","get_session_replay_url","replay_url","__get_recorder","_set_default_superprops","_utm_value","_dom_loaded","_track_dom","has_opted_out_tracking","DomClass","dt","_prepare_callback","jsc","randomized_cb","callback_string","DEFAULT_OPTIONS","body_data","use_post","use_sendBeacon","verbose_mode","lib","img","headerValue","headerName","setRequestHeader","start_time","withCredentials","onreadystatechange","responseText","statusText","response_headers","fn_name","alias_calls","other_calls","tracking_calls","execute","calls","caller","are_batchers_initialized","queue_prefix","_batcher_configs","api_name","batcher_for","attrs","api_routes","_encode_data_for_request","_run_hook","stop_batch_senders","batcher_configs","start_batch_senders","_batchers_were_started","disable","disable_all_events","encoded_data","truncated_data","should_send_immediately","send_request_options","request_enqueued_or_initiated","send_request_immediately","skip_hooks","_event_is_disabled","start_timestamp","duration_in_ms","marketing_properties","property_blacklist","blacklisted_prop","set_group","group_ids","add_group","old_values","remove_group","old_value","track_with_groups","tracking_props","_create_map_key","_remove_group_from_cache","get_group","map_key","group","default_page_properties","event_properties","track_links","track_forms","time_event","REGISTER_DEFAULTS","options_for_register","days_or_options","_register_single","identify","new_distinct_id","previous_distinct_id","alias","name_tag","prop_name","hook_name","property_name","endpoint_type","has_opted_in_tracking","opt_in_tracking","opt_out_tracking","clear_opt_in_out_tracking","_gdpr_update_persistence","_gdpr_call_func","instances","mixpanel","_src","onload","dom_loaded_handler","attachEvent","toplevel","frameElement","doScroll","do_scroll_check","add_dom_loaded_handler","initializeMixpanel","data_consent_status","mixpanelConfig","persistence","disableMixpanel","enableMixpanel","getGlobalProperties","globalProps","globalProperties","pageParam","enhancedProperties","hit_type","page","fromEntries","trackEvent","eventProperties","isMixpanelAvailable","itemName","contentReceivedAt","contentRenderedAt","isCached","content_received_at","is_content_rendered","content_rendered_at","item_name","item_category","button_name","button_action","license_type","price_amount","price_currency","extractPluginProperties","defaultOptions","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","setDefaults","getDefaults","MarketplaceContext","setSubscriptionStatus","setIsCheckingSubscription","setLoadingAction","setLoadingPlugin","successState","setSuccessState","consentStatus","setConsentStatus","initialConsent","reloadTimeoutRef","wpVersion","persistedNotice","noticeData","successType","handleConsentChange","newConsentStatus","handleStorageChange","useCallback","ajaxUrl","formData","FormData","is_purchased","isWpVersionSupportedHelper","isImagifyActivation","actionSuccessful","loadingMessage","deactivating","deleting","downloadParam","nonce","attempts","checkActivation","checkUrl","special_case","error_message","alert","Provider","useContext","alwaysNewT","i18nFromProps","i18nFromContext","defaultNSFromContext","reportNamespaces","notReadyT","optsOrDefaultValue","retNotReady","ready","i18nOptions","memoGetT","useMemoizedT","nsMode","getT","getNewT","setT","joinedNS","previousJoinedNS","ref","usePrevious","isMounted","boundReset","i18nInstance","setI18n","getI18n","alreadyWarned","warnOnce","loadedClb","freePlugin","proPlugin","tableSliderRef","sliderNavRef","tableRef","tableHeaderRef","paginationRef","activeSlide","setActiveSlide","tableSlider","sliderNav","table","tableHeader","pagination","prevButton","querySelector","nextButton","navIsAtBottom","paginationState","isPaginationScrolledPast","isTableBottomVisible","isUpdatingClasses","scrollThrottleTimer","isScrollThrottled","updateSliderState","slideWidth","offsetWidth","currentSlide","scrollWidth","calculateNavPosition","tablePaddingTop","getComputedStyle","paddingTop","halfHeaderHeight","offsetHeight","translateY","topValue","bottomValue","bottom","checkNavBoundary","tableRect","stickyBottomThreshold","shouldBeAtBottom","updatePaginationStateFromObservers","newState","paginationObserver","IntersectionObserver","isIntersecting","boundingClientRect","rootMargin","tableBottomSentinel","tableBottomObserver","handleScroll","handleResize","newBottomValue","proTitle","proDescription","proPrice","isProFreeUntilRenewal","proFullPriceAmount","i18nSource","freeKeyFeatures","proKeyFeatures","maxFeatures","handlePrevClick","behavior","handleNextClick","slideIndex","handleDotClick","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","definition","isSupported","ReactDOM","render"],"sourceRoot":""} \ No newline at end of file diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js new file mode 100644 index 0000000..c0a8284 --- /dev/null +++ b/frontend/eslint.config.js @@ -0,0 +1,85 @@ +const js = require('@eslint/js'); +const reactPlugin = require('eslint-plugin-react'); +const reactHooksPlugin = require('eslint-plugin-react-hooks'); +const jsxA11yPlugin = require('eslint-plugin-jsx-a11y'); +const eslintConfigPrettier = require('eslint-config-prettier'); +const globals = require('globals'); + +module.exports = [ + { + ignores: [ + 'node_modules/**', + 'build/**', + 'standalone/**', + 'webpack.wp.js', + 'vite.config.js', + ], + }, + js.configs.recommended, + { + files: ['**/*.{js,jsx}'], + languageOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + globals: { + ...globals.browser, + ...globals.node, + ...globals.es2021, + process: 'readonly', + Buffer: 'readonly', + __dirname: 'readonly', + require: 'readonly', + module: 'readonly', + setTimeout: 'readonly', + clearTimeout: 'readonly', + setInterval: 'readonly', + clearInterval: 'readonly', + URL: 'readonly', + btoa: 'readonly', + setImmediate: 'readonly', + console: 'readonly', + }, + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + }, + plugins: { + react: reactPlugin, + 'react-hooks': reactHooksPlugin, + 'jsx-a11y': jsxA11yPlugin, + }, + settings: { + react: { + version: 'detect', + }, + }, + rules: { + ...reactPlugin.configs.recommended.rules, + ...reactHooksPlugin.configs.recommended.rules, + ...jsxA11yPlugin.configs.recommended.rules, + ...eslintConfigPrettier.rules, + 'react/react-in-jsx-scope': 'off', + 'react/prop-types': 'off', + 'no-console': 'off', + 'no-undef': 'error', + semi: 'error', + 'semi-spacing': 'error', + 'arrow-spacing': 'error', + 'no-confusing-arrow': ['error', {allowParens: true}], + 'no-duplicate-imports': 'error', + 'no-var': 'error', + 'object-shorthand': 'off', + 'prefer-const': 'error', + eqeqeq: 'warn', + 'no-invalid-this': 'error', + 'no-return-assign': 'error', + 'no-unused-expressions': ['error', {allowTernary: true}], + 'no-useless-concat': 'error', + 'no-useless-return': 'error', + 'no-constant-condition': 'warn', + 'no-unused-vars': 'off', + }, + }, +]; diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 7bb7d8c..ab0bf06 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -9,24 +9,68 @@ "version": "1.0.0-beta.5", "license": "GPL-2.0-or-later", "dependencies": { - "@group.one/gravity": "^5.22.1", - "mixpanel-browser": "^2.72.0", - "react-i18next": "^15.7.3" + "@dogado/gravity": "^5.25.3", + "@eslint/js": "^8.57.1", + "globals": "^15.15.0", + "mixpanel-browser": "^2.73.0", + "prop-types": "^15.8.1", + "react-i18next": "^16.5.0" }, "devDependencies": { "@vitejs/plugin-react": "^4.0.0", - "@wordpress/scripts": "^26.0.0", + "@wordpress/scripts": "^31.1.0", "clean-css-cli": "^5.6.3", "cross-env": "^7.0.3", - "vite": "^5.0.0", - "webpack": "^5.0.0", - "webpack-cli": "^5.0.0" + "eslint": "^8.57.1", + "eslint-config-prettier": "^9.1.2", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-react": "^7.37.4", + "eslint-plugin-react-hooks": "^4.6.2", + "prettier": "^3.5.1", + "vite": "^6.1.0", + "webpack": "^5.97.1", + "webpack-cli": "^6.0.1" }, "peerDependencies": { "react": ">=18 || >=19", "react-dom": ">=18 || >=19" } }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@asamuzakjp/css-color": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", + "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.3", + "@csstools/css-color-parser": "^3.0.9", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/@babel/code-frame": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", @@ -81,10 +125,11 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.4.tgz", - "integrity": "sha512-Aa+yDiH87980jR6zvRfFuCR1+dLb00vBydhTL+zI992Rz/wQhSvuxjmOOuJOgO3XmakO6RykRGD2S1mq1AtgHA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.7.tgz", + "integrity": "sha512-B+BO9x86VYsQHimucBAL1fxTJKF4wyKY6ZVzee9QgzdZOUfs3BaR6AQrgoGrRI+7IFS1wUz/VyQ+SoBcSpdPbw==", "dev": true, + "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", @@ -481,6 +526,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -493,6 +539,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -505,6 +552,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -517,6 +565,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -527,6 +576,32 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-import-assertions": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", @@ -562,6 +637,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -574,6 +650,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -601,6 +678,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -613,6 +691,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -625,6 +704,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -637,6 +717,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -649,6 +730,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -661,6 +743,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -673,6 +756,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -688,6 +772,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1508,16 +1593,17 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.3.tgz", - "integrity": "sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.7.tgz", + "integrity": "sha512-Y9p487tyTzB0yDYQOtWnC+9HGOuogtP3/wNpun1xJXEEvI6vip59BSBTsHnekZLqxmPcgsrAKt46HAAb//xGhg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, "engines": { @@ -1527,6 +1613,20 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", @@ -1823,9 +1923,10 @@ } }, "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -1879,22 +1980,227 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/@csstools/selector-specificity": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", - "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "node_modules/@cacheable/memory": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.7.tgz", + "integrity": "sha512-RbxnxAMf89Tp1dLhXMS7ceft/PGsDl1Ip7T20z5nZ+pwIAsQ1p2izPjVG69oCLv/jfQ7HDPHTWK0c9rcAWXN3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cacheable/utils": "^2.3.3", + "@keyv/bigmap": "^1.3.0", + "hookified": "^1.14.0", + "keyv": "^5.5.5" + } + }, + "node_modules/@cacheable/memory/node_modules/@keyv/bigmap": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.0.tgz", + "integrity": "sha512-KT01GjzV6AQD5+IYrcpoYLkCu1Jod3nau1Z7EsEuViO3TZGRacSbO9MfHmbJ1WaOXFtWLxPVj169cn2WNKPkIg==", "dev": true, + "license": "MIT", + "dependencies": { + "hashery": "^1.2.0", + "hookified": "^1.13.0" + }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">= 18" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "peerDependencies": { + "keyv": "^5.5.4" + } + }, + "node_modules/@cacheable/memory/node_modules/keyv": { + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.5.tgz", + "integrity": "sha512-FA5LmZVF1VziNc0bIdCSA1IoSVnDCqE8HJIZZv2/W8YmoAM50+tnUgJR/gQZwEeIMleuIOnRnHA/UaZRNeV4iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, + "node_modules/@cacheable/utils": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.3.3.tgz", + "integrity": "sha512-JsXDL70gQ+1Vc2W/KUFfkAJzgb4puKwwKehNLuB+HrNKWf91O736kGfxn4KujXCCSuh6mRRL4XEB0PkAFjWS0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "hashery": "^1.3.0", + "keyv": "^5.5.5" + } + }, + "node_modules/@cacheable/utils/node_modules/keyv": { + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.5.tgz", + "integrity": "sha512-FA5LmZVF1VziNc0bIdCSA1IoSVnDCqE8HJIZZv2/W8YmoAM50+tnUgJR/gQZwEeIMleuIOnRnHA/UaZRNeV4iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" }, "peerDependencies": { - "postcss-selector-parser": "^6.0.10" + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-syntax-patches-for-csstree": { + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.25.tgz", + "integrity": "sha512-g0Kw9W3vjx5BEBAF8c5Fm2NcB/Fs8jJXh85aXqwEXiL+tqtOut07TWgyaGzAAfTM+gKckrrncyeGEZPcaRgm2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz", + "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1" } }, "node_modules/@discoveryjs/json-ext": { @@ -1906,11 +2212,63 @@ "node": ">=10.0.0" } }, + "node_modules/@dogado/gravity": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/@dogado/gravity/-/gravity-5.25.3.tgz", + "integrity": "sha512-M/iwMLf2F8q7TbUPnBuZ5MFNxYpoEB9vPu7DjHQ50PxfBD/FpmWz9fV+r8iIGVSeqrCABt17Nj2kvRYIGXhP1g==", + "license": "UNLICENSED" + }, + "node_modules/@dual-bundle/import-meta-resolve": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.2.1.tgz", + "integrity": "sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/JounQin" + } + }, + "node_modules/@emnapi/core": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@es-joy/jsdoccomment": { "version": "0.41.0", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.41.0.tgz", "integrity": "sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==", "dev": true, + "license": "MIT", "dependencies": { "comment-parser": "1.4.1", "esquery": "^1.5.0", @@ -1921,9 +2279,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", "cpu": [ "ppc64" ], @@ -1934,13 +2292,13 @@ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", "cpu": [ "arm" ], @@ -1951,13 +2309,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", "cpu": [ "arm64" ], @@ -1968,13 +2326,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", "cpu": [ "x64" ], @@ -1985,13 +2343,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", "cpu": [ "arm64" ], @@ -2002,13 +2360,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", "cpu": [ "x64" ], @@ -2019,13 +2377,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", "cpu": [ "arm64" ], @@ -2036,13 +2394,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", "cpu": [ "x64" ], @@ -2053,13 +2411,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", "cpu": [ "arm" ], @@ -2070,13 +2428,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", "cpu": [ "arm64" ], @@ -2087,13 +2445,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", "cpu": [ "ia32" ], @@ -2104,13 +2462,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", "cpu": [ "loong64" ], @@ -2121,13 +2479,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", "cpu": [ "mips64el" ], @@ -2138,13 +2496,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", "cpu": [ "ppc64" ], @@ -2155,13 +2513,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", "cpu": [ "riscv64" ], @@ -2172,13 +2530,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", "cpu": [ "s390x" ], @@ -2189,13 +2547,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", "cpu": [ "x64" ], @@ -2206,13 +2564,30 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", "cpu": [ "x64" ], @@ -2223,13 +2598,30 @@ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", "cpu": [ "x64" ], @@ -2240,13 +2632,30 @@ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", "cpu": [ "x64" ], @@ -2257,13 +2666,13 @@ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", "cpu": [ "arm64" ], @@ -2274,13 +2683,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", "cpu": [ "ia32" ], @@ -2291,13 +2700,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", "cpu": [ "x64" ], @@ -2308,7 +2717,7 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -2389,11 +2798,28 @@ "concat-map": "0.0.1" } }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -2417,29 +2843,118 @@ "version": "8.57.1", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@group.one/gravity": { - "version": "5.22.1", - "resolved": "https://gitlab.group.one/api/v4/projects/5722/packages/npm/@group.one/gravity/-/@group.one/gravity-5.22.1.tgz", - "integrity": "sha1-3EdTKvE0jRR/MEZEDKoUT3EcsiM=" + "node_modules/@formatjs/ecma402-abstract": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.6.tgz", + "integrity": "sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/intl-localematcher": "0.6.2", + "decimal.js": "^10.4.3", + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/fast-memoize": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.7.tgz", + "integrity": "sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.4.tgz", + "integrity": "sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "2.3.6", + "@formatjs/icu-skeleton-parser": "1.8.16", + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.8.16", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.16.tgz", + "integrity": "sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "2.3.6", + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.2.tgz", + "integrity": "sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@hapi/address": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-5.1.1.tgz", + "integrity": "sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^11.0.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/formula": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-3.0.2.tgz", + "integrity": "sha512-hY5YPNXzw1He7s0iqkRQi+uMGh383CGdyyIGYtB+W5N3KHPXoqychklvHhKCC9M3Xtv0OCs/IHw+r4dcHtBYWw==", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "dev": true + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.7.tgz", + "integrity": "sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/pinpoint": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.1.tgz", + "integrity": "sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/tlds": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@hapi/tlds/-/tlds-1.1.4.tgz", + "integrity": "sha512-Fq+20dxsxLaUn5jSSWrdtSRcIUba2JquuorF9UW1wIJS5cSUwxIsO2GIhaWynPRflvxSzFN+gxKte2HEW1OuoA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=14.0.0" + } }, "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@hapi/hoek": "^9.0.0" + "@hapi/hoek": "^11.0.2" } }, "node_modules/@humanwhocodes/config-array": { @@ -2504,6 +3019,7 @@ "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -2520,6 +3036,7 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -2529,6 +3046,7 @@ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2538,6 +3056,7 @@ "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -2555,6 +3074,7 @@ "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/reporters": "^29.7.0", @@ -2602,6 +3122,7 @@ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/fake-timers": "^29.7.0", "@jest/types": "^29.6.3", @@ -2612,11 +3133,234 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/environment-jsdom-abstract": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.2.0.tgz", + "integrity": "sha512-kazxw2L9IPuZpQ0mEt9lu9Z98SqR74xcagANmMBU16X0lS23yPc0+S6hGLUz8kVRlomZEs/5S/Zlpqwf5yu6OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/jsdom": "^21.1.7", + "@types/node": "*", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "canvas": "^3.0.0", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@sinclair/typebox": { + "version": "0.34.47", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.47.tgz", + "integrity": "sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@jest/environment-jsdom-abstract/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/expect": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, + "license": "MIT", "dependencies": { "expect": "^29.7.0", "jest-snapshot": "^29.7.0" @@ -2630,6 +3374,7 @@ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, + "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" }, @@ -2642,6 +3387,7 @@ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", @@ -2659,6 +3405,7 @@ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/expect": "^29.7.0", @@ -2669,11 +3416,36 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/reporters": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, + "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^29.7.0", @@ -2717,6 +3489,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", "@babel/parser": "^7.23.9", @@ -2729,10 +3502,11 @@ } }, "node_modules/@jest/reporters/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -2745,6 +3519,7 @@ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, + "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -2757,6 +3532,7 @@ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", @@ -2771,6 +3547,7 @@ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/types": "^29.6.3", @@ -2786,6 +3563,7 @@ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", "graceful-fs": "^4.2.9", @@ -2801,6 +3579,7 @@ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@jest/types": "^29.6.3", @@ -2827,6 +3606,7 @@ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -2894,11 +3674,139 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", + "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@keyv/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", + "dev": true, + "license": "MIT" + }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@mixpanel/rrdom": { "version": "2.0.0-alpha.18.2", @@ -2956,15 +3864,42 @@ "integrity": "sha512-OomKIB6GTx5xvCLJ7iic2khT/t/tnCJUex13aEqsbSqIT/UzUUsqf+LTrgUK5ex+f6odmkCNjre2y5jvpNqn+g==", "license": "MIT" }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", "dev": true, + "license": "MIT", "dependencies": { "eslint-scope": "5.1.1" } }, + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3000,194 +3935,793 @@ "node": ">= 8" } }, - "node_modules/@parcel/watcher": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", - "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "dev": true, - "hasInstallScript": true, - "optional": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" + "@opentelemetry/api": "^1.3.0" }, "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.1", - "@parcel/watcher-darwin-arm64": "2.5.1", - "@parcel/watcher-darwin-x64": "2.5.1", - "@parcel/watcher-freebsd-x64": "2.5.1", - "@parcel/watcher-linux-arm-glibc": "2.5.1", - "@parcel/watcher-linux-arm-musl": "2.5.1", - "@parcel/watcher-linux-arm64-glibc": "2.5.1", - "@parcel/watcher-linux-arm64-musl": "2.5.1", - "@parcel/watcher-linux-x64-glibc": "2.5.1", - "@parcel/watcher-linux-x64-musl": "2.5.1", - "@parcel/watcher-win32-arm64": "2.5.1", - "@parcel/watcher-win32-ia32": "2.5.1", - "@parcel/watcher-win32-x64": "2.5.1" + "node": ">=14" } }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", - "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", - "cpu": [ - "arm64" - ], + "node_modules/@opentelemetry/context-async-hooks": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz", + "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "license": "Apache-2.0", "engines": { - "node": ">= 10.0.0" + "node": ">=14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", - "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", - "cpu": [ - "arm64" - ], + "node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", - "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", - "cpu": [ - "x64" - ], + "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "Apache-2.0", "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=14" } }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", - "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", - "cpu": [ - "x64" - ], + "node_modules/@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", - "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", - "cpu": [ - "arm" - ], + "node_modules/@opentelemetry/instrumentation-amqplib": { + "version": "0.46.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.46.1.tgz", + "integrity": "sha512-AyXVnlCf/xV3K/rNumzKxZqsULyITJH6OVLiW6730JPRqWA7Zc9bvYoVNpN6iOpTU8CasH34SU/ksVJmObFibQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", - "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", - "cpu": [ - "arm" - ], + "node_modules/@opentelemetry/instrumentation-connect": { + "version": "0.43.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.43.1.tgz", + "integrity": "sha512-ht7YGWQuV5BopMcw5Q2hXn3I8eG8TH0J/kc/GMcW4CuNTgiP6wCu44BOnucJWL3CmFWaRHI//vWyAhaC8BwePw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/connect": "3.4.38" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", - "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", - "cpu": [ - "arm64" - ], + "node_modules/@opentelemetry/instrumentation-dataloader": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.16.1.tgz", + "integrity": "sha512-K/qU4CjnzOpNkkKO4DfCLSQshejRNAJtd4esgigo/50nxCB6XCyi1dhAblUHM9jG5dRm8eu0FB+t87nIo99LYQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", - "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", - "cpu": [ - "arm64" - ], + "node_modules/@opentelemetry/instrumentation-express": { + "version": "0.47.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.47.1.tgz", + "integrity": "sha512-QNXPTWteDclR2B4pDFpz0TNghgB33UMjUt14B+BZPmtH1MwUFAfLHBaP5If0Z5NZC+jaH8oF2glgYjrmhZWmSw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-fs": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.19.1.tgz", + "integrity": "sha512-6g0FhB3B9UobAR60BGTcXg4IHZ6aaYJzp0Ki5FhnxyAPt8Ns+9SSvgcrnsN2eGmk3RWG5vYycUGOEApycQL24A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-generic-pool": { + "version": "0.43.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.43.1.tgz", + "integrity": "sha512-M6qGYsp1cURtvVLGDrPPZemMFEbuMmCXgQYTReC/IbimV5sGrLBjB+/hANUpRZjX67nGLdKSVLZuQQAiNz+sww==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-graphql": { + "version": "0.47.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.47.1.tgz", + "integrity": "sha512-EGQRWMGqwiuVma8ZLAZnExQ7sBvbOx0N/AE/nlafISPs8S+QtXX+Viy6dcQwVWwYHQPAcuY3bFt3xgoAwb4ZNQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-hapi": { + "version": "0.45.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.45.2.tgz", + "integrity": "sha512-7Ehow/7Wp3aoyCrZwQpU7a2CnoMq0XhIcioFuKjBb0PLYfBfmTsFTUyatlHu0fRxhwcRsSQRTvEhmZu8CppBpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-http": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.57.2.tgz", + "integrity": "sha512-1Uz5iJ9ZAlFOiPuwYg29Bf7bJJc/GeoeJIFKJYQf67nTVKFe8RHbEtxgkOmK4UGZNHKXcpW4P8cWBYzBn1USpg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/instrumentation": "0.57.2", + "@opentelemetry/semantic-conventions": "1.28.0", + "forwarded-parse": "2.1.2", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-http/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@opentelemetry/instrumentation-ioredis": { + "version": "0.47.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.47.1.tgz", + "integrity": "sha512-OtFGSN+kgk/aoKgdkKQnBsQFDiG8WdCxu+UrHr0bXScdAmtSzLSraLo7wFIb25RVHfRWvzI5kZomqJYEg/l1iA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/redis-common": "^0.36.2", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-kafkajs": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.7.1.tgz", + "integrity": "sha512-OtjaKs8H7oysfErajdYr1yuWSjMAectT7Dwr+axIoZqT9lmEOkD/H/3rgAs8h/NIuEi2imSXD+vL4MZtOuJfqQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-knex": { + "version": "0.44.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.44.1.tgz", + "integrity": "sha512-U4dQxkNhvPexffjEmGwCq68FuftFK15JgUF05y/HlK3M6W/G2iEaACIfXdSnwVNe9Qh0sPfw8LbOPxrWzGWGMQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-koa": { + "version": "0.47.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.47.1.tgz", + "integrity": "sha512-l/c+Z9F86cOiPJUllUCt09v+kICKvT+Vg1vOAJHtHPsJIzurGayucfCMq2acd/A/yxeNWunl9d9eqZ0G+XiI6A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-lru-memoizer": { + "version": "0.44.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.44.1.tgz", + "integrity": "sha512-5MPkYCvG2yw7WONEjYj5lr5JFehTobW7wX+ZUFy81oF2lr9IPfZk9qO+FTaM0bGEiymwfLwKe6jE15nHn1nmHg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mongodb": { + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.52.0.tgz", + "integrity": "sha512-1xmAqOtRUQGR7QfJFfGV/M2kC7wmI2WgZdpru8hJl3S0r4hW0n3OQpEHlSGXJAaNFyvT+ilnwkT+g5L4ljHR6g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mongoose": { + "version": "0.46.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.46.1.tgz", + "integrity": "sha512-3kINtW1LUTPkiXFRSSBmva1SXzS/72we/jL22N+BnF3DFcoewkdkHPYOIdAAk9gSicJ4d5Ojtt1/HeibEc5OQg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mysql": { + "version": "0.45.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.45.1.tgz", + "integrity": "sha512-TKp4hQ8iKQsY7vnp/j0yJJ4ZsP109Ht6l4RHTj0lNEG1TfgTrIH5vJMbgmoYXWzNHAqBH2e7fncN12p3BP8LFg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/mysql": "2.15.26" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mysql2": { + "version": "0.45.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.45.2.tgz", + "integrity": "sha512-h6Ad60FjCYdJZ5DTz1Lk2VmQsShiViKe0G7sYikb0GHI0NVvApp2XQNRHNjEMz87roFttGPLHOYVPlfy+yVIhQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@opentelemetry/sql-common": "^0.40.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-pg": { + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.51.1.tgz", + "integrity": "sha512-QxgjSrxyWZc7Vk+qGSfsejPVFL1AgAJdSBMYZdDUbwg730D09ub3PXScB9d04vIqPriZ+0dqzjmQx0yWKiCi2Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.26.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@opentelemetry/sql-common": "^0.40.1", + "@types/pg": "8.6.1", + "@types/pg-pool": "2.0.6" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-redis-4": { + "version": "0.46.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.46.1.tgz", + "integrity": "sha512-UMqleEoabYMsWoTkqyt9WAzXwZ4BlFZHO40wr3d5ZvtjKCHlD4YXLm+6OLCeIi/HkX7EXvQaz8gtAwkwwSEvcQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/redis-common": "^0.36.2", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-tedious": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.18.1.tgz", + "integrity": "sha512-5Cuy/nj0HBaH+ZJ4leuD7RjgvA844aY2WW+B5uLcWtxGjRZl3MNLuxnNg5DYWZNPO+NafSSnra0q49KWAHsKBg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/tedious": "^4.0.14" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-undici": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.10.1.tgz", + "integrity": "sha512-rkOGikPEyRpMCmNu9AQuV5dtRlDmJp2dK5sw8roVshAGoB6hH/3QjDtRhdwd75SsJwgynWUNRUYe0wAkTo16tQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.7.0" + } + }, + "node_modules/@opentelemetry/instrumentation/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@opentelemetry/redis-common": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz", + "integrity": "sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", + "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", + "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.39.0.tgz", + "integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sql-common": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.40.1.tgz", + "integrity": "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.1.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">= 10.0.0" }, @@ -3296,11 +4830,182 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/@paulirish/trace_engine": { + "version": "0.0.59", + "resolved": "https://registry.npmjs.org/@paulirish/trace_engine/-/trace_engine-0.0.59.tgz", + "integrity": "sha512-439NUzQGmH+9Y017/xCchBP9571J4bzhpcNhrxorf7r37wcyJZkgUfrUsRL3xl+JDcZ6ORhoFCzCw98c6S3YHw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "legacy-javascript": "latest", + "third-party-web": "latest" + } + }, + "node_modules/@peculiar/asn1-cms": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.6.0.tgz", + "integrity": "sha512-2uZqP+ggSncESeUF/9Su8rWqGclEfEiz1SyU02WX5fUONFfkjzS2Z/F1Li0ofSmf4JqYXIOdCAZqIXAIBAT1OA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "@peculiar/asn1-x509-attr": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-csr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.6.0.tgz", + "integrity": "sha512-BeWIu5VpTIhfRysfEp73SGbwjjoLL/JWXhJ/9mo4vXnz3tRGm+NGm3KNcRzQ9VMVqwYS2RHlolz21svzRXIHPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-ecc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.6.0.tgz", + "integrity": "sha512-FF3LMGq6SfAOwUG2sKpPXblibn6XnEIKa+SryvUl5Pik+WR9rmRA3OCiwz8R3lVXnYnyRkSZsSLdml8H3UiOcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pfx": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.6.0.tgz", + "integrity": "sha512-rtUvtf+tyKGgokHHmZzeUojRZJYPxoD/jaN1+VAB4kKR7tXrnDCA/RAWXAIhMJJC+7W27IIRGe9djvxKgsldCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-pkcs8": "^2.6.0", + "@peculiar/asn1-rsa": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pkcs8": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.6.0.tgz", + "integrity": "sha512-KyQ4D8G/NrS7Fw3XCJrngxmjwO/3htnA0lL9gDICvEQ+GJ+EPFqldcJQTwPIdvx98Tua+WjkdKHSC0/Km7T+lA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pkcs9": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.6.0.tgz", + "integrity": "sha512-b78OQ6OciW0aqZxdzliXGYHASeCvvw5caqidbpQRYW2mBtXIX2WhofNXTEe7NyxTb0P6J62kAAWLwn0HuMF1Fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-pfx": "^2.6.0", + "@peculiar/asn1-pkcs8": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "@peculiar/asn1-x509-attr": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-rsa": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.6.0.tgz", + "integrity": "sha512-Nu4C19tsrTsCp9fDrH+sdcOKoVfdfoQQ7S3VqjJU6vedR7tY3RLkQ5oguOIB3zFW33USDUuYZnPEQYySlgha4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-schema": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz", + "integrity": "sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-x509": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.6.0.tgz", + "integrity": "sha512-uzYbPEpoQiBoTq0/+jZtpM6Gq6zADBx+JNFP3yqRgziWBxQ/Dt/HcuvRfm9zJTPdRcBqPNdaRHTVwpyiq6iNMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-x509-attr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.6.0.tgz", + "integrity": "sha512-MuIAXFX3/dc8gmoZBkwJWxUWOSvG4MMDntXhrOZpJVMkYX+MYc/rUAU2uJOved9iJEoiUx7//3D8oG83a78UJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/x509": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.3.tgz", + "integrity": "sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-csr": "^2.6.0", + "@peculiar/asn1-ecc": "^2.6.0", + "@peculiar/asn1-pkcs9": "^2.6.0", + "@peculiar/asn1-rsa": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "pvtsutils": "^1.3.6", + "reflect-metadata": "^0.2.2", + "tslib": "^2.8.1", + "tsyringe": "^4.10.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, "node_modules/@pkgr/core": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -3309,13 +5014,14 @@ } }, "node_modules/@playwright/test": { - "version": "1.55.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.55.0.tgz", - "integrity": "sha512-04IXzPwHrW69XusN/SIdDdKZBzMfOT9UNT/YiJit/xpy2VuAoB8NHc8Aplb96zsWDddLnbkPL3TsmrS04ZU2xQ==", + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz", + "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", "dev": true, + "license": "Apache-2.0", "peer": true, "dependencies": { - "playwright": "1.55.0" + "playwright": "1.57.0" }, "bin": { "playwright": "cli.js" @@ -3378,110 +5084,53 @@ "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", "dev": true }, - "node_modules/@puppeteer/browsers": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.6.tgz", - "integrity": "sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==", + "node_modules/@prisma/instrumentation": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-6.11.1.tgz", + "integrity": "sha512-mrZOev24EDhnefmnZX7WVVT7v+r9LttPRqf54ONvj6re4XMF7wFTpK2tLJi4XHB7fFp/6xhYbgRel8YV7gQiyA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "debug": "4.3.4", - "extract-zip": "2.0.1", - "progress": "2.0.3", - "proxy-agent": "6.3.0", - "tar-fs": "3.0.4", - "unbzip2-stream": "1.4.3", - "yargs": "17.7.1" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" - }, - "engines": { - "node": ">=16.3.0" + "@opentelemetry/instrumentation": "^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0" }, "peerDependencies": { - "typescript": ">= 4.7.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@puppeteer/browsers/node_modules/b4a": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.1.tgz", - "integrity": "sha512-ZovbrBV0g6JxK5cGUF1Suby1vLfKjv4RWi8IxoaO/Mon8BDD9I21RxjHFtgQ+kskJqLAVyQZly3uMBui+vhc8Q==", - "dev": true, - "peerDependencies": { - "react-native-b4a": "*" - }, - "peerDependenciesMeta": { - "react-native-b4a": { - "optional": true - } + "@opentelemetry/api": "^1.8" } }, - "node_modules/@puppeteer/browsers/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@puppeteer/browsers": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.6.1.tgz", + "integrity": "sha512-aBSREisdsGH890S2rQqK82qmQYU3uFpSH8wcZWHgHzl3LfzsxAKbLNiAG9mO8v1Y0UICBeClICxPJvyr0rcuxg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "ms": "2.1.2" + "debug": "^4.4.0", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.5.0", + "semver": "^7.6.3", + "tar-fs": "^3.0.6", + "unbzip2-stream": "^1.4.3", + "yargs": "^17.7.2" }, - "engines": { - "node": ">=6.0" + "bin": { + "browsers": "lib/cjs/main-cli.js" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@puppeteer/browsers/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@puppeteer/browsers/node_modules/tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", - "dev": true, - "dependencies": { - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - } - }, - "node_modules/@puppeteer/browsers/node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dev": true, - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" + "engines": { + "node": ">=18" } }, - "node_modules/@puppeteer/browsers/node_modules/yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "node_modules/@puppeteer/browsers/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=12" + "node": ">=10" } }, "node_modules/@rolldown/pluginutils": { @@ -3789,155 +5438,123 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@sentry/core": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz", - "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==", + "version": "9.47.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.47.1.tgz", + "integrity": "sha512-KX62+qIt4xgy8eHKHiikfhz2p5fOciXd0Cl+dNzhgPFq8klq4MGMNaf148GB3M/vBqP4nw/eFvRMAayFCgdRQw==", "dev": true, - "dependencies": { - "@sentry/hub": "6.19.7", - "@sentry/minimal": "6.19.7", - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "tslib": "^1.9.3" - }, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/@sentry/core/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@sentry/hub": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", - "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", + "node_modules/@sentry/node": { + "version": "9.47.1", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-9.47.1.tgz", + "integrity": "sha512-CDbkasBz3fnWRKSFs6mmaRepM2pa+tbZkrqhPWifFfIkJDidtVW40p6OnquTvPXyPAszCnDZRnZT14xyvNmKPQ==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "tslib": "^1.9.3" + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^1.30.1", + "@opentelemetry/core": "^1.30.1", + "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation-amqplib": "^0.46.1", + "@opentelemetry/instrumentation-connect": "0.43.1", + "@opentelemetry/instrumentation-dataloader": "0.16.1", + "@opentelemetry/instrumentation-express": "0.47.1", + "@opentelemetry/instrumentation-fs": "0.19.1", + "@opentelemetry/instrumentation-generic-pool": "0.43.1", + "@opentelemetry/instrumentation-graphql": "0.47.1", + "@opentelemetry/instrumentation-hapi": "0.45.2", + "@opentelemetry/instrumentation-http": "0.57.2", + "@opentelemetry/instrumentation-ioredis": "0.47.1", + "@opentelemetry/instrumentation-kafkajs": "0.7.1", + "@opentelemetry/instrumentation-knex": "0.44.1", + "@opentelemetry/instrumentation-koa": "0.47.1", + "@opentelemetry/instrumentation-lru-memoizer": "0.44.1", + "@opentelemetry/instrumentation-mongodb": "0.52.0", + "@opentelemetry/instrumentation-mongoose": "0.46.1", + "@opentelemetry/instrumentation-mysql": "0.45.1", + "@opentelemetry/instrumentation-mysql2": "0.45.2", + "@opentelemetry/instrumentation-pg": "0.51.1", + "@opentelemetry/instrumentation-redis-4": "0.46.1", + "@opentelemetry/instrumentation-tedious": "0.18.1", + "@opentelemetry/instrumentation-undici": "0.10.1", + "@opentelemetry/resources": "^1.30.1", + "@opentelemetry/sdk-trace-base": "^1.30.1", + "@opentelemetry/semantic-conventions": "^1.34.0", + "@prisma/instrumentation": "6.11.1", + "@sentry/core": "9.47.1", + "@sentry/node-core": "9.47.1", + "@sentry/opentelemetry": "9.47.1", + "import-in-the-middle": "^1.14.2", + "minimatch": "^9.0.0" }, "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/@sentry/hub/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@sentry/minimal": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", - "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", + "node_modules/@sentry/node-core": { + "version": "9.47.1", + "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-9.47.1.tgz", + "integrity": "sha512-7TEOiCGkyShJ8CKtsri9lbgMCbB+qNts2Xq37itiMPN2m+lIukK3OX//L8DC5nfKYZlgikrefS63/vJtm669hQ==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/hub": "6.19.7", - "@sentry/types": "6.19.7", - "tslib": "^1.9.3" + "@sentry/core": "9.47.1", + "@sentry/opentelemetry": "9.47.1", + "import-in-the-middle": "^1.14.2" }, "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/minimal/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@sentry/node": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.7.tgz", - "integrity": "sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==", - "dev": true, - "dependencies": { - "@sentry/core": "6.19.7", - "@sentry/hub": "6.19.7", - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" + "node": ">=18" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/node/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@sentry/types": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", - "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==", - "dev": true, - "engines": { - "node": ">=6" + "peerDependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.0.0", + "@opentelemetry/core": "^1.30.1 || ^2.0.0", + "@opentelemetry/instrumentation": ">=0.57.1 <1", + "@opentelemetry/resources": "^1.30.1 || ^2.0.0", + "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.0.0", + "@opentelemetry/semantic-conventions": "^1.34.0" } }, - "node_modules/@sentry/utils": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", - "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", + "node_modules/@sentry/opentelemetry": { + "version": "9.47.1", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-9.47.1.tgz", + "integrity": "sha512-STtFpjF7lwzeoedDJV+5XA6P89BfmFwFftmHSGSe3UTI8z8IoiR5yB6X2vCjSPvXlfeOs13qCNNCEZyznxM8Xw==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/types": "6.19.7", - "tslib": "^1.9.3" + "@sentry/core": "9.47.1" }, "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/utils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@sideway/address": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "dev": true, - "dependencies": { - "@hapi/hoek": "^9.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.0.0", + "@opentelemetry/core": "^1.30.1 || ^2.0.0", + "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.0.0", + "@opentelemetry/semantic-conventions": "^1.34.0" } }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true - }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } @@ -3947,10 +5564,51 @@ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@stylistic/stylelint-plugin": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@stylistic/stylelint-plugin/-/stylelint-plugin-3.1.3.tgz", + "integrity": "sha512-85fsmzgsIVmyG3/GFrjuYj6Cz8rAM7IZiPiXCMiSMfoDOC1lOrzrXPDk24WqviAghnPqGpx8b0caK2PuewWGFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", + "@csstools/media-query-list-parser": "^3.0.1", + "is-plain-object": "^5.0.0", + "postcss": "^8.4.41", + "postcss-selector-parser": "^6.1.2", + "postcss-value-parser": "^4.2.0", + "style-search": "^0.1.0" + }, + "engines": { + "node": "^18.12 || >=20.9" + }, + "peerDependencies": { + "stylelint": "^16.8.0" + } + }, + "node_modules/@stylistic/stylelint-plugin/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", @@ -4208,51 +5866,12 @@ "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@tannin/compile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/compile/-/compile-1.1.0.tgz", - "integrity": "sha512-n8m9eNDfoNZoxdvWiTfW/hSPhehzLJ3zW7f8E7oT6mCROoMNWCB4TYtv041+2FMAxweiE0j7i1jubQU4MEC/Gg==", - "dev": true, - "dependencies": { - "@tannin/evaluate": "^1.2.0", - "@tannin/postfix": "^1.1.0" - } - }, - "node_modules/@tannin/evaluate": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tannin/evaluate/-/evaluate-1.2.0.tgz", - "integrity": "sha512-3ioXvNowbO/wSrxsDG5DKIMxC81P0QrQTYai8zFNY+umuoHWRPbQ/TuuDEOju9E+jQDXmj6yI5GyejNuh8I+eg==", - "dev": true - }, - "node_modules/@tannin/plural-forms": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/plural-forms/-/plural-forms-1.1.0.tgz", - "integrity": "sha512-xl9R2mDZO/qiHam1AgMnAES6IKIg7OBhcXqy6eDsRCdXuxAFPcjrej9HMjyCLE0DJ/8cHf0i5OQTstuBRhpbHw==", - "dev": true, - "dependencies": { - "@tannin/compile": "^1.1.0" - } - }, - "node_modules/@tannin/postfix": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/postfix/-/postfix-1.1.0.tgz", - "integrity": "sha512-oocsqY7g0cR+Gur5jRQLSrX2OtpMLMse1I10JQBm8CdGMrDkh1Mg2gjsiquMHRtBs4Qwu5wgEp5GgIYHk4SNPw==", - "dev": true - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, "node_modules/@tootallnate/quickjs-emscripten": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@trysound/sax": { "version": "0.2.0", @@ -4263,6 +5882,17 @@ "node": ">=10.13.0" } }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -4309,6 +5939,7 @@ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "dev": true, + "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -4319,6 +5950,7 @@ "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -4328,6 +5960,7 @@ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -4337,6 +5970,7 @@ "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dev": true, + "license": "MIT", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" @@ -4375,34 +6009,24 @@ "dev": true }, "node_modules/@types/express": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz", - "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==", + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", "dev": true, + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", - "@types/serve-static": "*" + "@types/serve-static": "^1" } }, "node_modules/@types/express-serve-static-core": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz", - "integrity": "sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/express/node_modules/@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "version": "4.19.8", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -4410,21 +6034,12 @@ "@types/send": "*" } }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, "node_modules/@types/graceful-fs": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -4433,13 +6048,15 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/http-proxy": { - "version": "1.17.16", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", - "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -4448,13 +6065,15 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" } @@ -4464,15 +6083,17 @@ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "version": "21.1.7", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", + "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/tough-cookie": "*", @@ -4489,29 +6110,32 @@ "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-6.0.0.tgz", - "integrity": "sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==", - "deprecated": "This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed.", "dev": true, - "dependencies": { - "minimatch": "*" - } + "license": "MIT" }, "node_modules/@types/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mysql": { + "version": "2.15.26", + "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz", + "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } }, "node_modules/@types/node": { "version": "24.4.0", @@ -4522,20 +6146,12 @@ "undici-types": "~7.11.0" } }, - "node_modules/@types/node-forge": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", - "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/normalize-package-data": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/parse-json": { "version": "4.0.2", @@ -4543,37 +6159,91 @@ "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", "dev": true }, + "node_modules/@types/pg": { + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", + "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" + } + }, + "node_modules/@types/pg-pool": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.6.tgz", + "integrity": "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/pg": "*" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.27", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.27.tgz", + "integrity": "sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" + } }, "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true, + "license": "MIT" }, "node_modules/@types/semver": { "version": "7.7.1", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/send": { - "version": "0.17.5", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", - "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/mime": "^1", "@types/node": "*" } }, @@ -4582,26 +6252,47 @@ "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, + "license": "MIT", "dependencies": { "@types/express": "*" } }, "node_modules/@types/serve-static": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz", - "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", - "@types/send": "*" + "@types/send": "<1" } }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/shimmer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", + "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/sockjs": { "version": "0.3.36", "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -4610,31 +6301,49 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.6.tgz", "integrity": "sha512-5JcVt1u5HDmlXkwOD2nslZVllBBc7HDuOICfiZah2Z0is8M8g+ddAEawbmd3VjedfDHBzxCaXLs07QEmb7y54g==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/tapable": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.12.tgz", "integrity": "sha512-bTHG8fcxEqv1M9+TD14P8ok8hjxoOCkfKc8XXLaaD05kI7ohpeI956jtDOD3XHKBQrlyPughUtzm1jtVhHpA5Q==", - "dev": true + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/@types/tedious": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.14.tgz", + "integrity": "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } }, "node_modules/@types/tough-cookie": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/uglify-js": { "version": "3.17.5", "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.5.tgz", "integrity": "sha512-TU+fZFBTBcXj/GpDpDaBmgWk/gn96kMZ+uocaFUlV2f8a6WdMzzI44QBCmGcCiYR0Y6ZlNRiyUyKKt5nl/lbzQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "source-map": "^0.6.1" } @@ -4644,6 +6353,8 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -4653,6 +6364,8 @@ "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.40.tgz", "integrity": "sha512-u6kMFSBM9HcoTpUXnL6mt2HSzftqb3JgYV6oxIgL2dl6sX6aCa5k6SOkzv5DuZjBTPUE/dJltKtwwuqrkZHpfw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@types/node": "*", "@types/tapable": "^1", @@ -4667,6 +6380,8 @@ "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@types/node": "*", "@types/source-list-map": "*", @@ -4678,6 +6393,8 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -4687,15 +6404,17 @@ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } @@ -4704,13 +6423,15 @@ "version": "21.0.3", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/yauzl": { "version": "2.10.3", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@types/node": "*" @@ -4721,6 +6442,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.5.1", "@typescript-eslint/scope-manager": "6.21.0", @@ -4752,10 +6474,11 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -4768,6 +6491,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "6.21.0", "@typescript-eslint/types": "6.21.0", @@ -4796,6 +6520,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "6.21.0", "@typescript-eslint/visitor-keys": "6.21.0" @@ -4813,6 +6538,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "6.21.0", "@typescript-eslint/utils": "6.21.0", @@ -4840,6 +6566,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", "dev": true, + "license": "MIT", "engines": { "node": "^16.0.0 || >=18.0.0" }, @@ -4853,6 +6580,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "6.21.0", "@typescript-eslint/visitor-keys": "6.21.0", @@ -4877,10 +6605,11 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -4893,6 +6622,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", @@ -4914,51 +6644,323 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" + "@napi-rs/wasm-runtime": "^0.2.11" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=14.0.0" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, "node_modules/@vitejs/plugin-react": { "version": "4.7.0", @@ -5138,42 +7140,45 @@ } }, "node_modules/@webpack-cli/configtest": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", + "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=14.15.0" + "node": ">=18.12.0" }, "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" } }, "node_modules/@webpack-cli/info": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", + "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=14.15.0" + "node": ">=18.12.0" }, "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" } }, "node_modules/@webpack-cli/serve": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", + "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=14.15.0" + "node": ">=18.12.0" }, "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" }, "peerDependenciesMeta": { "webpack-dev-server": { @@ -5181,124 +7186,334 @@ } } }, - "node_modules/@wordpress/api-fetch": { - "version": "6.55.0", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-6.55.0.tgz", - "integrity": "sha512-1HrCUsJdeRY5Y0IjplotINwqMRO81e7O7VhBScuKk7iOuDm/E1ioKv2uLGnPNWziYu+Zf025byxOqVzXDyM2gw==", + "node_modules/@wordpress/babel-preset-default": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-8.38.0.tgz", + "integrity": "sha512-5DxPlGcB2EDpZjYI9FD1rOcYRaYuPr9EXNhDsiX+Mbxgj6ZZvWeJAT+E/8YlAOO969skUjxk/BIScQRSE99HbA==", "dev": true, + "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/i18n": "^4.58.0", - "@wordpress/url": "^3.59.0" + "@babel/core": "7.25.7", + "@babel/plugin-syntax-import-attributes": "7.26.0", + "@babel/plugin-transform-react-jsx": "7.25.7", + "@babel/plugin-transform-runtime": "7.25.7", + "@babel/preset-env": "7.25.7", + "@babel/preset-typescript": "7.25.7", + "@wordpress/browserslist-config": "^6.38.0", + "@wordpress/warning": "^3.38.0", + "browserslist": "^4.21.10", + "core-js": "^3.31.0", + "react": "^18.3.0" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, - "node_modules/@wordpress/babel-plugin-import-jsx-pragma": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@wordpress/babel-plugin-import-jsx-pragma/-/babel-plugin-import-jsx-pragma-4.41.0.tgz", - "integrity": "sha512-hYxj2Uobxk86ctlfaJou9v13XqXZ30yx4ZwRNu5cH5/LWXe2MIXBTPv7dUk6wqN/qFOjsFvP9jCB0NsW6MnkrA==", + "node_modules/@wordpress/babel-preset-default/node_modules/@babel/core": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz", + "integrity": "sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==", "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helpers": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, "engines": { - "node": ">=14" + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@wordpress/babel-preset-default/node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.12.9" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@wordpress/babel-preset-default": { - "version": "7.42.0", - "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-7.42.0.tgz", - "integrity": "sha512-AWSxWuEuzazt/nWomKiaVhYQeXuqxTniPCKhvks58wB3P4UXvSe3hRnO+nujz20IuxIk2xHT6x47HgpDZy30jw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.16.0", - "@babel/plugin-transform-react-jsx": "^7.16.0", - "@babel/plugin-transform-runtime": "^7.16.0", - "@babel/preset-env": "^7.16.0", - "@babel/preset-typescript": "^7.16.0", - "@babel/runtime": "^7.16.0", - "@wordpress/babel-plugin-import-jsx-pragma": "^4.41.0", - "@wordpress/browserslist-config": "^5.41.0", - "@wordpress/warning": "^2.58.0", - "browserslist": "^4.21.10", - "core-js": "^3.31.0", - "react": "^18.3.0" + "node_modules/@wordpress/babel-preset-default/node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.7.tgz", + "integrity": "sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/plugin-syntax-jsx": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { - "node": ">=14" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@wordpress/babel-preset-default/node_modules/@babel/preset-env": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.7.tgz", + "integrity": "sha512-Gibz4OUdyNqqLj+7OAvBZxOD7CklCtMA5/j0JgUEwOnaRULsPDXmic2iKxL2DX2vQduPR5wH2hjZas/Vr/Oc0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.7", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.25.7", + "@babel/plugin-syntax-import-attributes": "^7.25.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.25.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.7", + "@babel/plugin-transform-async-to-generator": "^7.25.7", + "@babel/plugin-transform-block-scoped-functions": "^7.25.7", + "@babel/plugin-transform-block-scoping": "^7.25.7", + "@babel/plugin-transform-class-properties": "^7.25.7", + "@babel/plugin-transform-class-static-block": "^7.25.7", + "@babel/plugin-transform-classes": "^7.25.7", + "@babel/plugin-transform-computed-properties": "^7.25.7", + "@babel/plugin-transform-destructuring": "^7.25.7", + "@babel/plugin-transform-dotall-regex": "^7.25.7", + "@babel/plugin-transform-duplicate-keys": "^7.25.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.7", + "@babel/plugin-transform-dynamic-import": "^7.25.7", + "@babel/plugin-transform-exponentiation-operator": "^7.25.7", + "@babel/plugin-transform-export-namespace-from": "^7.25.7", + "@babel/plugin-transform-for-of": "^7.25.7", + "@babel/plugin-transform-function-name": "^7.25.7", + "@babel/plugin-transform-json-strings": "^7.25.7", + "@babel/plugin-transform-literals": "^7.25.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.7", + "@babel/plugin-transform-member-expression-literals": "^7.25.7", + "@babel/plugin-transform-modules-amd": "^7.25.7", + "@babel/plugin-transform-modules-commonjs": "^7.25.7", + "@babel/plugin-transform-modules-systemjs": "^7.25.7", + "@babel/plugin-transform-modules-umd": "^7.25.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.7", + "@babel/plugin-transform-new-target": "^7.25.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.7", + "@babel/plugin-transform-numeric-separator": "^7.25.7", + "@babel/plugin-transform-object-rest-spread": "^7.25.7", + "@babel/plugin-transform-object-super": "^7.25.7", + "@babel/plugin-transform-optional-catch-binding": "^7.25.7", + "@babel/plugin-transform-optional-chaining": "^7.25.7", + "@babel/plugin-transform-parameters": "^7.25.7", + "@babel/plugin-transform-private-methods": "^7.25.7", + "@babel/plugin-transform-private-property-in-object": "^7.25.7", + "@babel/plugin-transform-property-literals": "^7.25.7", + "@babel/plugin-transform-regenerator": "^7.25.7", + "@babel/plugin-transform-reserved-words": "^7.25.7", + "@babel/plugin-transform-shorthand-properties": "^7.25.7", + "@babel/plugin-transform-spread": "^7.25.7", + "@babel/plugin-transform-sticky-regex": "^7.25.7", + "@babel/plugin-transform-template-literals": "^7.25.7", + "@babel/plugin-transform-typeof-symbol": "^7.25.7", + "@babel/plugin-transform-unicode-escapes": "^7.25.7", + "@babel/plugin-transform-unicode-property-regex": "^7.25.7", + "@babel/plugin-transform-unicode-regex": "^7.25.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.38.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@wordpress/babel-preset-default/node_modules/@babel/preset-typescript": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.25.7.tgz", + "integrity": "sha512-rkkpaXJZOFN45Fb+Gki0c+KMIglk4+zZXOoMJuyEK8y8Kkc8Jd3BDmP7qPsz0zQMJj+UD7EprF+AqAXcILnexw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "@babel/plugin-syntax-jsx": "^7.25.7", + "@babel/plugin-transform-modules-commonjs": "^7.25.7", + "@babel/plugin-transform-typescript": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@wordpress/babel-preset-default/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@wordpress/base-styles": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-4.49.0.tgz", - "integrity": "sha512-yFRYqNtd26ULZ0oAHhCu/IcaA0XHI3E7kRCKajZqUvyRQj7YprXnpD3o0/pnwvF6ZFTXzCX8pXHjUc2TIv97ig==", - "dev": true + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-6.14.0.tgz", + "integrity": "sha512-0NoWb5+gVGUMZ8RiAE4g4dJ08ZdSMrWdnt/fp//BclezTdOLepZPzZ9O6nDWLVdlNgnYLhPwK/t5jxOow5WRoA==", + "dev": true, + "license": "GPL-2.0-or-later", + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } }, "node_modules/@wordpress/browserslist-config": { - "version": "5.41.0", - "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-5.41.0.tgz", - "integrity": "sha512-J7ejzzDpPZddVIiq2YiK8J/pNTJDy3X1s+5ZtwkwklCxBMZJurxf9pEhtbaf7us0Q6c1j8Ubv7Fpx3lqk2ypxA==", + "version": "6.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-6.38.0.tgz", + "integrity": "sha512-cLm8mg7jHdajpkuC0ohjy1/DWB7X/mrW8N5spA0ukKfj+CbJi7+PVFeeEPCjDLEybnlqrVCJ8VaLaxde+xU3UA==", "dev": true, + "license": "GPL-2.0-or-later", "engines": { - "node": ">=14" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, "node_modules/@wordpress/dependency-extraction-webpack-plugin": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-4.31.0.tgz", - "integrity": "sha512-Xpm8EEhi6e8GL1juYh/70AFbcE/ZVXJ3p47KMkkEsn5t+hG9QHjKe2lTj98v2r3rB+ampoK+whdV1w6gItXYpw==", + "version": "6.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-6.38.0.tgz", + "integrity": "sha512-N/wjZ7Ne5D3ASXgEqKhLeAsbYPUtmSAXmyd31dMChIP6HnN9kuN+iyrxNR3COg2VoW7K9VAhwTzEEGQrOQv/rw==", "dev": true, + "license": "GPL-2.0-or-later", "dependencies": { - "json2php": "^0.0.7", - "webpack-sources": "^3.2.2" + "json2php": "^0.0.7" }, "engines": { - "node": ">=14" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { - "webpack": "^4.8.3 || ^5.0.0" + "webpack": "^5.0.0" } }, - "node_modules/@wordpress/e2e-test-utils-playwright": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-0.16.0.tgz", - "integrity": "sha512-CktRj5/Cc/pAvTHXIAPIMrmmnb0VjtXbTGSjYG6pW/JI2YAmpwY2yBA+DlHJjqOIpcjDDj+sSsJomRSxT2chwQ==", + "node_modules/@wordpress/dependency-extraction-webpack-plugin/node_modules/json2php": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/json2php/-/json2php-0.0.7.tgz", + "integrity": "sha512-dnSoUiLAoVaMXxFsVi4CrPVYMKOuDBXTghXSmMINX44RZ8WM9cXlY7UqrQnlAcODCVO7FV3+8t/5nDKAjimLfg==", + "dev": true, + "license": "BSD" + }, + "node_modules/@wordpress/element": { + "version": "6.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-6.38.0.tgz", + "integrity": "sha512-4N9xtuE2TIvaZ037fQREKrBw4TTt90PWswAfNFvxUVu5vdp91PLuR6rmeO0ohKg2CJLzozQLEKZF+6VuSaYowQ==", "dev": true, + "license": "GPL-2.0-or-later", "dependencies": { - "@wordpress/api-fetch": "^6.45.0", - "@wordpress/keycodes": "^3.48.0", - "@wordpress/url": "^3.49.0", + "@types/react": "^18.3.27", + "@types/react-dom": "^18.3.1", + "@wordpress/escape-html": "^3.38.0", "change-case": "^4.1.2", - "form-data": "^4.0.0", - "get-port": "^5.1.1", - "lighthouse": "^10.4.0", - "mime": "^3.0.0", - "web-vitals": "^3.5.0" + "is-plain-object": "^5.0.0", + "react": "^18.3.0", + "react-dom": "^18.3.0" }, "engines": { - "node": ">=12" - }, - "peerDependencies": { - "@playwright/test": ">=1" + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, + "node_modules/@wordpress/element/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/escape-html": { + "version": "3.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.38.0.tgz", + "integrity": "sha512-LItqIdFnn/JAVEzTtvDZGJfsdmzeIE4ryMjovHkJhRElzcQWKHuq806DMprL40NcvJbdn0YfJZSv+aeP+9Ah3g==", + "dev": true, + "license": "GPL-2.0-or-later", + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, "node_modules/@wordpress/eslint-plugin": { - "version": "17.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-17.13.0.tgz", - "integrity": "sha512-QnG5HmOd+XsweKOvrqbOugm9rINUjcsh1jo2SN4cbbTWZJ6nPmcfLS0YJdrKkgOQUnKDPQgBPVEyI8tp19OtBw==", + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-24.0.0.tgz", + "integrity": "sha512-FXf427hQNXymMxk+qvzejXLEnnn64aGNHBEDMUYpt4MJx98+Upo2uYG0JGWm5y/Aqm+rBlGgdyNsQjjSB+Q6pQ==", "dev": true, + "license": "GPL-2.0-or-later", "dependencies": { - "@babel/eslint-parser": "^7.16.0", + "@babel/eslint-parser": "7.25.7", "@typescript-eslint/eslint-plugin": "^6.4.1", "@typescript-eslint/parser": "^6.4.1", - "@wordpress/babel-preset-default": "^7.40.0", - "@wordpress/prettier-config": "^3.13.0", + "@wordpress/babel-preset-default": "^8.38.0", + "@wordpress/prettier-config": "^4.38.0", + "@wordpress/theme": "^0.5.0", "cosmiconfig": "^7.0.0", "eslint-config-prettier": "^8.3.0", + "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-import": "^2.25.2", - "eslint-plugin-jest": "^27.2.3", + "eslint-plugin-jest": "^27.4.3", "eslint-plugin-jsdoc": "^46.4.6", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-playwright": "^0.15.3", @@ -5309,14 +7524,14 @@ "requireindex": "^1.2.0" }, "engines": { - "node": ">=14", - "npm": ">=6.14.4" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { "@babel/core": ">=7", "eslint": ">=8", "prettier": ">=3", - "typescript": ">=4" + "typescript": ">=5" }, "peerDependenciesMeta": { "prettier": { @@ -5332,6 +7547,7 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -5343,185 +7559,203 @@ "node": ">=10" } }, - "node_modules/@wordpress/hooks": { - "version": "3.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.58.0.tgz", - "integrity": "sha512-9LB0ZHnZRQlORttux9t/xbAskF+dk2ujqzPGsVzc92mSKpQP3K2a5Wy74fUnInguB1vLUNHT6nrNdkVom5qX1Q==", + "node_modules/@wordpress/eslint-plugin/node_modules/eslint-config-prettier": { + "version": "8.10.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", + "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.16.0" + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/@wordpress/i18n": { - "version": "4.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.58.0.tgz", - "integrity": "sha512-VfvS3BWv/RDjRKD6PscIcvYfWKnGJcI/DEqyDgUMhxCM6NRwoL478CsUKTiGJIymeyRodNRfprdcF086DpGKYw==", + "node_modules/@wordpress/eslint-plugin/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.58.0", - "gettext-parser": "^1.3.1", - "memize": "^2.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" + "type-fest": "^0.20.2" }, - "bin": { - "pot-to-php": "tools/pot-to-php.js" + "engines": { + "node": ">=8" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wordpress/eslint-plugin/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=12" + "node": ">= 6" } }, "node_modules/@wordpress/jest-console": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-7.29.0.tgz", - "integrity": "sha512-/9PZJhyszdRX4mka7t1WzoooM+Q/DwC4jkNVtJxqci5lbL3Lrhy1cCJGCgMr1n/9w+zs7eLmExFBvV4v44iyNw==", + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-8.38.0.tgz", + "integrity": "sha512-pRvWbxr/PHs2IsjsVvb9kBgqcxOcPnTN/baOmmEJFHVtOa5hp/ze6zbz/c18RCmrxWt5doRwHpfH84M/yivo2A==", "dev": true, + "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "jest-matcher-utils": "^29.6.2" + "jest-matcher-utils": "^29.6.2", + "jest-mock": "^29.6.2" }, "engines": { - "node": ">=14" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { "jest": ">=29" } }, "node_modules/@wordpress/jest-preset-default": { - "version": "11.29.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-11.29.0.tgz", - "integrity": "sha512-7LA0ZS5t0Thn7xrdwPL3hLgjB9LKloneGhMwnnDUTgJP330lyfdDfJ+O6Lnz3iL+bg68mkA3AzrT9Fs9f3WKww==", + "version": "12.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-12.38.0.tgz", + "integrity": "sha512-rAEYTMbpmfhYA5p3HmkhsTXM3rHq+4mdmt8xS5izXn5SzZdsHs+oa1Ej9COMi6xThpMN5i0+N+vz3HDzAMLCsg==", "dev": true, + "license": "GPL-2.0-or-later", "dependencies": { - "@wordpress/jest-console": "^7.29.0", - "babel-jest": "^29.6.2" + "@wordpress/jest-console": "^8.38.0", + "babel-jest": "29.7.0" }, "engines": { - "node": ">=14" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { "@babel/core": ">=7", "jest": ">=29" } }, - "node_modules/@wordpress/keycodes": { - "version": "3.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.58.0.tgz", - "integrity": "sha512-Q/LRKpx8ndzuHlkxSQ2BD+NTYYKQPIneNNMng8hTAfyU7RFwXpqj06HpeOFGh4XIdPKCs/8hmucoLJRmmLmZJA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/i18n": "^4.58.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/npm-package-json-lint-config": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-4.43.0.tgz", - "integrity": "sha512-XSb7AdDC7yGTBVYeRM4oqmOygEB+/+tk7lobLIGDmlZJs+M3F/NUvQq0Vcas1pojq2fyPYTUwOlu81ga33fNwQ==", + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-5.38.0.tgz", + "integrity": "sha512-/8oarSArKiN2ZUTCexn27YQLPXpxmNAYQEzgubmALtR5wGWnMwpCw9bt/+/cG6t6o1YaAN8ZOO3gattQYssYrA==", "dev": true, + "license": "GPL-2.0-or-later", "engines": { - "node": ">=14" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { "npm-package-json-lint": ">=6.0.0" } }, "node_modules/@wordpress/postcss-plugins-preset": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-4.42.0.tgz", - "integrity": "sha512-5xmKF7IUsqS5JcmJlHKHq7RaR6ZpaLj3n9c+X0X0/Oo7ZCIGp6WeDQngx13sH4NJoKXrZ9g4n1rbzhEKeo/Wtg==", + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-5.38.0.tgz", + "integrity": "sha512-I8QFM8pPv04VTvakhIqRL5CU8s6Irf7onixBjXD95+ae3kmVJY548mp7cBU5MV9n92IZbGbwLjhaOIegS3QxfQ==", "dev": true, + "license": "GPL-2.0-or-later", "dependencies": { - "@wordpress/base-styles": "^4.49.0", - "autoprefixer": "^10.2.5" + "@wordpress/base-styles": "^6.14.0", + "autoprefixer": "^10.4.20", + "postcss-import": "^16.1.1" }, "engines": { - "node": ">=14" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { "postcss": "^8.0.0" } }, "node_modules/@wordpress/prettier-config": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-3.15.0.tgz", - "integrity": "sha512-exC2rkEioTt//AnzPRyaaFv8FNYIvamPDytNol5bKQ6Qh65QSdZZE9V+GtRCrIPL7/Bq6xba03XuRVxl9TjtJg==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-4.38.0.tgz", + "integrity": "sha512-kWGpmmkIvvObtteeOBkZM3GiTOL8tBkccBJwIWV7kBIC71HrBERnvQZKga84QW5thdt+S0ccjBZk41saEGXavw==", "dev": true, + "license": "GPL-2.0-or-later", "engines": { - "node": ">=14" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { "prettier": ">=3" } }, + "node_modules/@wordpress/private-apis": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-1.38.0.tgz", + "integrity": "sha512-6Hj9x3xJb64Xu/p2M4XA9fGeY2omTly2bb+Kayaa55eEZi6iXlcIhvv7UAdKhJ2PF9hfuENccgqhG7OrvaEEJg==", + "dev": true, + "license": "GPL-2.0-or-later", + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + } + }, "node_modules/@wordpress/scripts": { - "version": "26.19.0", - "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-26.19.0.tgz", - "integrity": "sha512-m3QYlgpWRfIqCfU4jWKwGeA12Qkt6d9CMewEIxIBGVlEGd/sL5rU1fM7LKNBEbSPQpaOTWJApNGWPcW75Fwp+w==", + "version": "31.3.0", + "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-31.3.0.tgz", + "integrity": "sha512-gZiw7y3/tNbzxcW4IXBszyTzP7KkZivDGAvL01sJ1bcVTTuD4LyQ4MXhesCUYEYXPkSRNQh1Q4oAXk1FH3DlSQ==", "dev": true, + "license": "GPL-2.0-or-later", "dependencies": { - "@babel/core": "^7.16.0", + "@babel/core": "7.25.7", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", "@svgr/webpack": "^8.0.1", - "@wordpress/babel-preset-default": "^7.32.0", - "@wordpress/browserslist-config": "^5.31.0", - "@wordpress/dependency-extraction-webpack-plugin": "^4.31.0", - "@wordpress/e2e-test-utils-playwright": "^0.16.0", - "@wordpress/eslint-plugin": "^17.5.0", - "@wordpress/jest-preset-default": "^11.19.0", - "@wordpress/npm-package-json-lint-config": "^4.33.0", - "@wordpress/postcss-plugins-preset": "^4.32.0", - "@wordpress/prettier-config": "^3.5.0", - "@wordpress/stylelint-config": "^21.31.0", + "@wordpress/babel-preset-default": "^8.38.0", + "@wordpress/browserslist-config": "^6.38.0", + "@wordpress/dependency-extraction-webpack-plugin": "^6.38.0", + "@wordpress/e2e-test-utils-playwright": "^1.38.0", + "@wordpress/eslint-plugin": "^24.0.0", + "@wordpress/jest-preset-default": "^12.38.0", + "@wordpress/npm-package-json-lint-config": "^5.38.0", + "@wordpress/postcss-plugins-preset": "^5.38.0", + "@wordpress/prettier-config": "^4.38.0", + "@wordpress/stylelint-config": "^23.30.0", "adm-zip": "^0.5.9", - "babel-jest": "^29.6.2", - "babel-loader": "^8.2.3", + "babel-jest": "29.7.0", + "babel-loader": "9.2.1", "browserslist": "^4.21.10", "chalk": "^4.0.0", "check-node-version": "^4.1.0", - "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^10.2.0", - "cross-spawn": "^5.1.0", + "cross-spawn": "^7.0.6", "css-loader": "^6.2.0", "cssnano": "^6.0.1", "cwd": "^0.10.0", "dir-glob": "^3.0.1", - "eslint": "^8.3.0", + "eslint": "^8.57.1", "expect-puppeteer": "^4.4.0", "fast-glob": "^3.2.7", "filenamify": "^4.2.0", "jest": "^29.6.2", - "jest-dev-server": "^9.0.1", - "jest-environment-jsdom": "^29.6.2", + "jest-dev-server": "^10.1.4", + "jest-environment-jsdom": "^30.2.0", "jest-environment-node": "^29.6.2", + "json2php": "^0.0.9", "markdownlint-cli": "^0.31.1", "merge-deep": "^3.0.3", - "mini-css-extract-plugin": "^2.5.1", + "mini-css-extract-plugin": "^2.9.2", "minimist": "^1.2.0", "npm-package-json-lint": "^6.4.0", "npm-packlist": "^3.0.0", - "playwright-core": "1.39.0", "postcss": "^8.4.5", "postcss-loader": "^6.2.1", "prettier": "npm:wp-prettier@3.0.3", - "puppeteer-core": "^13.2.0", + "puppeteer-core": "^23.10.1", "react-refresh": "^0.14.0", "read-pkg-up": "^7.0.1", "resolve-bin": "^0.4.0", - "sass": "^1.35.2", - "sass-loader": "^12.1.0", + "rtlcss": "^4.3.0", + "sass": "^1.54.0", + "sass-loader": "^16.0.3", + "schema-utils": "^4.2.0", "source-map-loader": "^3.0.0", - "stylelint": "^14.2.0", - "terser-webpack-plugin": "^5.3.9", + "stylelint": "^16.8.2", + "terser-webpack-plugin": "^5.3.10", "url-loader": "^4.1.1", - "webpack": "^5.88.2", + "webpack": "^5.97.0", "webpack-bundle-analyzer": "^4.9.1", "webpack-cli": "^5.1.4", "webpack-dev-server": "^4.15.1" @@ -5530,51 +7764,336 @@ "wp-scripts": "bin/wp-scripts.js" }, "engines": { - "node": ">=14", - "npm": ">=6.14.4" + "node": ">=18.12.0", + "npm": ">=8.19.2" }, "peerDependencies": { - "@playwright/test": "^1.39.0", + "@playwright/test": "^1.57.0", + "@wordpress/env": "^10.0.0", "react": "^18.0.0", "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "@wordpress/env": { + "optional": true + } } }, - "node_modules/@wordpress/stylelint-config": { - "version": "21.41.0", - "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-21.41.0.tgz", - "integrity": "sha512-2wxFu8ICeRGF3Lxz7H7o2SU1u6pTI4mjuog39DgtCNb+v+f6yhgREDuNQEeti3Svb0rjj63AJ7r2CqLZk+EQIQ==", + "node_modules/@wordpress/scripts/node_modules/@babel/core": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz", + "integrity": "sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helpers": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@wordpress/scripts/node_modules/@types/node": { + "version": "20.19.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.30.tgz", + "integrity": "sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@wordpress/scripts/node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@wordpress/scripts/node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@wordpress/scripts/node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@wordpress/scripts/node_modules/@wordpress/e2e-test-utils-playwright": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-1.38.0.tgz", + "integrity": "sha512-/3Qo6/N5BtCbQJJShy3pY5xr68OkMctouYcz1mvL8Q8tMO1fdiZTlJvU9bSMwdM1G1NEbE8pa/9q2F1Va/2S2A==", + "dev": true, + "license": "GPL-2.0-or-later", + "dependencies": { + "change-case": "^4.1.2", + "get-port": "^5.1.1", + "lighthouse": "^12.2.2", + "mime": "^3.0.0", + "web-vitals": "^4.2.1" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "@playwright/test": ">=1", + "@types/node": "^20.17.10" + } + }, + "node_modules/@wordpress/scripts/node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, + "license": "MIT", "dependencies": { - "stylelint-config-recommended": "^6.0.0", - "stylelint-config-recommended-scss": "^5.0.2" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@wordpress/scripts/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@wordpress/scripts/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@wordpress/scripts/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@wordpress/scripts/node_modules/prettier": { + "name": "wp-prettier", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-3.0.3.tgz", + "integrity": "sha512-X4UlrxDTH8oom9qXlcjnydsjAOD2BmB6yFmvS4Z2zdTzqqpRWb+fbqrH412+l+OUXmbzJlSXjlMFYPgYG12IAA==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" }, "engines": { "node": ">=14" }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/@wordpress/scripts/node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wordpress/scripts/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@wordpress/scripts/node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@wordpress/scripts/node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@wordpress/stylelint-config": { + "version": "23.30.0", + "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-23.30.0.tgz", + "integrity": "sha512-35s8w52ZxTVkvllBSCMbV2cFLQjHd+8FzROUIBW0OaUlZum3bQXnz2I3Q71e6fG2/jXvXVrHRh45P2oIhWnKPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@stylistic/stylelint-plugin": "^3.0.1", + "@wordpress/theme": "^0.5.0", + "stylelint-config-recommended": "^14.0.1", + "stylelint-config-recommended-scss": "^14.1.0" + }, + "engines": { + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, "peerDependencies": { - "stylelint": "^14.2" + "stylelint": "^16.8.2", + "stylelint-scss": "^6.4.0" } }, - "node_modules/@wordpress/url": { - "version": "3.59.0", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.59.0.tgz", - "integrity": "sha512-GxvoMjYCav0w4CiX0i0h3qflrE/9rhLIZg5aPCQjbrBdwTxYR3Exfw0IJYcmVaTKXQOUU8fOxlDxULsbLmKe9w==", + "node_modules/@wordpress/theme": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@wordpress/theme/-/theme-0.5.0.tgz", + "integrity": "sha512-6V14snLXUqVs3fBPmGJhWkgtWcrwEe7vUS04nTl7hyI5uyL+N7LXRldWTjnzwaQL0ywBIx4u13gJU/GZqOc8dQ==", "dev": true, + "license": "GPL-2.0-or-later", "dependencies": { - "@babel/runtime": "^7.16.0", - "remove-accents": "^0.5.0" + "@wordpress/element": "^6.38.0", + "@wordpress/private-apis": "^1.38.0", + "colorjs.io": "^0.6.0", + "memize": "^2.1.0" }, "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0", + "stylelint": "^16.8.2" + }, + "peerDependenciesMeta": { + "stylelint": { + "optional": true + } } }, "node_modules/@wordpress/warning": { - "version": "2.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.58.0.tgz", - "integrity": "sha512-9bZlORhyMY2nbWozeyC5kqJsFzEPP4DCLhGmjtbv+YWGHttUrxUZEfrKdqO+rUODA8rP5zeIly1nCQOUnkw4Lg==", + "version": "3.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.38.0.tgz", + "integrity": "sha512-4eHJoNC/Ofrp+hOIf/2KqSoyIZLFIoyAhfTBrFxq3bGKNFJlOEHAJ3+tGiy77Ja93uQzrSWctZsH1CpSRYKkng==", "dev": true, + "license": "GPL-2.0-or-later", "engines": { - "node": ">=12" + "node": ">=18.12.0", + "npm": ">=8.19.2" } }, "node_modules/@xstate/fsm": { @@ -5607,6 +8126,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -5620,6 +8140,7 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5636,14 +8157,14 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" + "license": "MIT", + "peerDependencies": { + "acorn": "^8" } }, "node_modules/acorn-import-phases": { @@ -5689,15 +8210,13 @@ } }, "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, - "dependencies": { - "debug": "4" - }, + "license": "MIT", "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/ajv": { @@ -5721,6 +8240,7 @@ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": ">=5.0.0" } @@ -5778,6 +8298,7 @@ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5787,6 +8308,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -5802,6 +8324,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -5829,6 +8352,7 @@ "engines": [ "node >= 0.8.0" ], + "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } @@ -5875,6 +8399,7 @@ "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" } @@ -5884,16 +8409,11 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, - "node_modules/argparse/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, "node_modules/aria-query": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", @@ -5932,7 +8452,8 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/array-includes": { "version": "3.1.9", @@ -5961,19 +8482,11 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array.prototype.findlast": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", @@ -5999,6 +8512,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", @@ -6093,15 +8607,32 @@ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/asn1js": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz", + "integrity": "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/ast-types": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.1" }, @@ -6120,6 +8651,7 @@ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6137,12 +8669,24 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/atomically": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-2.1.0.tgz", + "integrity": "sha512-+gDffFXRW6sl/HCwbta7zK4uNqbPjv4YJEAdz7Vu+FLQHe77eZ4bvbJGi4hE0QPeJlMYMA3piXEr1UL3dAwx7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "stubborn-fs": "^2.0.0", + "when-exit": "^2.1.4" + } }, "node_modules/autoprefixer": { - "version": "10.4.21", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", - "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "version": "10.4.23", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz", + "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==", "dev": true, "funding": [ { @@ -6158,11 +8702,11 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "browserslist": "^4.24.4", - "caniuse-lite": "^1.0.30001702", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001760", + "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, @@ -6176,6 +8720,71 @@ "postcss": "^8.1.0" } }, + "node_modules/autoprefixer/node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/autoprefixer/node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -6201,10 +8810,11 @@ } }, "node_modules/axios": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", - "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", "dev": true, + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", @@ -6225,6 +8835,7 @@ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", @@ -6242,40 +8853,21 @@ } }, "node_modules/babel-loader": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.4.1.tgz", - "integrity": "sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", + "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", "dev": true, + "license": "MIT", "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.4", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 8.9" + "node": ">= 14.15.0" }, "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-loader/node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "@babel/core": "^7.12.0", + "webpack": ">=5" } }, "node_modules/babel-plugin-istanbul": { @@ -6283,6 +8875,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -6299,6 +8892,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -6353,6 +8947,7 @@ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -6379,6 +8974,7 @@ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" @@ -6397,11 +8993,101 @@ "dev": true }, "node_modules/bare-events": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.6.1.tgz", - "integrity": "sha512-AuTJkq9XmE6Vk0FJVNq5QxETrSA/vKHarWVBG5l/JbdCL1prJemiyJqUS0jrlXO0MftuPq4m3YVYhoNc5+aE/g==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", "dev": true, - "optional": true + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } + }, + "node_modules/bare-fs": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.2.tgz", + "integrity": "sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-os": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz", + "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "engines": { + "bare": ">=1.14.0" + } + }, + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz", + "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "streamx": "^2.21.0" + }, + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/bare-url": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", + "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-path": "^3.0.0" + } }, "node_modules/base64-arraybuffer": { "version": "1.0.2", @@ -6430,22 +9116,25 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.3.tgz", - "integrity": "sha512-mcE+Wr2CAhHNWxXN/DdTI+n4gsPc5QpXpWnyCQWiQYIYZX+ZMJ8juXZgjRa/0/YPJo/NSsgW15/YgmI4nbysYw==", + "version": "2.9.15", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.15.tgz", + "integrity": "sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg==", "dev": true, + "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "node_modules/basic-ftp": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", - "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.1.0.tgz", + "integrity": "sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -6454,7 +9143,8 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/big.js": { "version": "5.2.2", @@ -6477,35 +9167,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "dev": true, + "license": "MIT", "dependencies": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8", @@ -6517,6 +9197,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -6526,6 +9207,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -6537,13 +9219,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bonjour-service": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" @@ -6560,6 +9244,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -6614,6 +9299,7 @@ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" } @@ -6637,6 +9323,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -6647,6 +9334,7 @@ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -6662,6 +9350,7 @@ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -6669,15 +9358,66 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, + "node_modules/bytestreamjs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", + "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/cacheable": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.3.2.tgz", + "integrity": "sha512-w+ZuRNmex9c1TR9RcsxbfTKCjSL0rh1WA5SABbrWprIHeNBdmyQLSYonlDy9gpD+63XT8DgZ/wNh1Smvc9WnJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cacheable/memory": "^2.0.7", + "@cacheable/utils": "^2.3.3", + "hookified": "^1.15.0", + "keyv": "^5.5.5", + "qified": "^0.6.0" + } + }, + "node_modules/cacheable/node_modules/keyv": { + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.5.tgz", + "integrity": "sha512-FA5LmZVF1VziNc0bIdCSA1IoSVnDCqE8HJIZZv2/W8YmoAM50+tnUgJR/gQZwEeIMleuIOnRnHA/UaZRNeV4iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -6739,6 +9479,7 @@ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, + "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -6761,6 +9502,7 @@ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, + "license": "MIT", "dependencies": { "camelcase": "^5.3.1", "map-obj": "^4.0.0", @@ -6778,6 +9520,7 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6795,9 +9538,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001741", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz", - "integrity": "sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==", + "version": "1.0.30001765", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001765.tgz", + "integrity": "sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==", "dev": true, "funding": [ { @@ -6812,13 +9555,15 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/capital-case": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -6846,6 +9591,7 @@ "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", "dev": true, + "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "capital-case": "^1.0.4", @@ -6866,6 +9612,7 @@ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -6918,30 +9665,54 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, "node_modules/chrome-launcher": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", - "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-1.2.1.tgz", + "integrity": "sha512-qmFR5PLMzHyuNJHwOloHPAHhbaNglkfeV/xDtt5b7xiFFyU1I+AZZX0PYseMuhenJSSirgxELYIbswcoc+5H4A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@types/node": "*", "escape-string-regexp": "^4.0.0", "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0" + "lighthouse-logger": "^2.0.1" }, "bin": { - "print-chrome-path": "bin/print-chrome-path.js" + "print-chrome-path": "bin/print-chrome-path.cjs" }, "engines": { "node": ">=12.13.0" } }, + "node_modules/chrome-launcher/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chrome-launcher/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/chrome-trace-event": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", @@ -6951,6 +9722,20 @@ "node": ">=6.0" } }, + "node_modules/chromium-bidi": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.11.0.tgz", + "integrity": "sha512-6CJWHkNRoyZyjV9Rwv2lYONZf1Xm0IuDyNq97nwSsxxP3wf5Bwy15K5rOvVKMtJ127jJBmxFUanSAOjgFRxgrA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "mitt": "3.0.1", + "zod": "3.23.8" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, "node_modules/ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", @@ -6962,6 +9747,7 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } @@ -6970,7 +9756,8 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/clean-css": { "version": "5.3.3", @@ -7075,27 +9862,12 @@ "node": ">=0.10.0" } }, - "node_modules/clean-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==", - "dev": true, - "dependencies": { - "@types/webpack": "^4.4.31", - "del": "^4.1.1" - }, - "engines": { - "node": ">=8.9.0" - }, - "peerDependencies": { - "webpack": "*" - } - }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -7126,16 +9898,18 @@ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, + "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" } }, "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "dev": true, + "license": "MIT" }, "node_modules/color-convert": { "version": "2.0.1", @@ -7167,11 +9941,23 @@ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, + "node_modules/colorjs.io": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.6.1.tgz", + "integrity": "sha512-8lyR2wHzuIykCpqHKgluGsqQi5iDm3/a2IgP2GBZrasn2sBRkE4NOGsglZxWLs/jZQoNkmA/KM/8NV16rLUdBg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/color" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -7184,6 +9970,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -7193,21 +9980,24 @@ "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12.0.0" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true, + "license": "ISC" }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -7220,6 +10010,7 @@ "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", @@ -7238,6 +10029,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -7246,7 +10038,8 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", @@ -7255,32 +10048,22 @@ "dev": true }, "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-7.1.0.tgz", + "integrity": "sha512-N4oog6YJWbR9kGyXvS7jEykLDXIE2C0ILYqNBZBp9iwiJpoCBWYsuAdW6PPFn6w06jjnC+3JstVvWHO4cZqvRg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" + "atomically": "^2.0.3", + "dot-prop": "^9.0.0", + "graceful-fs": "^4.2.11", + "xdg-basedir": "^5.1.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/configstore/node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/connect-history-api-fallback": { @@ -7288,6 +10071,7 @@ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -7297,6 +10081,7 @@ "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -7308,6 +10093,7 @@ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -7320,6 +10106,7 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7331,19 +10118,21 @@ "dev": true }, "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "dev": true, + "license": "MIT" }, "node_modules/copy-webpack-plugin": { "version": "10.2.4", @@ -7414,11 +10203,12 @@ } }, "node_modules/core-js": { - "version": "3.45.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.45.1.tgz", - "integrity": "sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==", + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.47.0.tgz", + "integrity": "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -7452,7 +10242,8 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cosmiconfig": { "version": "8.3.6", @@ -7487,10 +10278,11 @@ "dev": true }, "node_modules/cosmiconfig/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -7503,6 +10295,7 @@ "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "chalk": "^4.0.0", @@ -7537,11 +10330,12 @@ "yarn": ">=1" } }, - "node_modules/cross-env/node_modules/cross-spawn": { + "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -7551,92 +10345,12 @@ "node": ">= 8" } }, - "node_modules/cross-env/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-env/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-env/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dev": true, - "dependencies": { - "node-fetch": "2.6.7" - } - }, - "node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/cross-spawn/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/cross-spawn/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/csp_evaluator": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/csp_evaluator/-/csp_evaluator-1.1.1.tgz", - "integrity": "sha512-N3ASg0C4kNPUaNxt1XAvzHIVuzdtr8KLgfk1O8WDyimp1GisPAHESupArO2ieHk9QWbrJ/WkQODyh21Ps/xhxw==", - "dev": true + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/csp_evaluator/-/csp_evaluator-1.1.5.tgz", + "integrity": "sha512-EL/iN9etCTzw/fBnp0/uj0f5BOOGvZut2mzsiiBZ/FdT6gFQCKRO/tmcKOxn5drWZ2Ndm/xBb1SI4zwWbGtmIw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/css-declaration-sorter": { "version": "7.2.0", @@ -7655,6 +10369,7 @@ "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12 || >=16" } @@ -7868,35 +10583,33 @@ "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "dev": true }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true - }, "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", + "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", "dev": true, + "license": "MIT", "dependencies": { - "cssom": "~0.3.6" + "@asamuzakjp/css-color": "^3.2.0", + "rrweb-cssom": "^0.8.0" }, "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" }, "node_modules/cwd": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", "integrity": "sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA==", "dev": true, + "license": "MIT", "dependencies": { "find-pkg": "^0.1.2", "fs-exists-sync": "^0.1.0" @@ -7916,22 +10629,23 @@ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14" } }, "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dev": true, + "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/data-view-buffer": { @@ -8013,6 +10727,7 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8022,6 +10737,7 @@ "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, + "license": "MIT", "dependencies": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -8038,6 +10754,7 @@ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8046,13 +10763,15 @@ "version": "10.6.0", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dedent": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", - "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", + "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", "dev": true, + "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, @@ -8086,16 +10805,34 @@ "node": ">=0.10.0" } }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "node_modules/default-browser": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", + "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", "dev": true, + "license": "MIT", "dependencies": { - "execa": "^5.0.0" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">= 10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/define-data-property": { @@ -8116,12 +10853,16 @@ } }, "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/define-properties": { @@ -8146,6 +10887,7 @@ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", "dev": true, + "license": "MIT", "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", @@ -8155,66 +10897,12 @@ "node": ">= 14" } }, - "node_modules/del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/del/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", - "dev": true, - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -8224,6 +10912,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -8233,6 +10922,7 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -8256,6 +10946,7 @@ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8264,19 +10955,22 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/devtools-protocol": { - "version": "0.0.1155343", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1155343.tgz", - "integrity": "sha512-oD9vGBV2wTc7fAzAM6KC0chSgs234V8+qDEeK+mcbRj2UvcuA7lgBztGi/opj/iahcXD3BSj8Ymvib628yy9FA==", - "dev": true + "version": "0.0.1367902", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1367902.tgz", + "integrity": "sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg==", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -8298,6 +10992,7 @@ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, + "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -8343,19 +11038,6 @@ } ] }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", @@ -8396,15 +11078,32 @@ } }, "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-9.0.0.tgz", + "integrity": "sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==", "dev": true, + "license": "MIT", "dependencies": { - "is-obj": "^2.0.0" + "type-fest": "^4.18.2" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dot-prop/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/dunder-proto": { @@ -8431,19 +11130,22 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.218", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.218.tgz", - "integrity": "sha512-uwwdN0TUHs8u6iRgN8vKeWZMRll4gBkz+QMqdS7DDe49uiK68/UX92lFb61oiFPrpYZNeZIqa4bA7O6Aiasnzg==", - "dev": true + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", + "dev": true, + "license": "ISC" }, "node_modules/emittery": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -8471,24 +11173,17 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, "node_modules/end-of-stream": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, + "license": "MIT", "dependencies": { "once": "^1.4.0" } @@ -8511,6 +11206,7 @@ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" @@ -8531,6 +11227,16 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/envinfo": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", @@ -8737,9 +11443,9 @@ } }, "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -8747,32 +11453,35 @@ "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" } }, "node_modules/escalade": { @@ -8788,7 +11497,8 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "4.0.0", @@ -8807,6 +11517,7 @@ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -8828,6 +11539,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" @@ -8890,10 +11602,11 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", - "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.2.tgz", + "integrity": "sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -8901,11 +11614,37 @@ "eslint": ">=7.0.0" } }, + "node_modules/eslint-import-context": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz", + "integrity": "sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-tsconfig": "^4.10.1", + "stable-hash-x": "^0.2.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-context" + }, + "peerDependencies": { + "unrs-resolver": "^1.0.0" + }, + "peerDependenciesMeta": { + "unrs-resolver": { + "optional": true + } + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -8917,15 +11656,52 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, + "node_modules/eslint-import-resolver-typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.4.tgz", + "integrity": "sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==", + "dev": true, + "license": "ISC", + "dependencies": { + "debug": "^4.4.1", + "eslint-import-context": "^0.1.8", + "get-tsconfig": "^4.10.1", + "is-bun-module": "^2.0.0", + "stable-hash-x": "^0.2.0", + "tinyglobby": "^0.2.14", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^16.17.0 || >=18.6.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, "node_modules/eslint-module-utils": { "version": "2.12.1", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -8943,6 +11719,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -8952,6 +11729,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, + "license": "MIT", "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -8985,6 +11763,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -8995,6 +11774,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -9004,6 +11784,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -9016,6 +11797,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -9028,6 +11810,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz", "integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^5.10.0" }, @@ -9053,6 +11836,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0" @@ -9070,6 +11854,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -9083,6 +11868,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0", @@ -9110,6 +11896,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", @@ -9136,6 +11923,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" @@ -9153,6 +11941,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -9161,10 +11950,11 @@ } }, "node_modules/eslint-plugin-jest/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -9177,6 +11967,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.10.1.tgz", "integrity": "sha512-x8wxIpv00Y50NyweDUpa+58ffgSAI5sqe+zcZh33xphD0AVh+1kqr1ombaTRb7Fhpove1zfUuujlX9DWWBP5ag==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@es-joy/jsdoccomment": "~0.41.0", "are-docs-informative": "^0.0.2", @@ -9196,10 +11987,11 @@ } }, "node_modules/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -9263,6 +12055,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-0.15.3.tgz", "integrity": "sha512-LQMW5y0DLK5Fnpya7JR1oAYL2/7Y9wDiYw6VZqlKqcRGSgjbVKNqxraphk7ra1U3Bb5EK444xMgUlQPbMg2M1g==", "dev": true, + "license": "MIT", "peerDependencies": { "eslint": ">=7", "eslint-plugin-jest": ">=25" @@ -9274,13 +12067,14 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", - "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", "dev": true, + "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.11.7" + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -9425,6 +12219,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10" } @@ -9445,20 +12240,6 @@ "concat-map": "0.0.1" } }, - "node_modules/eslint/node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/eslint/node_modules/eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", @@ -9503,11 +12284,28 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -9557,42 +12355,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -9627,6 +12389,7 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -9682,6 +12445,7 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -9690,7 +12454,8 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/events": { "version": "3.3.0", @@ -9701,11 +12466,22 @@ "node": ">=0.8.x" } }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -9724,56 +12500,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/execa/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/execa/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/execa/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -9788,6 +12514,7 @@ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", "integrity": "sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==", "dev": true, + "license": "MIT", "dependencies": { "os-homedir": "^1.0.1" }, @@ -9800,6 +12527,7 @@ "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", "jest-get-type": "^29.6.3", @@ -9818,39 +12546,40 @@ "dev": true }, "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.13.0", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -9863,20 +12592,12 @@ "url": "https://opencollective.com/express" } }, - "node_modules/express/node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -9885,13 +12606,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -9912,6 +12635,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -9932,13 +12656,15 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.3", @@ -10019,6 +12745,7 @@ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -10031,6 +12758,7 @@ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" } @@ -10040,6 +12768,7 @@ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, + "license": "MIT", "dependencies": { "pend": "~1.2.0" } @@ -10095,17 +12824,18 @@ } }, "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "statuses": "2.0.1", + "statuses": "~2.0.2", "unpipe": "~1.0.0" }, "engines": { @@ -10117,6 +12847,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -10125,23 +12856,128 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, + "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/find-file-up": { @@ -10149,6 +12985,7 @@ "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-0.1.3.tgz", "integrity": "sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==", "dev": true, + "license": "MIT", "dependencies": { "fs-exists-sync": "^0.1.0", "resolve-dir": "^0.1.0" @@ -10168,6 +13005,7 @@ "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz", "integrity": "sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==", "dev": true, + "license": "MIT", "dependencies": { "find-file-up": "^0.1.2" }, @@ -10180,6 +13018,7 @@ "resolved": "https://registry.npmjs.org/find-process/-/find-process-1.4.11.tgz", "integrity": "sha512-mAOh9gGk9WZ4ip5UjV0o6Vb4SrfnAmtsFNzkMRH9HQiFXVQnDyQFrSHTK5UoG6E+KV+s+cIznbtwpfN41l2nFA==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "~4.1.2", "commander": "^12.1.0", @@ -10207,6 +13046,7 @@ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } @@ -10258,6 +13098,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -10304,10 +13145,11 @@ } }, "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -10324,20 +13166,29 @@ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, + "node_modules/forwarded-parse": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/forwarded-parse/-/forwarded-parse-2.1.2.tgz", + "integrity": "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==", + "dev": true, + "license": "MIT" + }, "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" }, "funding": { - "type": "patreon", + "type": "github", "url": "https://github.com/sponsors/rawify" } }, @@ -10346,31 +13197,21 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, "node_modules/fs-exists-sync": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", "integrity": "sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/fs-monkey": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", - "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", - "dev": true - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -10443,6 +13284,7 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -10476,6 +13318,7 @@ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.0.0" } @@ -10485,6 +13328,7 @@ "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -10522,6 +13366,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -10546,11 +13391,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", + "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/get-uri": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", "dev": true, + "license": "MIT", "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", @@ -10560,16 +13419,6 @@ "node": ">= 14" } }, - "node_modules/gettext-parser": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz", - "integrity": "sha512-sedZYLHlHeBop/gZ1jdg59hlUEcpcZJofLq2JFwJT1zTqAU3l2wFv6IsuwFHGqbiT9DWzMUW4/em2+hspnmMMA==", - "dev": true, - "dependencies": { - "encoding": "^0.1.12", - "safe-buffer": "^5.1.1" - } - }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -10603,6 +13452,23 @@ "node": ">=10.13.0" } }, + "node_modules/glob-to-regex.js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", + "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", @@ -10636,6 +13502,7 @@ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", "integrity": "sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==", "dev": true, + "license": "MIT", "dependencies": { "global-prefix": "^0.1.4", "is-windows": "^0.2.0" @@ -10649,6 +13516,7 @@ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", "integrity": "sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==", "dev": true, + "license": "MIT", "dependencies": { "homedir-polyfill": "^1.0.0", "ini": "^1.3.4", @@ -10659,16 +13527,26 @@ "node": ">=0.10.0" } }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { - "type-fest": "^0.20.2" + "isexe": "^2.0.0" }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -10695,6 +13573,7 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -10714,7 +13593,8 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/gopd": { "version": "1.2.0", @@ -10759,13 +13639,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -10845,6 +13727,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hashery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.4.0.tgz", + "integrity": "sha512-Wn2i1In6XFxl8Az55kkgnFRiAlIAushzh26PTjL2AKtQcEfXrcLa7Hn5QOWGZEf3LU057P9TwwZjFyxfS1VuvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^1.14.0" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -10862,6 +13757,7 @@ "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", "dev": true, + "license": "MIT", "dependencies": { "capital-case": "^1.0.4", "tslib": "^2.0.3" @@ -10872,6 +13768,7 @@ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, + "license": "MIT", "dependencies": { "parse-passwd": "^1.0.0" }, @@ -10879,11 +13776,19 @@ "node": ">=0.10.0" } }, + "node_modules/hookified": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.0.tgz", + "integrity": "sha512-51w+ZZGt7Zw5q7rM3nC4t3aLn/xvKDETsXqMczndvwyVQhAHfUmUuFBRFcos8Iyebtk7OAE9dL26wFNzZVVOkw==", + "dev": true, + "license": "MIT" + }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -10896,6 +13801,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -10907,13 +13813,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -10925,13 +13833,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hpack.js/node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -10946,27 +13856,30 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hpack.js/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dev": true, + "license": "MIT", "dependencies": { - "whatwg-encoding": "^2.0.0" + "whatwg-encoding": "^3.1.1" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/html-entities": { @@ -11005,6 +13918,7 @@ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -11016,22 +13930,28 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "dev": true, + "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/http-link-header": { @@ -11039,6 +13959,7 @@ "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.1.3.tgz", "integrity": "sha512-3cZ0SRL8fb9MUlU3mKM61FcQvPfXx2dBrZW3Vbg5CXa8jFlK8OaEpePenLe1oEXQduhz8b0QjsqfS59QP4AJDQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -11047,13 +13968,15 @@ "version": "0.5.10", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, + "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -11064,17 +13987,17 @@ } }, "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/http-proxy-middleware": { @@ -11082,6 +14005,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -11102,16 +14026,17 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, + "license": "MIT", "dependencies": { - "agent-base": "6", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/human-signals": { @@ -11119,14 +14044,25 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.18" + } + }, "node_modules/i18next": { - "version": "25.5.2", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.5.2.tgz", - "integrity": "sha512-lW8Zeh37i/o0zVr+NoCHfNnfvVw+M6FQbRp36ZZ/NyHDJ3NJVpp2HhAUyU9WafL5AssymNoOjMRB48mmx2P6Hw==", + "version": "25.7.4", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.7.4.tgz", + "integrity": "sha512-hRkpEblXXcXSNbw8mBNq9042OEetgyB/ahc/X17uV/khPwzV+uB8RHceHh3qavyrkPJvmXFKXME2Sy1E0KjAfw==", "funding": [ { "type": "individual", @@ -11144,7 +14080,7 @@ "license": "MIT", "peer": true, "dependencies": { - "@babel/runtime": "^7.27.6" + "@babel/runtime": "^7.28.4" }, "peerDependencies": { "typescript": "^5" @@ -11197,7 +14133,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { "version": "5.3.2", @@ -11246,7 +14183,8 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/image-ssim/-/image-ssim-0.2.0.tgz", "integrity": "sha512-W7+sO6/yhxy83L0G7xR8YAc5Z5QFtYEXXRV6EaE8tuYBZJnA3gVgp3q7X7muhLZVodeb9UfvjSbwt9VJwjIYAg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/immutable": { "version": "5.1.3", @@ -11279,13 +14217,17 @@ "node": ">=4" } }, - "node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "node_modules/import-in-the-middle": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.15.0.tgz", + "integrity": "sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA==", "dev": true, - "engines": { - "node": ">=8" + "license": "Apache-2.0", + "dependencies": { + "acorn": "^8.14.0", + "acorn-import-attributes": "^1.9.5", + "cjs-module-lexer": "^1.2.2", + "module-details-from-path": "^1.0.3" } }, "node_modules/import-local": { @@ -11321,6 +14263,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -11346,7 +14289,8 @@ "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/internal-slot": { "version": "1.1.0", @@ -11372,35 +14316,34 @@ } }, "node_modules/intl-messageformat": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-4.4.0.tgz", - "integrity": "sha512-z+Bj2rS3LZSYU4+sNitdHrwnBhr0wO80ZJSW8EzKDBowwUe3Q/UsvgCGjrwa+HPzoGCLEb9HAjfJgo4j2Sac8w==", + "version": "10.7.18", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.18.tgz", + "integrity": "sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "intl-messageformat-parser": "^1.8.1" + "@formatjs/ecma402-abstract": "2.3.6", + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/icu-messageformat-parser": "2.11.4", + "tslib": "^2.8.0" } }, - "node_modules/intl-messageformat-parser": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-1.8.1.tgz", - "integrity": "sha512-IMSCKVf0USrM/959vj3xac7s8f87sc+80Y/ipBzdKy4ifBv5Gsj2tZ41EAaURVg01QU71fYr77uA8Meh6kELbg==", - "deprecated": "We've written a new parser that's 6x faster and is backwards compatible. Please use @formatjs/icu-messageformat-parser", - "dev": true - }, "node_modules/ip-address": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12" } }, "node_modules/ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -11410,6 +14353,7 @@ "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -11510,6 +14454,7 @@ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", "dev": true, + "license": "MIT", "dependencies": { "builtin-modules": "^3.3.0" }, @@ -11520,6 +14465,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-bun-module/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -11581,15 +14549,16 @@ } }, "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, + "license": "MIT", "bin": { "is-docker": "cli.js" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -11633,6 +14602,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -11642,6 +14612,7 @@ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -11676,6 +14647,25 @@ "node": ">=0.10.0" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -11700,6 +14690,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-network-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", + "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -11725,48 +14728,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "dependencies": { - "is-path-inside": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd/node_modules/is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "dependencies": { - "path-is-inside": "^1.0.2" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -11781,6 +14742,7 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -11804,7 +14766,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-regex": { "version": "1.2.1", @@ -11856,6 +14819,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -11911,17 +14875,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -11977,20 +14936,25 @@ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", "integrity": "sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dev": true, + "license": "MIT", "dependencies": { - "is-docker": "^2.0.0" + "is-inside-container": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/isarray": { @@ -12003,7 +14967,8 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", @@ -12019,6 +14984,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } @@ -12028,6 +14994,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -12044,6 +15011,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -12053,38 +15021,12 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/istanbul-lib-report/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -12099,6 +15041,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -12108,6 +15051,7 @@ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -12138,6 +15082,7 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -12164,6 +15109,7 @@ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, + "license": "MIT", "dependencies": { "execa": "^5.0.0", "jest-util": "^29.7.0", @@ -12178,6 +15124,7 @@ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/expect": "^29.7.0", @@ -12209,6 +15156,7 @@ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", "@jest/test-result": "^29.7.0", @@ -12242,6 +15190,7 @@ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@jest/test-sequencer": "^29.7.0", @@ -12283,18 +15232,19 @@ } }, "node_modules/jest-dev-server": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jest-dev-server/-/jest-dev-server-9.0.2.tgz", - "integrity": "sha512-Zc/JB0IlNNrpXkhBw+h86cGrde/Mey52KvF+FER2eyrtYJTHObOwW7Iarxm3rPyTKby5+3Y2QZtl8pRz/5GCxg==", + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/jest-dev-server/-/jest-dev-server-10.1.4.tgz", + "integrity": "sha512-bGQ6sedNGtT6AFHhCVqGTXMPz7UyJi/ZrhNBgyqsP0XU9N8acCEIfqZEA22rOaZ+NdEVsaltk6tL7UT6aXfI7w==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.2", "cwd": "^0.10.0", "find-process": "^1.4.7", "prompts": "^2.4.2", - "spawnd": "^9.0.2", + "spawnd": "^10.1.4", "tree-kill": "^1.2.2", - "wait-on": "^7.2.0" + "wait-on": "^8.0.1" }, "engines": { "node": ">=16" @@ -12305,6 +15255,7 @@ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.6.3", @@ -12320,6 +15271,7 @@ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, + "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" }, @@ -12332,6 +15284,7 @@ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "chalk": "^4.0.0", @@ -12344,25 +15297,23 @@ } }, "node_modules/jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.2.0.tgz", + "integrity": "sha512-zbBTiqr2Vl78pKp/laGBREYzbZx9ZtqPjOK4++lL4BNDhxRnahg51HtoDrk9/VjIy9IthNEWdKVd7H5bqBhiWQ==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", + "@jest/environment": "30.2.0", + "@jest/environment-jsdom-abstract": "30.2.0", + "@types/jsdom": "^21.1.7", "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" + "jsdom": "^26.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "canvas": "^2.5.0" + "canvas": "^3.0.0" }, "peerDependenciesMeta": { "canvas": { @@ -12370,11 +15321,206 @@ } } }, + "node_modules/jest-environment-jsdom/node_modules/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@sinclair/typebox": { + "version": "0.34.47", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.47.tgz", + "integrity": "sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-environment-jsdom/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/jest-environment-jsdom/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-environment-jsdom/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-environment-jsdom/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/jest-environment-node": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/fake-timers": "^29.7.0", @@ -12392,6 +15538,7 @@ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -12401,6 +15548,7 @@ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", @@ -12426,6 +15574,7 @@ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, + "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", "pretty-format": "^29.7.0" @@ -12439,6 +15588,7 @@ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "jest-diff": "^29.7.0", @@ -12454,6 +15604,7 @@ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", @@ -12474,6 +15625,7 @@ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -12488,6 +15640,7 @@ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -12505,6 +15658,7 @@ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -12514,6 +15668,7 @@ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", @@ -12534,6 +15689,7 @@ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, + "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", "jest-snapshot": "^29.7.0" @@ -12547,6 +15703,7 @@ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/environment": "^29.7.0", @@ -12579,6 +15736,7 @@ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/fake-timers": "^29.7.0", @@ -12612,6 +15770,7 @@ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", @@ -12639,10 +15798,11 @@ } }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -12655,6 +15815,7 @@ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -12672,6 +15833,7 @@ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "camelcase": "^6.2.0", @@ -12689,6 +15851,7 @@ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, + "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", "@jest/types": "^29.6.3", @@ -12708,6 +15871,7 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "jest-util": "^29.7.0", @@ -12723,6 +15887,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12734,29 +15899,37 @@ } }, "node_modules/joi": { - "version": "17.13.3", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", - "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-18.0.2.tgz", + "integrity": "sha512-RuCOQMIt78LWnktPoeBL0GErkNaJPTBGcYuyaBvUOQSpcpcLfWrHPPihYdOGbV5pam9VTWbeoF7TsGiHugcjGA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@hapi/hoek": "^9.3.0", - "@hapi/topo": "^5.1.0", - "@sideway/address": "^4.1.5", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" + "@hapi/address": "^5.1.1", + "@hapi/formula": "^3.0.2", + "@hapi/hoek": "^11.0.7", + "@hapi/pinpoint": "^2.0.1", + "@hapi/tlds": "^1.1.1", + "@hapi/topo": "^6.0.2", + "@standard-schema/spec": "^1.0.0" + }, + "engines": { + "node": ">= 20" } }, "node_modules/jpeg-js": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/js-library-detector": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/js-library-detector/-/js-library-detector-6.7.0.tgz", "integrity": "sha512-c80Qupofp43y4cJ7+8TTDN/AsDwLi5oOm/plBrWI+iQt485vKXCco+yVmOwEgdo9VOdsYTuV0UlTeetVPTriXA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" } @@ -12767,10 +15940,11 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -12784,48 +15958,44 @@ "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0.0" } }, "node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", + "version": "26.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz", + "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.5.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", + "tough-cookie": "^5.1.1", + "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.1", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" }, "peerDependencies": { - "canvas": "^2.5.0" + "canvas": "^3.0.0" }, "peerDependenciesMeta": { "canvas": { @@ -12870,10 +16040,11 @@ "dev": true }, "node_modules/json2php": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/json2php/-/json2php-0.0.7.tgz", - "integrity": "sha512-dnSoUiLAoVaMXxFsVi4CrPVYMKOuDBXTghXSmMINX44RZ8WM9cXlY7UqrQnlAcODCVO7FV3+8t/5nDKAjimLfg==", - "dev": true + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/json2php/-/json2php-0.0.9.tgz", + "integrity": "sha512-fQMYwvPsQt8hxRnCGyg1r2JVi6yL8Um0DIIawiKiMK9yhAAkcRNj5UsBWoaFvFzPpcWbgw9L6wzj+UMYA702Mw==", + "dev": true, + "license": "BSD" }, "node_modules/json5": { "version": "2.2.3", @@ -12934,6 +16105,7 @@ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -12948,10 +16120,11 @@ } }, "node_modules/known-css-properties": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.26.0.tgz", - "integrity": "sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==", - "dev": true + "version": "0.37.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz", + "integrity": "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==", + "dev": true, + "license": "MIT" }, "node_modules/language-subtag-registry": { "version": "0.3.23", @@ -12972,10 +16145,11 @@ } }, "node_modules/launch-editor": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.11.1.tgz", - "integrity": "sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", + "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", "dev": true, + "license": "MIT", "dependencies": { "picocolors": "^1.1.1", "shell-quote": "^1.8.3" @@ -12990,11 +16164,19 @@ "node": ">=0.10.0" } }, + "node_modules/legacy-javascript": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/legacy-javascript/-/legacy-javascript-0.0.1.tgz", + "integrity": "sha512-lPyntS4/aS7jpuvOlitZDFifBCb4W8L/3QU0PLbUTUj+zYah8rfVjYic88yG7ZKTxhS5h9iz7duT8oUXKszLhg==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -13013,35 +16195,36 @@ } }, "node_modules/lighthouse": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-10.4.0.tgz", - "integrity": "sha512-XQWHEWkJ8YxSPsxttBJORy5+hQrzbvGkYfeP3fJjyYKioWkF2MXfFqNK4ZuV4jL8pBu7Z91qnQP6In0bq1yXww==", + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-12.8.2.tgz", + "integrity": "sha512-+5SKYzVaTFj22MgoYDPNrP9tlD2/Ay7j3SxPSFD9FpPyVxGr4UtOQGKyrdZ7wCmcnBaFk0mCkPfARU3CsE0nvA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@sentry/node": "^6.17.4", - "axe-core": "4.7.2", - "chrome-launcher": "^0.15.2", - "configstore": "^5.0.1", - "csp_evaluator": "1.1.1", - "devtools-protocol": "0.0.1155343", + "@paulirish/trace_engine": "0.0.59", + "@sentry/node": "^9.28.1", + "axe-core": "^4.10.3", + "chrome-launcher": "^1.2.0", + "configstore": "^7.0.0", + "csp_evaluator": "1.1.5", + "devtools-protocol": "0.0.1507524", "enquirer": "^2.3.6", "http-link-header": "^1.1.1", - "intl-messageformat": "^4.4.0", + "intl-messageformat": "^10.5.3", "jpeg-js": "^0.4.4", - "js-library-detector": "^6.6.0", - "lighthouse-logger": "^1.4.1", - "lighthouse-stack-packs": "1.11.0", - "lodash": "^4.17.21", + "js-library-detector": "^6.7.0", + "lighthouse-logger": "^2.0.2", + "lighthouse-stack-packs": "1.12.2", + "lodash-es": "^4.17.21", "lookup-closest-locale": "6.2.0", "metaviewport-parser": "0.3.0", "open": "^8.4.0", "parse-cache-control": "1.0.1", - "ps-list": "^8.0.0", - "puppeteer-core": "^20.8.0", - "robots-parser": "^3.0.0", - "semver": "^5.3.0", + "puppeteer-core": "^24.17.1", + "robots-parser": "^3.0.1", "speedline-core": "^1.4.3", - "third-party-web": "^0.23.3", + "third-party-web": "^0.27.0", + "tldts-icann": "^7.0.12", "ws": "^7.0.0", "yargs": "^17.3.1", "yargs-parser": "^21.0.0" @@ -13052,149 +16235,159 @@ "smokehouse": "cli/test/smokehouse/frontends/smokehouse-bin.js" }, "engines": { - "node": ">=16.16" + "node": ">=18.16" } }, "node_modules/lighthouse-logger": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", - "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-2.0.2.tgz", + "integrity": "sha512-vWl2+u5jgOQuZR55Z1WM0XDdrJT6mzMP8zHUct7xTlWhuQs+eV0g+QL0RQdFjT54zVmbhLCP8vIVpy1wGn/gCg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "debug": "^2.6.9", + "debug": "^4.4.1", "marky": "^1.2.2" } }, - "node_modules/lighthouse-logger/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/lighthouse-stack-packs": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/lighthouse-stack-packs/-/lighthouse-stack-packs-1.12.2.tgz", + "integrity": "sha512-Ug8feS/A+92TMTCK6yHYLwaFMuelK/hAKRMdldYkMNwv+d9PtWxjXEg6rwKtsUXTADajhdrhXyuNCJ5/sfmPFw==", "dev": true, + "license": "Apache-2.0" + }, + "node_modules/lighthouse/node_modules/@puppeteer/browsers": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.11.1.tgz", + "integrity": "sha512-YmhAxs7XPuxN0j7LJloHpfD1ylhDuFmmwMvfy/+6nBSrETT2ycL53LrhgPtR+f+GcPSybQVuQ5inWWu5MrWCpA==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "ms": "2.0.0" + "debug": "^4.4.3", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.5.0", + "semver": "^7.7.3", + "tar-fs": "^3.1.1", + "yargs": "^17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" } }, - "node_modules/lighthouse-logger/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/lighthouse-stack-packs": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/lighthouse-stack-packs/-/lighthouse-stack-packs-1.11.0.tgz", - "integrity": "sha512-sRr0z1S/I26VffRLq9KJsKtLk856YrJlNGmcJmbLX8dFn3MuzVPUbstuChEhqnSxZb8TZmVfthuXuwhG9vRoSw==", - "dev": true + "node_modules/lighthouse/node_modules/chromium-bidi": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-12.0.1.tgz", + "integrity": "sha512-fGg+6jr0xjQhzpy5N4ErZxQ4wF7KLEvhGZXD6EgvZKDhu7iOhZXnZhcDxPJDcwTcrD48NPzOCo84RP2lv3Z+Cg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "mitt": "^3.0.1", + "zod": "^3.24.1" + }, + "peerDependencies": { + "devtools-protocol": "*" + } }, - "node_modules/lighthouse/node_modules/axe-core": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", - "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", + "node_modules/lighthouse/node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/lighthouse/node_modules/cross-fetch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", - "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "node_modules/lighthouse/node_modules/devtools-protocol": { + "version": "0.0.1507524", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1507524.tgz", + "integrity": "sha512-OjaNE7qpk6GRTXtqQjAE5bGx6+c4F1zZH0YXtpZQLM92HNXx4zMAaqlKhP4T52DosG6hDW8gPMNhGOF8xbwk/w==", "dev": true, - "dependencies": { - "node-fetch": "^2.6.12" - } + "license": "BSD-3-Clause" }, - "node_modules/lighthouse/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/lighthouse/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, - "dependencies": { - "ms": "2.1.2" + "license": "MIT", + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">=6.0" + "node": ">=8" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lighthouse/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/lighthouse/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "node_modules/lighthouse/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "is-docker": "^2.0.0" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">=8" } }, - "node_modules/lighthouse/node_modules/puppeteer-core": { - "version": "20.9.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.9.0.tgz", - "integrity": "sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==", + "node_modules/lighthouse/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, + "license": "MIT", "dependencies": { - "@puppeteer/browsers": "1.4.6", - "chromium-bidi": "0.4.16", - "cross-fetch": "4.0.0", - "debug": "4.3.4", - "devtools-protocol": "0.0.1147663", - "ws": "8.13.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=16.3.0" - }, - "peerDependencies": { - "typescript": ">= 4.7.4" + "node": ">=12" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lighthouse/node_modules/puppeteer-core/node_modules/chromium-bidi": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz", - "integrity": "sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==", + "node_modules/lighthouse/node_modules/puppeteer-core": { + "version": "24.35.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.35.0.tgz", + "integrity": "sha512-vt1zc2ME0kHBn7ZDOqLvgvrYD5bqNv5y2ZNXzYnCv8DEtZGw/zKhljlrGuImxptZ4rq+QI9dFGrUIYqG4/IQzA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "mitt": "3.0.0" + "@puppeteer/browsers": "2.11.1", + "chromium-bidi": "12.0.1", + "debug": "^4.4.3", + "devtools-protocol": "0.0.1534754", + "typed-query-selector": "^2.12.0", + "webdriver-bidi-protocol": "0.3.10", + "ws": "^8.19.0" }, - "peerDependencies": { - "devtools-protocol": "*" + "engines": { + "node": ">=18" } }, "node_modules/lighthouse/node_modules/puppeteer-core/node_modules/devtools-protocol": { - "version": "0.0.1147663", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1147663.tgz", - "integrity": "sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==", - "dev": true + "version": "0.0.1534754", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1534754.tgz", + "integrity": "sha512-26T91cV5dbOYnXdJi5qQHoTtUoNEqwkHcAyu/IKtjIAxiEqPMrDiRkDOPWVsGfNZGmlQVHQbZRSjD8sxagWVsQ==", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/lighthouse/node_modules/puppeteer-core/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -13212,34 +16405,16 @@ } }, "node_modules/lighthouse/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, + "license": "ISC", "bin": { - "semver": "bin/semver" - } - }, - "node_modules/lighthouse/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/lighthouse/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/lighthouse/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/lighthouse/node_modules/ws": { @@ -13247,6 +16422,7 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.3.0" }, @@ -13263,6 +16439,26 @@ } } }, + "node_modules/lighthouse/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/lighthouse/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/lilconfig": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", @@ -13329,7 +16525,15 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.22", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.22.tgz", + "integrity": "sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", @@ -13353,7 +16557,8 @@ "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.uniq": { "version": "4.5.0", @@ -13366,6 +16571,7 @@ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -13382,6 +16588,7 @@ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" }, @@ -13394,7 +16601,8 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/lookup-closest-locale/-/lookup-closest-locale-6.2.0.tgz", "integrity": "sha512-/c2kL+Vnp1jnV6K6RpDTHK3dgg0Tu2VVp+elEiJpjfS1UyY7AjOYHohRug6wT0OpoX2qFgNORndE9RqesfVxWQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/loose-envify": { "version": "1.4.0", @@ -13416,12 +16624,6 @@ "tslib": "^2.0.3" } }, - "node_modules/lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", - "dev": true - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -13432,25 +16634,40 @@ } }, "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { - "semver": "^6.0.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" } @@ -13460,6 +16677,7 @@ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -13575,10 +16793,11 @@ } }, "node_modules/markdownlint-cli/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -13608,7 +16827,8 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz", "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/math-intrinsics": { "version": "1.1.0", @@ -13624,6 +16844,7 @@ "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -13646,33 +16867,43 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.54.0.tgz", + "integrity": "sha512-wiJ9YYUj2bVcpdJgIv6y1KrStknSdNhfM4+4+ttt0cHHMxVLZ3aOBoER8krt9lGY5HkR2ustUXiihhNPeNxXaQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "fs-monkey": "^1.0.4" + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.0.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" }, - "engines": { - "node": ">= 4.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" } }, "node_modules/memize": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/memize/-/memize-2.1.1.tgz", "integrity": "sha512-8Nl+i9S5D6KXnruM03Jgjb+LwSupvR13WBr4hJegaaEyobvowCVupi79y2WSiWvO1mzBWxPwEYE5feCe8vyA5w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/meow": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -13699,6 +16930,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -13706,15 +16938,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/merge-deep": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.3.tgz", @@ -13734,6 +16957,7 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -13757,13 +16981,15 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/metaviewport-parser/-/metaviewport-parser-0.3.0.tgz", "integrity": "sha512-EoYJ8xfjQ6kpe9VbVHvZTZHiOl4HL1Z18CrZ+qahvLXT7ZO4YTC2JMyt5FaUp9JJp6J4Ybb/z7IsCXZt86/QkQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -13782,15 +17008,16 @@ } }, "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, "engines": { - "node": ">=10.0.0" + "node": ">=4" } }, "node_modules/mime-db": { @@ -13819,6 +17046,7 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -13828,6 +17056,7 @@ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -13856,13 +17085,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minimatch": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -13887,6 +17118,7 @@ "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, + "license": "MIT", "dependencies": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -13901,6 +17133,7 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -13910,14 +17143,16 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/mitt": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", - "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" }, "node_modules/mixin-object": { "version": "2.0.1", @@ -13942,20 +17177,21 @@ } }, "node_modules/mixpanel-browser": { - "version": "2.72.0", - "resolved": "https://registry.npmjs.org/mixpanel-browser/-/mixpanel-browser-2.72.0.tgz", - "integrity": "sha512-Olc+1ebVBSVBjtR/Pp4t8Pc1wAI9AfA5e668B0MsI/gKJ43QcndzfQ/AT/TiP1Klup8O1C9vwykoWjvPqX+SRA==", + "version": "2.73.0", + "resolved": "https://registry.npmjs.org/mixpanel-browser/-/mixpanel-browser-2.73.0.tgz", + "integrity": "sha512-Ny+6BVeWJozZoyrzB+5/6LTqBZ0gDY1pwcs7PQLQVGPKMTdL8qAz0yV4H8ykGQEA5KrW2Ky/KZ3uMEHGjE7oSA==", "license": "Apache-2.0", "dependencies": { "@mixpanel/rrweb": "2.0.0-alpha.18.2", "@mixpanel/rrweb-plugin-console-record": "2.0.0-alpha.18.2" } }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true + "node_modules/module-details-from-path": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", + "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", + "dev": true, + "license": "MIT" }, "node_modules/mrmime": { "version": "2.0.1", @@ -13977,6 +17213,7 @@ "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, + "license": "MIT", "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -14002,6 +17239,22 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -14013,6 +17266,7 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -14028,6 +17282,7 @@ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -14049,74 +17304,26 @@ "dev": true, "optional": true }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true, - "engines": { - "node": ">= 6.13.0" - } - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.21", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.21.tgz", - "integrity": "sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==", - "dev": true + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" }, "node_modules/normalize-package-data": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -14128,10 +17335,11 @@ } }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -14148,15 +17356,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/npm-bundled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", @@ -14177,6 +17376,7 @@ "resolved": "https://registry.npmjs.org/npm-package-json-lint/-/npm-package-json-lint-6.4.0.tgz", "integrity": "sha512-cuXAJJB1Rdqz0UO6w524matlBqDBjcNt7Ru+RDIu4y6RI1gVqiWBnylrK8sPRk81gGBA0X8hJbDXolVOoTc+sA==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.6", "ajv-errors": "^1.0.1", @@ -14208,13 +17408,15 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/npm-package-json-lint/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -14227,6 +17429,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=14.16" }, @@ -14257,6 +17460,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -14277,16 +17481,16 @@ } }, "node_modules/nwsapi": { - "version": "2.2.22", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz", - "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==", - "dev": true + "version": "2.2.23", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", + "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", + "dev": true, + "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -14376,6 +17580,7 @@ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -14407,13 +17612,15 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -14426,6 +17633,7 @@ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -14444,6 +17652,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -14455,17 +17664,19 @@ } }, "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", "dev": true, + "license": "MIT", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -14502,6 +17713,7 @@ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -14565,26 +17777,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/retry": "0.12.0", + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", "retry": "^0.13.1" }, "engines": { - "node": ">=8" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-try": { @@ -14601,6 +17809,7 @@ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", "dev": true, + "license": "MIT", "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.1.2", @@ -14615,46 +17824,12 @@ "node": ">= 14" } }, - "node_modules/pac-proxy-agent/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-proxy-agent/node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/pac-resolver": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", "dev": true, + "license": "MIT", "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" @@ -14668,6 +17843,7 @@ "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dev": true, + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -14714,6 +17890,7 @@ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -14723,6 +17900,7 @@ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "dev": true, + "license": "MIT", "dependencies": { "entities": "^6.0.0" }, @@ -14735,6 +17913,7 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -14747,6 +17926,7 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -14756,6 +17936,7 @@ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -14766,6 +17947,7 @@ "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", "dev": true, + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -14789,12 +17971,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -14814,7 +17990,8 @@ "version": "0.1.12", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", @@ -14829,7 +18006,42 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.11.0.tgz", + "integrity": "sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==", + "dev": true, + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } }, "node_modules/picocolors": { "version": "1.1.1", @@ -14849,31 +18061,11 @@ } }, "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -14883,6 +18075,7 @@ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } @@ -14899,14 +18092,33 @@ "node": ">=8" } }, + "node_modules/pkijs": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.3.3.tgz", + "integrity": "sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@noble/hashes": "1.4.0", + "asn1js": "^3.0.6", + "bytestreamjs": "^2.0.1", + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/playwright": { - "version": "1.55.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.55.0.tgz", - "integrity": "sha512-sdCWStblvV1YU909Xqx0DhOjPZE4/5lJsIS84IfN9dAZfcl/CIZ5O8l3o0j7hPMjDvqoTF8ZUcc+i/GL5erstA==", + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", + "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", "dev": true, + "license": "Apache-2.0", "peer": true, "dependencies": { - "playwright-core": "1.55.0" + "playwright-core": "1.57.0" }, "bin": { "playwright": "cli.js" @@ -14919,28 +18131,33 @@ } }, "node_modules/playwright-core": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.39.0.tgz", - "integrity": "sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==", + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", + "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", "dev": true, + "license": "Apache-2.0", + "peer": true, "bin": { "playwright-core": "cli.js" }, "engines": { - "node": ">=16" + "node": ">=18" } }, - "node_modules/playwright/node_modules/playwright-core": { - "version": "1.55.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.55.0.tgz", - "integrity": "sha512-GvZs4vU3U5ro2nZpeiwyb0zuFaqb9sUiAJuyrWpcGouD8y9/HLgGbNRjIph7zU9D3hnPaisMl9zG9CgFi/biIg==", + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "peer": true, - "bin": { - "playwright-core": "cli.js" - }, "engines": { - "node": ">=18" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/plur": { @@ -14948,6 +18165,7 @@ "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", "dev": true, + "license": "MIT", "dependencies": { "irregular-plurals": "^3.2.0" }, @@ -15092,6 +18310,24 @@ "postcss": "^8.4.31" } }, + "node_modules/postcss-import": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-16.1.1.tgz", + "integrity": "sha512-2xVS1NCZAfjtVdvXiyegxzJ447GyqCeEI5V7ApgQVOWnros1p5lGNovJNapwPpMombyFBfqDwt7AD3n2l0KOfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, "node_modules/postcss-loader": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", @@ -15142,11 +18378,22 @@ "node": ">=10" } }, + "node_modules/postcss-loader/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, "node_modules/postcss-media-query-parser": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/postcss-merge-longhand": { "version": "6.0.5", @@ -15515,22 +18762,34 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=18.0" }, "peerDependencies": { - "postcss": "^8.3.3" + "postcss": "^8.4.31" } }, "node_modules/postcss-scss": { @@ -15552,6 +18811,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "engines": { "node": ">=12.0" }, @@ -15609,6 +18869,49 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", + "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -15619,11 +18922,11 @@ } }, "node_modules/prettier": { - "name": "wp-prettier", - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-3.0.3.tgz", - "integrity": "sha512-X4UlrxDTH8oom9qXlcjnydsjAOD2BmB6yFmvS4Z2zdTzqqpRWb+fbqrH412+l+OUXmbzJlSXjlMFYPgYG12IAA==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.0.tgz", + "integrity": "sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -15635,10 +18938,11 @@ } }, "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", "dev": true, + "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, @@ -15651,6 +18955,7 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -15665,6 +18970,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -15676,13 +18982,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -15692,6 +19000,7 @@ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, + "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -15704,7 +19013,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -15714,14 +19022,14 @@ "node_modules/prop-types/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -15735,59 +19043,26 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/proxy-agent": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.0.tgz", - "integrity": "sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", "dev": true, + "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "^4.3.4", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.6", "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.0", + "pac-proxy-agent": "^7.1.0", "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-agent/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-agent/node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" + "socks-proxy-agent": "^8.0.5" }, "engines": { "node": ">= 14" @@ -15798,6 +19073,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -15806,43 +19082,15 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "node_modules/ps-list": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-8.1.1.tgz", - "integrity": "sha512-OPS9kEJYVmiO48u/B9qneqhkMvgCxT+Tm28VCEJpheTpl8cJ0ffZRRNgS5mrQRTrX5yRTpaJ+hRDeefXYmmorQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true - }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", "dev": true, - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } + "license": "MIT" }, "node_modules/pump": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -15858,92 +19106,21 @@ } }, "node_modules/puppeteer-core": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.7.0.tgz", - "integrity": "sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q==", - "dev": true, - "dependencies": { - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.981744", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.5.0" - }, - "engines": { - "node": ">=10.18.1" - } - }, - "node_modules/puppeteer-core/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/puppeteer-core/node_modules/devtools-protocol": { - "version": "0.0.981744", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", - "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==", - "dev": true - }, - "node_modules/puppeteer-core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/puppeteer-core/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", + "version": "23.11.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.11.1.tgz", + "integrity": "sha512-3HZ2/7hdDKZvZQ7dhhITOUg4/wOrDRjyK2ZBllRB0ZCOi9u0cwq1ACHDjBB+nX+7+kltHjQvBRdeY7+W0T+7Gg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "@puppeteer/browsers": "2.6.1", + "chromium-bidi": "0.11.0", + "debug": "^4.4.0", + "devtools-protocol": "0.0.1367902", + "typed-query-selector": "^2.12.0", + "ws": "^8.18.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "dev": true, "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "node": ">=18" } }, "node_modules/pure-rand": { @@ -15960,15 +19137,50 @@ "type": "opencollective", "url": "https://opencollective.com/fast-check" } - ] + ], + "license": "MIT" + }, + "node_modules/pvtsutils": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/pvutils": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz", + "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/qified": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/qified/-/qified-0.6.0.tgz", + "integrity": "sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^1.14.0" + }, + "engines": { + "node": ">=20" + } }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -15977,12 +19189,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -16008,6 +19214,7 @@ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -16026,20 +19233,22 @@ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "dev": true, + "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" @@ -16050,6 +19259,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -16072,7 +19282,6 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -16082,16 +19291,17 @@ } }, "node_modules/react-i18next": { - "version": "15.7.3", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-15.7.3.tgz", - "integrity": "sha512-AANws4tOE+QSq/IeMF/ncoHlMNZaVLxpa5uUGW1wjike68elVYr0018L9xYoqBr1OFO7G7boDPrbn0HpMCJxTw==", + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-16.5.3.tgz", + "integrity": "sha512-fo+/NNch37zqxOzlBYrWMx0uy/yInPkRfjSuy4lqKdaecR17nvCHnEUt3QyzA8XjQ2B/0iW/5BhaHR3ZmukpGw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.27.6", - "html-parse-stringify": "^3.0.1" + "@babel/runtime": "^7.28.4", + "html-parse-stringify": "^3.0.1", + "use-sync-external-store": "^1.6.0" }, "peerDependencies": { - "i18next": ">= 25.4.1", + "i18next": ">= 25.6.2", "react": ">= 16.8.0", "typescript": "^5" }, @@ -16111,7 +19321,8 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/react-refresh": { "version": "0.14.2", @@ -16122,11 +19333,22 @@ "node": ">=0.10.0" } }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, + "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -16142,6 +19364,7 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -16159,6 +19382,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } @@ -16167,13 +19391,15 @@ "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -16186,6 +19412,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -16195,6 +19422,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } @@ -16204,6 +19432,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -16243,6 +19472,7 @@ "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, + "license": "MIT", "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -16251,6 +19481,13 @@ "node": ">=8" } }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -16358,17 +19595,12 @@ "node": ">=6" } }, - "node_modules/remove-accents": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz", - "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==", - "dev": true - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -16382,11 +19614,27 @@ "node": ">=0.10.0" } }, + "node_modules/require-in-the-middle": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.2.tgz", + "integrity": "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, "node_modules/requireindex": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.5" } @@ -16395,7 +19643,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/resolve": { "version": "1.22.10", @@ -16443,6 +19692,7 @@ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", "integrity": "sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==", "dev": true, + "license": "MIT", "dependencies": { "expand-tilde": "^1.2.2", "global-modules": "^0.2.3" @@ -16460,11 +19710,22 @@ "node": ">=8" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/resolve.exports": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -16474,6 +19735,7 @@ "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -16488,24 +19750,12 @@ "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/robots-parser": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/robots-parser/-/robots-parser-3.0.1.tgz", "integrity": "sha512-s+pyvQeIKIZ0dx5iJiQk1tPLJAWln39+MI5jtM8wnyws+G5azk+dMnMX0qfbqNetKKNgcWWOdi0sfm+FbQbgdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -16551,6 +19801,45 @@ "fsevents": "~2.3.2" } }, + "node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/rtlcss": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz", + "integrity": "sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==", + "dev": true, + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0", + "postcss": "^8.4.21", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/run-con": { "version": "1.2.12", "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.2.12.tgz", @@ -16603,6 +19892,7 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } @@ -16706,30 +19996,30 @@ } }, "node_modules/sass-loader": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", - "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "version": "16.0.6", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.6.tgz", + "integrity": "sha512-sglGzId5gmlfxNs4gK2U3h7HlVRfx278YK6Ono5lwzuvi1jxig80YiuHkaDBVsYIKFhx8wN7XSCI0M2IDS/3qA==", "dev": true, + "license": "MIT", "dependencies": { - "klona": "^2.0.4", "neo-async": "^2.6.2" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "@rspack/core": "0.x || 1.x", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "sass": "^1.3.0", "sass-embedded": "*", "webpack": "^5.0.0" }, "peerDependenciesMeta": { - "fibers": { + "@rspack/core": { "optional": true }, "node-sass": { @@ -16740,6 +20030,9 @@ }, "sass-embedded": { "optional": true + }, + "webpack": { + "optional": true } } }, @@ -16748,6 +20041,7 @@ "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, + "license": "ISC", "dependencies": { "xmlchars": "^2.2.0" }, @@ -16759,7 +20053,6 @@ "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" } @@ -16821,19 +20114,21 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/selfsigned": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", - "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-5.5.0.tgz", + "integrity": "sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node-forge": "^1.3.0", - "node-forge": "^1" + "@peculiar/x509": "^1.14.2", + "pkijs": "^3.3.3" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/semver": { @@ -16846,24 +20141,25 @@ } }, "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "range-parser": "~1.2.1", - "statuses": "2.0.1" + "statuses": "~2.0.2" }, "engines": { "node": ">= 0.8.0" @@ -16874,6 +20170,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -16882,34 +20179,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } + "license": "MIT" }, "node_modules/sentence-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -16930,6 +20208,7 @@ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -16948,6 +20227,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -16957,6 +20237,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -16966,6 +20247,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -16980,39 +20262,44 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", "dev": true, + "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.19.0" + "send": "~0.19.1" }, "engines": { "node": ">= 0.8.0" @@ -17068,7 +20355,8 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/shallow-clone": { "version": "0.1.2", @@ -17107,24 +20395,26 @@ } }, "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/shell-quote": { @@ -17132,6 +20422,7 @@ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -17139,6 +20430,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", + "dev": true, + "license": "BSD-2-Clause" + }, "node_modules/side-channel": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", @@ -17215,7 +20513,8 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/sirv": { "version": "2.0.4", @@ -17235,13 +20534,15 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -17251,6 +20552,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -17268,6 +20570,7 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -17288,6 +20591,7 @@ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, + "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", @@ -17299,6 +20603,7 @@ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "dev": true, + "license": "MIT", "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" @@ -17313,6 +20618,7 @@ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", @@ -17322,15 +20628,6 @@ "node": ">= 14" } }, - "node_modules/socks-proxy-agent/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, "node_modules/source-map": { "version": "0.7.6", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", @@ -17374,6 +20671,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -17384,15 +20682,17 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/spawnd": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/spawnd/-/spawnd-9.0.2.tgz", - "integrity": "sha512-nl8DVHEDQ57IcKakzpjanspVChkMpGLuVwMR/eOn9cXE55Qr6luD2Kn06sA0ootRMdgrU4tInN6lA6ohTNvysw==", + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/spawnd/-/spawnd-10.1.4.tgz", + "integrity": "sha512-drqHc0mKJmtMsiGMOCwzlc5eZ0RPtRvT7tQAluW2A0qUc0G7TQ8KLcn3E6K5qzkLkH2UkS3nYQiVGULvvsD9dw==", "dev": true, + "license": "MIT", "dependencies": { "signal-exit": "^4.1.0", "tree-kill": "^1.2.2" @@ -17406,6 +20706,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -17418,6 +20719,7 @@ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -17428,6 +20730,7 @@ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -17437,13 +20740,15 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true + "dev": true, + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -17453,13 +20758,15 @@ "version": "3.0.22", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -17476,6 +20783,7 @@ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -17490,6 +20798,7 @@ "resolved": "https://registry.npmjs.org/speedline-core/-/speedline-core-1.4.3.tgz", "integrity": "sha512-DI7/OuAUD+GMpR6dmu8lliO2Wg5zfeh+/xsdyJZCzd8o5JgFUjCeLsBDuZjIQJdwXS3J0L/uZYrELKYqx+PXog==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "image-ssim": "^0.2.0", @@ -17500,16 +20809,28 @@ } }, "node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stable-hash-x": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", + "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -17522,6 +20843,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -17533,10 +20855,11 @@ "dev": true }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -17555,16 +20878,15 @@ } }, "node_modules/streamx": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", - "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", "dev": true, + "license": "MIT", "dependencies": { + "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" } }, "node_modules/string_decoder": { @@ -17572,6 +20894,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -17581,6 +20904,7 @@ "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, + "license": "MIT", "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -17594,6 +20918,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -17607,7 +20932,8 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/string.prototype.includes": { "version": "2.0.1", @@ -17733,6 +21059,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -17742,6 +21069,7 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -17751,6 +21079,7 @@ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, + "license": "MIT", "dependencies": { "min-indent": "^1.0.0" }, @@ -17791,11 +21120,29 @@ "node": ">=0.8.0" } }, + "node_modules/stubborn-fs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stubborn-fs/-/stubborn-fs-2.0.0.tgz", + "integrity": "sha512-Y0AvSwDw8y+nlSNFXMm2g6L51rBGdAQT20J3YSOqxC53Lo3bjWRtr2BKcfYoAf352WYpsZSTURrA0tqhfgudPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "stubborn-utils": "^1.0.1" + } + }, + "node_modules/stubborn-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stubborn-utils/-/stubborn-utils-1.0.2.tgz", + "integrity": "sha512-zOh9jPYI+xrNOyisSelgym4tolKTJCQd5GBhK0+0xJvcYDcwlOoxF/rnFKQ2KRZknXSG9jWAp66fwP6AxN9STg==", + "dev": true, + "license": "MIT" + }, "node_modules/style-search": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/stylehacks": { "version": "6.1.1", @@ -17814,119 +21161,313 @@ } }, "node_modules/stylelint": { - "version": "14.16.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.16.1.tgz", - "integrity": "sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==", + "version": "16.26.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.26.1.tgz", + "integrity": "sha512-v20V59/crfc8sVTAtge0mdafI3AdnzQ2KsWe6v523L4OA1bJO02S7MO2oyXDCS6iWb9ckIPnqAFVItqSBQr7jw==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "license": "MIT", "dependencies": { - "@csstools/selector-specificity": "^2.0.2", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-syntax-patches-for-csstree": "^1.0.19", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3", + "@csstools/selector-specificity": "^5.0.0", + "@dual-bundle/import-meta-resolve": "^4.2.1", "balanced-match": "^2.0.0", "colord": "^2.9.3", - "cosmiconfig": "^7.1.0", - "css-functions-list": "^3.1.0", - "debug": "^4.3.4", - "fast-glob": "^3.2.12", + "cosmiconfig": "^9.0.0", + "css-functions-list": "^3.2.3", + "css-tree": "^3.1.0", + "debug": "^4.4.3", + "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^11.1.1", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", - "html-tags": "^3.2.0", - "ignore": "^5.2.1", - "import-lazy": "^4.0.0", + "html-tags": "^3.3.1", + "ignore": "^7.0.5", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.26.0", + "known-css-properties": "^0.37.0", "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", - "micromatch": "^4.0.5", + "meow": "^13.2.0", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.19", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", + "picocolors": "^1.1.1", + "postcss": "^8.5.6", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.1", + "postcss-selector-parser": "^7.1.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "style-search": "^0.1.0", - "supports-hyperlinks": "^2.3.0", + "supports-hyperlinks": "^3.2.0", "svg-tags": "^1.0.0", - "table": "^6.8.1", - "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^4.0.2" + "table": "^6.9.0", + "write-file-atomic": "^5.0.1" }, "bin": { - "stylelint": "bin/stylelint.js" + "stylelint": "bin/stylelint.mjs" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" + "node": ">=18.12.0" } }, "node_modules/stylelint-config-recommended": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-6.0.0.tgz", - "integrity": "sha512-ZorSSdyMcxWpROYUvLEMm0vSZud2uB7tX1hzBZwvVY9SV/uly4AvvJPPhCcymZL3fcQhEQG5AELmrxWqtmzacw==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz", + "integrity": "sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, "peerDependencies": { - "stylelint": "^14.0.0" + "stylelint": "^16.1.0" } }, "node_modules/stylelint-config-recommended-scss": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-5.0.2.tgz", - "integrity": "sha512-b14BSZjcwW0hqbzm9b0S/ScN2+3CO3O4vcMNOw2KGf8lfVSwJ4p5TbNEXKwKl1+0FMtgRXZj6DqVUe/7nGnuBg==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.1.0.tgz", + "integrity": "sha512-bhaMhh1u5dQqSsf6ri2GVWWQW5iUjBYgcHkh7SgDDn92ijoItC/cfO/W+fpXshgTQWhwFkP1rVcewcv4jaftRg==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-scss": "^4.0.2", - "stylelint-config-recommended": "^6.0.0", - "stylelint-scss": "^4.0.0" + "postcss-scss": "^4.0.9", + "stylelint-config-recommended": "^14.0.1", + "stylelint-scss": "^6.4.0" + }, + "engines": { + "node": ">=18.12.0" }, "peerDependencies": { - "stylelint": "^14.0.0" + "postcss": "^8.3.3", + "stylelint": "^16.6.1" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + } } }, "node_modules/stylelint-scss": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.7.0.tgz", - "integrity": "sha512-TSUgIeS0H3jqDZnby1UO1Qv3poi1N8wUYIJY6D1tuUq2MN3lwp/rITVo0wD+1SWTmRm0tNmGO0b7nKInnqF6Hg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.14.0.tgz", + "integrity": "sha512-ZKmHMZolxeuYsnB+PCYrTpFce0/QWX9i9gh0hPXzp73WjuIMqUpzdQaBCrKoLWh6XtCFSaNDErkMPqdjy1/8aA==", "dev": true, + "license": "MIT", "dependencies": { + "css-tree": "^3.0.1", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.37.0", + "mdn-data": "^2.25.0", "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-selector-parser": "^6.0.11", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-selector-parser": "^7.1.1", "postcss-value-parser": "^4.2.0" }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.8.2" + } + }, + "node_modules/stylelint-scss/node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/stylelint-scss/node_modules/css-tree/node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/stylelint-scss/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stylelint-scss/node_modules/mdn-data": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.26.0.tgz", + "integrity": "sha512-ZqI0qjKWHMPcGUfLmlr80NPNVHIOjPMHtIOe1qXYFGS0YBZ1YKAzo9yk8W+gGrLCN0Xdv/RKxqdIsqPakEfmow==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/stylelint-scss/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/stylelint/node_modules/@csstools/media-query-list-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", + "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, "peerDependencies": { - "stylelint": "^14.5.1 || ^15.0.0" + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, + "node_modules/stylelint/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/stylelint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, "node_modules/stylelint/node_modules/balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/stylelint/node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/stylelint/node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/stylelint/node_modules/file-entry-cache": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.2.tgz", + "integrity": "sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^6.1.20" + } + }, + "node_modules/stylelint/node_modules/flat-cache": { + "version": "6.1.20", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.20.tgz", + "integrity": "sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cacheable": "^2.3.2", + "flatted": "^3.3.3", + "hookified": "^1.15.0" } }, "node_modules/stylelint/node_modules/global-modules": { @@ -17934,6 +21475,7 @@ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, + "license": "MIT", "dependencies": { "global-prefix": "^3.0.0" }, @@ -17946,6 +21488,7 @@ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, + "license": "MIT", "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -17955,24 +21498,123 @@ "node": ">=6" } }, + "node_modules/stylelint/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/stylelint/node_modules/is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/stylelint/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/stylelint/node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/stylelint/node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/stylelint/node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/stylelint/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/stylelint/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/stylelint/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -17986,16 +21628,20 @@ } }, "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", + "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -18060,13 +21706,15 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/synckit": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", - "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, + "license": "MIT", "dependencies": { "@pkgr/core": "^0.2.9" }, @@ -18082,6 +21730,7 @@ "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -18098,6 +21747,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -18113,16 +21763,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/tannin": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tannin/-/tannin-1.2.0.tgz", - "integrity": "sha512-U7GgX/RcSeUETbV7gYgoz8PD7Ni4y95pgIP/Z6ayI3CfhSujwKEBlGFTCRN+Aqnuyf4AN2yHL+L8x+TCGjb9uA==", "dev": true, - "dependencies": { - "@tannin/plural-forms": "^1.1.0" - } + "license": "MIT" }, "node_modules/tapable": { "version": "2.2.3", @@ -18138,31 +21780,45 @@ } }, "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", + "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", "dev": true, + "license": "MIT", "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" } }, "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, + "license": "MIT", "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/tar-stream/node_modules/b4a": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", + "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" }, - "engines": { - "node": ">=6" + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } } }, "node_modules/terser": { @@ -18276,6 +21932,7 @@ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -18290,6 +21947,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -18300,6 +21958,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -18312,15 +21971,17 @@ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "b4a": "^1.6.4" } }, "node_modules/text-decoder/node_modules/b4a": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.1.tgz", - "integrity": "sha512-ZovbrBV0g6JxK5cGUF1Suby1vLfKjv4RWi8IxoaO/Mon8BDD9I21RxjHFtgQ+kskJqLAVyQZly3uMBui+vhc8Q==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", + "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", "dev": true, + "license": "Apache-2.0", "peerDependencies": { "react-native-b4a": "*" }, @@ -18336,29 +21997,135 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/thingies": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", + "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "^2" + } + }, "node_modules/third-party-web": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/third-party-web/-/third-party-web-0.23.4.tgz", - "integrity": "sha512-kwYnSZRhEvv0SBW2fp8SBBKRglMoBjV8xz6C31m0ewqOtknB5UL+Ihg+M81hyFY5ldkZuGWPb+e4GVDkzf/gYg==", - "dev": true + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/third-party-web/-/third-party-web-0.27.0.tgz", + "integrity": "sha512-h0JYX+dO2Zr3abCQpS6/uFjujaOjA1DyDzGQ41+oFn9VW/ARiq9g5ln7qEP9+BTzDpOMyIfsfj4OvfgXAsMUSA==", + "dev": true, + "license": "MIT" }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tldts": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", + "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.86" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", + "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tldts-icann": { + "version": "7.0.19", + "resolved": "https://registry.npmjs.org/tldts-icann/-/tldts-icann-7.0.19.tgz", + "integrity": "sha512-PZgda8E2cXMNa7QlBbiZh3vcS8UaPTDRIBmcGPDlujSMtQLrzjvikeJxzQSqWxn3muaMJ7BsC+aL464Yl2I6cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^7.0.19" + } + }, + "node_modules/tldts-icann/node_modules/tldts-core": { + "version": "7.0.19", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.19.tgz", + "integrity": "sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==", + "dev": true, + "license": "MIT" }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/to-regex-range": { "version": "5.0.1", @@ -18377,6 +22144,7 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6" } @@ -18391,30 +22159,46 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "tldts": "^6.1.32" }, "engines": { - "node": ">=6" + "node": ">=16" } }, "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", + "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", "dev": true, + "license": "MIT", "dependencies": { - "punycode": "^2.1.1" + "punycode": "^2.3.1" }, "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/tree-dump": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", + "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, "node_modules/tree-kill": { @@ -18422,6 +22206,7 @@ "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, + "license": "MIT", "bin": { "tree-kill": "cli.js" } @@ -18431,6 +22216,7 @@ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -18461,6 +22247,7 @@ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -18473,6 +22260,7 @@ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -18485,6 +22273,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -18497,6 +22286,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -18512,6 +22302,7 @@ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -18526,7 +22317,28 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "dev": true, + "license": "0BSD" + }, + "node_modules/tsyringe": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz", + "integrity": "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.9.3" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/tsyringe/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", @@ -18545,6 +22357,7 @@ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -18566,6 +22379,7 @@ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -18648,14 +22462,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "node_modules/typed-query-selector": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", + "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==", "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } + "license": "MIT" }, "node_modules/typescript": { "version": "5.9.2", @@ -18700,6 +22512,7 @@ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, + "license": "MIT", "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" @@ -18751,36 +22564,51 @@ "node": ">=4" } }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", @@ -18816,6 +22644,7 @@ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -18825,6 +22654,7 @@ "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -18883,14 +22713,13 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/util-deprecate": { @@ -18904,6 +22733,7 @@ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -18913,21 +22743,17 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "dev": true - }, "node_modules/v8-to-istanbul": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, + "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", @@ -18942,6 +22768,7 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -18952,6 +22779,7 @@ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -18962,6 +22790,7 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -18971,26 +22800,30 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/vite": { - "version": "5.4.20", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.20.tgz", - "integrity": "sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -18999,19 +22832,25 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", - "terser": "^5.4.0" + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "jiti": { + "optional": true + }, "less": { "optional": true }, @@ -19032,9 +22871,46 @@ }, "terser": { "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true } } }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/void-elements": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", @@ -19045,28 +22921,30 @@ } }, "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dev": true, + "license": "MIT", "dependencies": { - "xml-name-validator": "^4.0.0" + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/wait-on": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz", - "integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.5.tgz", + "integrity": "sha512-J3WlS0txVHkhLRb2FsmRg3dkMTCV1+M6Xra3Ho7HzZDHpE7DCOnoSoCJsZotrmW3uRMhvIJGSKUKrh/MeF4iag==", "dev": true, + "license": "MIT", "dependencies": { - "axios": "^1.6.1", - "joi": "^17.11.0", + "axios": "^1.12.1", + "joi": "^18.0.1", "lodash": "^4.17.21", "minimist": "^1.2.8", - "rxjs": "^7.8.1" + "rxjs": "^7.8.2" }, "bin": { "wait-on": "bin/wait-on" @@ -19080,6 +22958,7 @@ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" } @@ -19102,21 +22981,31 @@ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, + "license": "MIT", "dependencies": { "minimalistic-assert": "^1.0.0" } }, "node_modules/web-vitals": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.5.2.tgz", - "integrity": "sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==", - "dev": true + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-4.2.4.tgz", + "integrity": "sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/webdriver-bidi-protocol": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.10.tgz", + "integrity": "sha512-5LAE43jAVLOhB/QqX4bwSiv0Hg1HBfMmOuwBSXHdvg4GMGu9Y0lIq7p4R/yySu6w74WmaR4GM4H9t2IwLW7hgw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=12" } @@ -19226,42 +23115,40 @@ } }, "node_modules/webpack-cli": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", - "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", + "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", "dev": true, + "license": "MIT", "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.1.1", - "@webpack-cli/info": "^2.0.2", - "@webpack-cli/serve": "^2.0.5", + "@discoveryjs/json-ext": "^0.6.1", + "@webpack-cli/configtest": "^3.0.1", + "@webpack-cli/info": "^3.0.1", + "@webpack-cli/serve": "^3.0.1", "colorette": "^2.0.14", - "commander": "^10.0.1", + "commander": "^12.1.0", "cross-spawn": "^7.0.3", - "envinfo": "^7.7.3", + "envinfo": "^7.14.0", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", "interpret": "^3.1.1", "rechoir": "^0.8.0", - "webpack-merge": "^5.7.3" + "webpack-merge": "^6.0.1" }, "bin": { "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=14.15.0" + "node": ">=18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "5.x.x" + "webpack": "^5.82.0" }, "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, "webpack-bundle-analyzer": { "optional": true }, @@ -19270,137 +23157,121 @@ } } }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "node_modules/webpack-cli/node_modules/@discoveryjs/json-ext": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=14" + "node": ">=14.17.0" } }, - "node_modules/webpack-cli/node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/webpack-dev-middleware": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", + "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", "dev": true, + "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "colorette": "^2.0.10", + "memfs": "^4.43.1", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 8" - } - }, - "node_modules/webpack-cli/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" + "node": ">= 18.12.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-cli/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, - "node_modules/webpack-cli/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/webpack-dev-middleware/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, + "license": "MIT", "engines": { - "node": ">= 8" + "node": ">= 0.6" } }, - "node_modules/webpack-dev-middleware": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", - "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "node_modules/webpack-dev-middleware/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "dev": true, + "license": "MIT", "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" + "mime-db": "^1.54.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">=18" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "url": "https://opencollective.com/express" } }, "node_modules/webpack-dev-server": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", - "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", - "dev": true, - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz", + "integrity": "sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.25", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", "colorette": "^2.0.10", - "compression": "^1.7.4", + "compression": "^1.8.1", "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", + "express": "^4.22.1", "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^5.5.0", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.4", - "ws": "^8.13.0" + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "webpack": "^5.0.0" }, "peerDependenciesMeta": { "webpack": { @@ -19416,6 +23287,7 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -19440,6 +23312,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -19452,6 +23325,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -19459,34 +23333,19 @@ "node": ">=8.10.0" } }, - "node_modules/webpack-dev-server/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", "dev": true, + "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", - "wildcard": "^2.0.0" + "wildcard": "^2.0.1" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0" } }, "node_modules/webpack-merge/node_modules/clone-deep": { @@ -19494,6 +23353,7 @@ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -19508,6 +23368,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -19517,6 +23378,7 @@ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -19538,6 +23400,7 @@ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", @@ -19552,54 +23415,70 @@ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=0.8.0" } }, "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", "dev": true, + "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", "dev": true, + "license": "MIT", "dependencies": { - "tr46": "^3.0.0", + "tr46": "^5.1.0", "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, + "node_modules/when-exit": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/when-exit/-/when-exit-2.1.5.tgz", + "integrity": "sha512-VGkKJ564kzt6Ms1dbgPP/yuIoQCrsFAnRbptpC5wOEsDaNsbCB2bnfnaA8i/vRs5tjUSEOtIuvl9/MyVsvQZCg==", + "dev": true, + "license": "MIT" + }, "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, "bin": { - "which": "bin/which" + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, "node_modules/which-boxed-primitive": { @@ -19691,7 +23570,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/word-wrap": { "version": "1.2.5", @@ -19707,6 +23587,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -19730,6 +23611,7 @@ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -19739,10 +23621,11 @@ } }, "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -19759,35 +23642,68 @@ } } }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -19799,12 +23715,21 @@ "dev": true }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", "dev": true, + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, "engines": { - "node": ">= 6" + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/yargs": { @@ -19812,6 +23737,7 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -19826,10 +23752,21 @@ } }, "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -19839,6 +23776,7 @@ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, + "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -19855,9 +23793,50 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } }, "dependencies": { + "@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@asamuzakjp/css-color": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", + "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", + "dev": true, + "requires": { + "@csstools/css-calc": "^2.1.3", + "@csstools/css-color-parser": "^3.0.9", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + }, + "dependencies": { + "lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + } + } + }, "@babel/code-frame": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", @@ -19899,9 +23878,9 @@ } }, "@babel/eslint-parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.4.tgz", - "integrity": "sha512-Aa+yDiH87980jR6zvRfFuCR1+dLb00vBydhTL+zI992Rz/wQhSvuxjmOOuJOgO3XmakO6RykRGD2S1mq1AtgHA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.7.tgz", + "integrity": "sha512-B+BO9x86VYsQHimucBAL1fxTJKF4wyKY6ZVzee9QgzdZOUfs3BaR6AQrgoGrRI+7IFS1wUz/VyQ+SoBcSpdPbw==", "dev": true, "requires": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", @@ -20207,6 +24186,24 @@ "@babel/helper-plugin-utils": "^7.14.5" } }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-import-assertions": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", @@ -20826,17 +24823,29 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.3.tgz", - "integrity": "sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.7.tgz", + "integrity": "sha512-Y9p487tyTzB0yDYQOtWnC+9HGOuogtP3/wNpun1xJXEEvI6vip59BSBTsHnekZLqxmPcgsrAKt46HAAb//xGhg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" + }, + "dependencies": { + "babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" + } + } } }, "@babel/plugin-transform-shorthand-properties": { @@ -21054,9 +25063,9 @@ } }, "@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==" + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==" }, "@babel/template": { "version": "7.27.2", @@ -21100,10 +25109,106 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@csstools/selector-specificity": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", - "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "@cacheable/memory": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.7.tgz", + "integrity": "sha512-RbxnxAMf89Tp1dLhXMS7ceft/PGsDl1Ip7T20z5nZ+pwIAsQ1p2izPjVG69oCLv/jfQ7HDPHTWK0c9rcAWXN3A==", + "dev": true, + "requires": { + "@cacheable/utils": "^2.3.3", + "@keyv/bigmap": "^1.3.0", + "hookified": "^1.14.0", + "keyv": "^5.5.5" + }, + "dependencies": { + "@keyv/bigmap": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.0.tgz", + "integrity": "sha512-KT01GjzV6AQD5+IYrcpoYLkCu1Jod3nau1Z7EsEuViO3TZGRacSbO9MfHmbJ1WaOXFtWLxPVj169cn2WNKPkIg==", + "dev": true, + "requires": { + "hashery": "^1.2.0", + "hookified": "^1.13.0" + } + }, + "keyv": { + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.5.tgz", + "integrity": "sha512-FA5LmZVF1VziNc0bIdCSA1IoSVnDCqE8HJIZZv2/W8YmoAM50+tnUgJR/gQZwEeIMleuIOnRnHA/UaZRNeV4iQ==", + "dev": true, + "requires": { + "@keyv/serialize": "^1.1.1" + } + } + } + }, + "@cacheable/utils": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.3.3.tgz", + "integrity": "sha512-JsXDL70gQ+1Vc2W/KUFfkAJzgb4puKwwKehNLuB+HrNKWf91O736kGfxn4KujXCCSuh6mRRL4XEB0PkAFjWS0A==", + "dev": true, + "requires": { + "hashery": "^1.3.0", + "keyv": "^5.5.5" + }, + "dependencies": { + "keyv": { + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.5.tgz", + "integrity": "sha512-FA5LmZVF1VziNc0bIdCSA1IoSVnDCqE8HJIZZv2/W8YmoAM50+tnUgJR/gQZwEeIMleuIOnRnHA/UaZRNeV4iQ==", + "dev": true, + "requires": { + "@keyv/serialize": "^1.1.1" + } + } + } + }, + "@csstools/color-helpers": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "dev": true + }, + "@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "dev": true, + "requires": {} + }, + "@csstools/css-color-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "dev": true, + "requires": { + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" + } + }, + "@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "dev": true, + "requires": {} + }, + "@csstools/css-syntax-patches-for-csstree": { + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.25.tgz", + "integrity": "sha512-g0Kw9W3vjx5BEBAF8c5Fm2NcB/Fs8jJXh85aXqwEXiL+tqtOut07TWgyaGzAAfTM+gKckrrncyeGEZPcaRgm2Q==", + "dev": true + }, + "@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "dev": true + }, + "@csstools/media-query-list-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz", + "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==", "dev": true, "requires": {} }, @@ -21113,6 +25218,48 @@ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, + "@dogado/gravity": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/@dogado/gravity/-/gravity-5.25.3.tgz", + "integrity": "sha512-M/iwMLf2F8q7TbUPnBuZ5MFNxYpoEB9vPu7DjHQ50PxfBD/FpmWz9fV+r8iIGVSeqrCABt17Nj2kvRYIGXhP1g==" + }, + "@dual-bundle/import-meta-resolve": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.2.1.tgz", + "integrity": "sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==", + "dev": true + }, + "@emnapi/core": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "dev": true, + "optional": true, + "requires": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "@emnapi/runtime": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "dev": true, + "optional": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "optional": true, + "requires": { + "tslib": "^2.4.0" + } + }, "@es-joy/jsdoccomment": { "version": "0.41.0", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.41.0.tgz", @@ -21125,163 +25272,184 @@ } }, "@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", "dev": true, "optional": true }, "@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", "dev": true, "optional": true }, "@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", "dev": true, "optional": true }, "@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", "dev": true, "optional": true }, "@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", "dev": true, "optional": true }, "@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", "dev": true, "optional": true }, "@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", "dev": true, "optional": true }, "@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", "dev": true, "optional": true }, "@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", "dev": true, "optional": true }, "@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", "dev": true, "optional": true }, "@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", "dev": true, "optional": true }, "@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", "dev": true, "optional": true }, "@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", "dev": true, "optional": true }, "@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", "dev": true, "optional": true }, "@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", "dev": true, "optional": true }, "@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", "dev": true, "optional": true }, "@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", "dev": true, "optional": true }, "@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", "dev": true, "optional": true }, "@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "dev": true, + "optional": true + }, + "@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", "dev": true, "optional": true }, "@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", "dev": true, "optional": true }, "@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", "dev": true, "optional": true }, "@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", "dev": true, "optional": true }, "@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", "dev": true, "optional": true }, @@ -21341,10 +25509,19 @@ "concat-map": "0.0.1" } }, + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -21364,27 +25541,99 @@ "@eslint/js": { "version": "8.57.1", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==" + }, + "@formatjs/ecma402-abstract": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.6.tgz", + "integrity": "sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw==", + "dev": true, + "requires": { + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/intl-localematcher": "0.6.2", + "decimal.js": "^10.4.3", + "tslib": "^2.8.0" + } + }, + "@formatjs/fast-memoize": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.7.tgz", + "integrity": "sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==", + "dev": true, + "requires": { + "tslib": "^2.8.0" + } + }, + "@formatjs/icu-messageformat-parser": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.4.tgz", + "integrity": "sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw==", + "dev": true, + "requires": { + "@formatjs/ecma402-abstract": "2.3.6", + "@formatjs/icu-skeleton-parser": "1.8.16", + "tslib": "^2.8.0" + } + }, + "@formatjs/icu-skeleton-parser": { + "version": "1.8.16", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.16.tgz", + "integrity": "sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ==", + "dev": true, + "requires": { + "@formatjs/ecma402-abstract": "2.3.6", + "tslib": "^2.8.0" + } + }, + "@formatjs/intl-localematcher": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.2.tgz", + "integrity": "sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==", + "dev": true, + "requires": { + "tslib": "^2.8.0" + } }, - "@group.one/gravity": { - "version": "5.22.1", - "resolved": "https://gitlab.group.one/api/v4/projects/5722/packages/npm/@group.one/gravity/-/@group.one/gravity-5.22.1.tgz", - "integrity": "sha1-3EdTKvE0jRR/MEZEDKoUT3EcsiM=" + "@hapi/address": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-5.1.1.tgz", + "integrity": "sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/formula": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-3.0.2.tgz", + "integrity": "sha512-hY5YPNXzw1He7s0iqkRQi+uMGh383CGdyyIGYtB+W5N3KHPXoqychklvHhKCC9M3Xtv0OCs/IHw+r4dcHtBYWw==", + "dev": true }, "@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.7.tgz", + "integrity": "sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==", + "dev": true + }, + "@hapi/pinpoint": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.1.tgz", + "integrity": "sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==", + "dev": true + }, + "@hapi/tlds": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@hapi/tlds/-/tlds-1.1.4.tgz", + "integrity": "sha512-Fq+20dxsxLaUn5jSSWrdtSRcIUba2JquuorF9UW1wIJS5cSUwxIsO2GIhaWynPRflvxSzFN+gxKte2HEW1OuoA==", "dev": true }, "@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", "dev": true, "requires": { - "@hapi/hoek": "^9.0.0" + "@hapi/hoek": "^11.0.2" } }, "@humanwhocodes/config-array": { @@ -21520,6 +25769,159 @@ "jest-mock": "^29.7.0" } }, + "@jest/environment-jsdom-abstract": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.2.0.tgz", + "integrity": "sha512-kazxw2L9IPuZpQ0mEt9lu9Z98SqR74xcagANmMBU16X0lS23yPc0+S6hGLUz8kVRlomZEs/5S/Zlpqwf5yu6OQ==", + "dev": true, + "requires": { + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/jsdom": "^21.1.7", + "@types/node": "*", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "dependencies": { + "@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", + "dev": true, + "requires": { + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" + } + }, + "@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "dev": true, + "requires": { + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + } + }, + "@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.34.0" + } + }, + "@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "requires": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + } + }, + "@sinclair/typebox": { + "version": "0.34.47", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.47.tgz", + "integrity": "sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==", + "dev": true + }, + "@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.1" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true + }, + "jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + } + }, + "jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "requires": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + } + }, + "jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "requires": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + } + }, + "picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true + }, + "pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "requires": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + } + } + } + }, "@jest/expect": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", @@ -21565,6 +25967,24 @@ "jest-mock": "^29.7.0" } }, + "@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "requires": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "dependencies": { + "jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true + } + } + }, "@jest/reporters": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", @@ -21611,9 +26031,9 @@ } }, "semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true } } @@ -21751,6 +26171,69 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "dev": true, + "requires": {} + }, + "@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "dev": true, + "requires": {} + }, + "@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "dev": true, + "requires": {} + }, + "@jsonjoy.com/json-pack": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", + "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", + "dev": true, + "requires": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + } + }, + "@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "dev": true, + "requires": { + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" + } + }, + "@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "dev": true, + "requires": { + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" + } + }, + "@keyv/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", + "dev": true + }, "@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", @@ -21804,6 +26287,18 @@ "resolved": "https://registry.npmjs.org/@mixpanel/rrweb-utils/-/rrweb-utils-2.0.0-alpha.18.2.tgz", "integrity": "sha512-OomKIB6GTx5xvCLJ7iic2khT/t/tnCJUex13aEqsbSqIT/UzUUsqf+LTrgUK5ex+f6odmkCNjre2y5jvpNqn+g==" }, + "@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "optional": true, + "requires": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, "@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", @@ -21813,6 +26308,12 @@ "eslint-scope": "5.1.1" } }, + "@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -21839,6 +26340,374 @@ "fastq": "^1.6.0" } }, + "@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "dev": true + }, + "@opentelemetry/api-logs": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", + "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "dev": true, + "requires": { + "@opentelemetry/api": "^1.3.0" + } + }, + "@opentelemetry/context-async-hooks": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz", + "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==", + "dev": true, + "requires": {} + }, + "@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "dev": true, + "requires": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "dependencies": { + "@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "dev": true + } + } + }, + "@opentelemetry/instrumentation": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", + "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "dev": true, + "requires": { + "@opentelemetry/api-logs": "0.57.2", + "@types/shimmer": "^1.2.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "dependencies": { + "semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true + } + } + }, + "@opentelemetry/instrumentation-amqplib": { + "version": "0.46.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.46.1.tgz", + "integrity": "sha512-AyXVnlCf/xV3K/rNumzKxZqsULyITJH6OVLiW6730JPRqWA7Zc9bvYoVNpN6iOpTU8CasH34SU/ksVJmObFibQ==", + "dev": true, + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + } + }, + "@opentelemetry/instrumentation-connect": { + "version": "0.43.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.43.1.tgz", + "integrity": "sha512-ht7YGWQuV5BopMcw5Q2hXn3I8eG8TH0J/kc/GMcW4CuNTgiP6wCu44BOnucJWL3CmFWaRHI//vWyAhaC8BwePw==", + "dev": true, + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/connect": "3.4.38" + } + }, + "@opentelemetry/instrumentation-dataloader": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.16.1.tgz", + "integrity": "sha512-K/qU4CjnzOpNkkKO4DfCLSQshejRNAJtd4esgigo/50nxCB6XCyi1dhAblUHM9jG5dRm8eu0FB+t87nIo99LYQ==", + "dev": true, + "requires": { + "@opentelemetry/instrumentation": "^0.57.1" + } + }, + "@opentelemetry/instrumentation-express": { + "version": "0.47.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.47.1.tgz", + "integrity": "sha512-QNXPTWteDclR2B4pDFpz0TNghgB33UMjUt14B+BZPmtH1MwUFAfLHBaP5If0Z5NZC+jaH8oF2glgYjrmhZWmSw==", + "dev": true, + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + } + }, + "@opentelemetry/instrumentation-fs": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.19.1.tgz", + "integrity": "sha512-6g0FhB3B9UobAR60BGTcXg4IHZ6aaYJzp0Ki5FhnxyAPt8Ns+9SSvgcrnsN2eGmk3RWG5vYycUGOEApycQL24A==", + "dev": true, + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1" + } + }, + "@opentelemetry/instrumentation-generic-pool": { + "version": "0.43.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.43.1.tgz", + "integrity": "sha512-M6qGYsp1cURtvVLGDrPPZemMFEbuMmCXgQYTReC/IbimV5sGrLBjB+/hANUpRZjX67nGLdKSVLZuQQAiNz+sww==", + "dev": true, + "requires": { + "@opentelemetry/instrumentation": "^0.57.1" + } + }, + "@opentelemetry/instrumentation-graphql": { + "version": "0.47.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.47.1.tgz", + "integrity": "sha512-EGQRWMGqwiuVma8ZLAZnExQ7sBvbOx0N/AE/nlafISPs8S+QtXX+Viy6dcQwVWwYHQPAcuY3bFt3xgoAwb4ZNQ==", + "dev": true, + "requires": { + "@opentelemetry/instrumentation": "^0.57.1" + } + }, + "@opentelemetry/instrumentation-hapi": { + "version": "0.45.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.45.2.tgz", + "integrity": "sha512-7Ehow/7Wp3aoyCrZwQpU7a2CnoMq0XhIcioFuKjBb0PLYfBfmTsFTUyatlHu0fRxhwcRsSQRTvEhmZu8CppBpQ==", + "dev": true, + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + } + }, + "@opentelemetry/instrumentation-http": { + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.57.2.tgz", + "integrity": "sha512-1Uz5iJ9ZAlFOiPuwYg29Bf7bJJc/GeoeJIFKJYQf67nTVKFe8RHbEtxgkOmK4UGZNHKXcpW4P8cWBYzBn1USpg==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/instrumentation": "0.57.2", + "@opentelemetry/semantic-conventions": "1.28.0", + "forwarded-parse": "2.1.2", + "semver": "^7.5.2" + }, + "dependencies": { + "@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "dev": true + }, + "semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true + } + } + }, + "@opentelemetry/instrumentation-ioredis": { + "version": "0.47.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.47.1.tgz", + "integrity": "sha512-OtFGSN+kgk/aoKgdkKQnBsQFDiG8WdCxu+UrHr0bXScdAmtSzLSraLo7wFIb25RVHfRWvzI5kZomqJYEg/l1iA==", + "dev": true, + "requires": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/redis-common": "^0.36.2", + "@opentelemetry/semantic-conventions": "^1.27.0" + } + }, + "@opentelemetry/instrumentation-kafkajs": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.7.1.tgz", + "integrity": "sha512-OtjaKs8H7oysfErajdYr1yuWSjMAectT7Dwr+axIoZqT9lmEOkD/H/3rgAs8h/NIuEi2imSXD+vL4MZtOuJfqQ==", + "dev": true, + "requires": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + } + }, + "@opentelemetry/instrumentation-knex": { + "version": "0.44.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.44.1.tgz", + "integrity": "sha512-U4dQxkNhvPexffjEmGwCq68FuftFK15JgUF05y/HlK3M6W/G2iEaACIfXdSnwVNe9Qh0sPfw8LbOPxrWzGWGMQ==", + "dev": true, + "requires": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + } + }, + "@opentelemetry/instrumentation-koa": { + "version": "0.47.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.47.1.tgz", + "integrity": "sha512-l/c+Z9F86cOiPJUllUCt09v+kICKvT+Vg1vOAJHtHPsJIzurGayucfCMq2acd/A/yxeNWunl9d9eqZ0G+XiI6A==", + "dev": true, + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + } + }, + "@opentelemetry/instrumentation-lru-memoizer": { + "version": "0.44.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.44.1.tgz", + "integrity": "sha512-5MPkYCvG2yw7WONEjYj5lr5JFehTobW7wX+ZUFy81oF2lr9IPfZk9qO+FTaM0bGEiymwfLwKe6jE15nHn1nmHg==", + "dev": true, + "requires": { + "@opentelemetry/instrumentation": "^0.57.1" + } + }, + "@opentelemetry/instrumentation-mongodb": { + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.52.0.tgz", + "integrity": "sha512-1xmAqOtRUQGR7QfJFfGV/M2kC7wmI2WgZdpru8hJl3S0r4hW0n3OQpEHlSGXJAaNFyvT+ilnwkT+g5L4ljHR6g==", + "dev": true, + "requires": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + } + }, + "@opentelemetry/instrumentation-mongoose": { + "version": "0.46.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.46.1.tgz", + "integrity": "sha512-3kINtW1LUTPkiXFRSSBmva1SXzS/72we/jL22N+BnF3DFcoewkdkHPYOIdAAk9gSicJ4d5Ojtt1/HeibEc5OQg==", + "dev": true, + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + } + }, + "@opentelemetry/instrumentation-mysql": { + "version": "0.45.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.45.1.tgz", + "integrity": "sha512-TKp4hQ8iKQsY7vnp/j0yJJ4ZsP109Ht6l4RHTj0lNEG1TfgTrIH5vJMbgmoYXWzNHAqBH2e7fncN12p3BP8LFg==", + "dev": true, + "requires": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/mysql": "2.15.26" + } + }, + "@opentelemetry/instrumentation-mysql2": { + "version": "0.45.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.45.2.tgz", + "integrity": "sha512-h6Ad60FjCYdJZ5DTz1Lk2VmQsShiViKe0G7sYikb0GHI0NVvApp2XQNRHNjEMz87roFttGPLHOYVPlfy+yVIhQ==", + "dev": true, + "requires": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@opentelemetry/sql-common": "^0.40.1" + } + }, + "@opentelemetry/instrumentation-pg": { + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.51.1.tgz", + "integrity": "sha512-QxgjSrxyWZc7Vk+qGSfsejPVFL1AgAJdSBMYZdDUbwg730D09ub3PXScB9d04vIqPriZ+0dqzjmQx0yWKiCi2Q==", + "dev": true, + "requires": { + "@opentelemetry/core": "^1.26.0", + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@opentelemetry/sql-common": "^0.40.1", + "@types/pg": "8.6.1", + "@types/pg-pool": "2.0.6" + } + }, + "@opentelemetry/instrumentation-redis-4": { + "version": "0.46.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.46.1.tgz", + "integrity": "sha512-UMqleEoabYMsWoTkqyt9WAzXwZ4BlFZHO40wr3d5ZvtjKCHlD4YXLm+6OLCeIi/HkX7EXvQaz8gtAwkwwSEvcQ==", + "dev": true, + "requires": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/redis-common": "^0.36.2", + "@opentelemetry/semantic-conventions": "^1.27.0" + } + }, + "@opentelemetry/instrumentation-tedious": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.18.1.tgz", + "integrity": "sha512-5Cuy/nj0HBaH+ZJ4leuD7RjgvA844aY2WW+B5uLcWtxGjRZl3MNLuxnNg5DYWZNPO+NafSSnra0q49KWAHsKBg==", + "dev": true, + "requires": { + "@opentelemetry/instrumentation": "^0.57.1", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/tedious": "^4.0.14" + } + }, + "@opentelemetry/instrumentation-undici": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.10.1.tgz", + "integrity": "sha512-rkOGikPEyRpMCmNu9AQuV5dtRlDmJp2dK5sw8roVshAGoB6hH/3QjDtRhdwd75SsJwgynWUNRUYe0wAkTo16tQ==", + "dev": true, + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.57.1" + } + }, + "@opentelemetry/redis-common": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz", + "integrity": "sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==", + "dev": true + }, + "@opentelemetry/resources": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", + "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "dependencies": { + "@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "dev": true + } + } + }, + "@opentelemetry/sdk-trace-base": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", + "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "dependencies": { + "@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "dev": true + } + } + }, + "@opentelemetry/semantic-conventions": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.39.0.tgz", + "integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==", + "dev": true + }, + "@opentelemetry/sql-common": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.40.1.tgz", + "integrity": "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==", + "dev": true, + "requires": { + "@opentelemetry/core": "^1.1.0" + } + }, "@parcel/watcher": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", @@ -21956,6 +26825,161 @@ "dev": true, "optional": true }, + "@paulirish/trace_engine": { + "version": "0.0.59", + "resolved": "https://registry.npmjs.org/@paulirish/trace_engine/-/trace_engine-0.0.59.tgz", + "integrity": "sha512-439NUzQGmH+9Y017/xCchBP9571J4bzhpcNhrxorf7r37wcyJZkgUfrUsRL3xl+JDcZ6ORhoFCzCw98c6S3YHw==", + "dev": true, + "requires": { + "legacy-javascript": "latest", + "third-party-web": "latest" + } + }, + "@peculiar/asn1-cms": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.6.0.tgz", + "integrity": "sha512-2uZqP+ggSncESeUF/9Su8rWqGclEfEiz1SyU02WX5fUONFfkjzS2Z/F1Li0ofSmf4JqYXIOdCAZqIXAIBAT1OA==", + "dev": true, + "requires": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "@peculiar/asn1-x509-attr": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "@peculiar/asn1-csr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.6.0.tgz", + "integrity": "sha512-BeWIu5VpTIhfRysfEp73SGbwjjoLL/JWXhJ/9mo4vXnz3tRGm+NGm3KNcRzQ9VMVqwYS2RHlolz21svzRXIHPQ==", + "dev": true, + "requires": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "@peculiar/asn1-ecc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.6.0.tgz", + "integrity": "sha512-FF3LMGq6SfAOwUG2sKpPXblibn6XnEIKa+SryvUl5Pik+WR9rmRA3OCiwz8R3lVXnYnyRkSZsSLdml8H3UiOcw==", + "dev": true, + "requires": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "@peculiar/asn1-pfx": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.6.0.tgz", + "integrity": "sha512-rtUvtf+tyKGgokHHmZzeUojRZJYPxoD/jaN1+VAB4kKR7tXrnDCA/RAWXAIhMJJC+7W27IIRGe9djvxKgsldCQ==", + "dev": true, + "requires": { + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-pkcs8": "^2.6.0", + "@peculiar/asn1-rsa": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "@peculiar/asn1-pkcs8": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.6.0.tgz", + "integrity": "sha512-KyQ4D8G/NrS7Fw3XCJrngxmjwO/3htnA0lL9gDICvEQ+GJ+EPFqldcJQTwPIdvx98Tua+WjkdKHSC0/Km7T+lA==", + "dev": true, + "requires": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "@peculiar/asn1-pkcs9": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.6.0.tgz", + "integrity": "sha512-b78OQ6OciW0aqZxdzliXGYHASeCvvw5caqidbpQRYW2mBtXIX2WhofNXTEe7NyxTb0P6J62kAAWLwn0HuMF1Fw==", + "dev": true, + "requires": { + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-pfx": "^2.6.0", + "@peculiar/asn1-pkcs8": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "@peculiar/asn1-x509-attr": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "@peculiar/asn1-rsa": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.6.0.tgz", + "integrity": "sha512-Nu4C19tsrTsCp9fDrH+sdcOKoVfdfoQQ7S3VqjJU6vedR7tY3RLkQ5oguOIB3zFW33USDUuYZnPEQYySlgha4w==", + "dev": true, + "requires": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "@peculiar/asn1-schema": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz", + "integrity": "sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==", + "dev": true, + "requires": { + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "@peculiar/asn1-x509": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.6.0.tgz", + "integrity": "sha512-uzYbPEpoQiBoTq0/+jZtpM6Gq6zADBx+JNFP3yqRgziWBxQ/Dt/HcuvRfm9zJTPdRcBqPNdaRHTVwpyiq6iNMA==", + "dev": true, + "requires": { + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "@peculiar/asn1-x509-attr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.6.0.tgz", + "integrity": "sha512-MuIAXFX3/dc8gmoZBkwJWxUWOSvG4MMDntXhrOZpJVMkYX+MYc/rUAU2uJOved9iJEoiUx7//3D8oG83a78UJA==", + "dev": true, + "requires": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "@peculiar/x509": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.3.tgz", + "integrity": "sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==", + "dev": true, + "requires": { + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-csr": "^2.6.0", + "@peculiar/asn1-ecc": "^2.6.0", + "@peculiar/asn1-pkcs9": "^2.6.0", + "@peculiar/asn1-rsa": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "pvtsutils": "^1.3.6", + "reflect-metadata": "^0.2.2", + "tslib": "^2.8.1", + "tsyringe": "^4.10.0" + } + }, "@pkgr/core": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", @@ -21963,13 +26987,13 @@ "dev": true }, "@playwright/test": { - "version": "1.55.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.55.0.tgz", - "integrity": "sha512-04IXzPwHrW69XusN/SIdDdKZBzMfOT9UNT/YiJit/xpy2VuAoB8NHc8Aplb96zsWDddLnbkPL3TsmrS04ZU2xQ==", + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz", + "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", "dev": true, "peer": true, "requires": { - "playwright": "1.55.0" + "playwright": "1.57.0" } }, "@pmmmwh/react-refresh-webpack-plugin": { @@ -21993,79 +27017,36 @@ "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", "dev": true }, + "@prisma/instrumentation": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-6.11.1.tgz", + "integrity": "sha512-mrZOev24EDhnefmnZX7WVVT7v+r9LttPRqf54ONvj6re4XMF7wFTpK2tLJi4XHB7fFp/6xhYbgRel8YV7gQiyA==", + "dev": true, + "requires": { + "@opentelemetry/instrumentation": "^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0" + } + }, "@puppeteer/browsers": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.6.tgz", - "integrity": "sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.6.1.tgz", + "integrity": "sha512-aBSREisdsGH890S2rQqK82qmQYU3uFpSH8wcZWHgHzl3LfzsxAKbLNiAG9mO8v1Y0UICBeClICxPJvyr0rcuxg==", "dev": true, "requires": { - "debug": "4.3.4", - "extract-zip": "2.0.1", - "progress": "2.0.3", - "proxy-agent": "6.3.0", - "tar-fs": "3.0.4", - "unbzip2-stream": "1.4.3", - "yargs": "17.7.1" + "debug": "^4.4.0", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.5.0", + "semver": "^7.6.3", + "tar-fs": "^3.0.6", + "unbzip2-stream": "^1.4.3", + "yargs": "^17.7.2" }, "dependencies": { - "b4a": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.1.tgz", - "integrity": "sha512-ZovbrBV0g6JxK5cGUF1Suby1vLfKjv4RWi8IxoaO/Mon8BDD9I21RxjHFtgQ+kskJqLAVyQZly3uMBui+vhc8Q==", - "dev": true, - "requires": {} - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true - }, - "tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", - "dev": true, - "requires": { - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - } - }, - "tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dev": true, - "requires": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - } } } }, @@ -22229,133 +27210,74 @@ "dev": true }, "@sentry/core": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz", - "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==", - "dev": true, - "requires": { - "@sentry/hub": "6.19.7", - "@sentry/minimal": "6.19.7", - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/hub": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", - "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", - "dev": true, - "requires": { - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/minimal": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", - "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", - "dev": true, - "requires": { - "@sentry/hub": "6.19.7", - "@sentry/types": "6.19.7", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/node": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.7.tgz", - "integrity": "sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==", - "dev": true, - "requires": { - "@sentry/core": "6.19.7", - "@sentry/hub": "6.19.7", - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/types": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", - "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==", + "version": "9.47.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.47.1.tgz", + "integrity": "sha512-KX62+qIt4xgy8eHKHiikfhz2p5fOciXd0Cl+dNzhgPFq8klq4MGMNaf148GB3M/vBqP4nw/eFvRMAayFCgdRQw==", "dev": true }, - "@sentry/utils": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", - "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", - "dev": true, - "requires": { - "@sentry/types": "6.19.7", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sideway/address": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "dev": true, - "requires": { - "@hapi/hoek": "^9.0.0" + "@sentry/node": { + "version": "9.47.1", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-9.47.1.tgz", + "integrity": "sha512-CDbkasBz3fnWRKSFs6mmaRepM2pa+tbZkrqhPWifFfIkJDidtVW40p6OnquTvPXyPAszCnDZRnZT14xyvNmKPQ==", + "dev": true, + "requires": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^1.30.1", + "@opentelemetry/core": "^1.30.1", + "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation-amqplib": "^0.46.1", + "@opentelemetry/instrumentation-connect": "0.43.1", + "@opentelemetry/instrumentation-dataloader": "0.16.1", + "@opentelemetry/instrumentation-express": "0.47.1", + "@opentelemetry/instrumentation-fs": "0.19.1", + "@opentelemetry/instrumentation-generic-pool": "0.43.1", + "@opentelemetry/instrumentation-graphql": "0.47.1", + "@opentelemetry/instrumentation-hapi": "0.45.2", + "@opentelemetry/instrumentation-http": "0.57.2", + "@opentelemetry/instrumentation-ioredis": "0.47.1", + "@opentelemetry/instrumentation-kafkajs": "0.7.1", + "@opentelemetry/instrumentation-knex": "0.44.1", + "@opentelemetry/instrumentation-koa": "0.47.1", + "@opentelemetry/instrumentation-lru-memoizer": "0.44.1", + "@opentelemetry/instrumentation-mongodb": "0.52.0", + "@opentelemetry/instrumentation-mongoose": "0.46.1", + "@opentelemetry/instrumentation-mysql": "0.45.1", + "@opentelemetry/instrumentation-mysql2": "0.45.2", + "@opentelemetry/instrumentation-pg": "0.51.1", + "@opentelemetry/instrumentation-redis-4": "0.46.1", + "@opentelemetry/instrumentation-tedious": "0.18.1", + "@opentelemetry/instrumentation-undici": "0.10.1", + "@opentelemetry/resources": "^1.30.1", + "@opentelemetry/sdk-trace-base": "^1.30.1", + "@opentelemetry/semantic-conventions": "^1.34.0", + "@prisma/instrumentation": "6.11.1", + "@sentry/core": "9.47.1", + "@sentry/node-core": "9.47.1", + "@sentry/opentelemetry": "9.47.1", + "import-in-the-middle": "^1.14.2", + "minimatch": "^9.0.0" + } + }, + "@sentry/node-core": { + "version": "9.47.1", + "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-9.47.1.tgz", + "integrity": "sha512-7TEOiCGkyShJ8CKtsri9lbgMCbB+qNts2Xq37itiMPN2m+lIukK3OX//L8DC5nfKYZlgikrefS63/vJtm669hQ==", + "dev": true, + "requires": { + "@sentry/core": "9.47.1", + "@sentry/opentelemetry": "9.47.1", + "import-in-the-middle": "^1.14.2" + } + }, + "@sentry/opentelemetry": { + "version": "9.47.1", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-9.47.1.tgz", + "integrity": "sha512-STtFpjF7lwzeoedDJV+5XA6P89BfmFwFftmHSGSe3UTI8z8IoiR5yB6X2vCjSPvXlfeOs13qCNNCEZyznxM8Xw==", + "dev": true, + "requires": { + "@sentry/core": "9.47.1" } }, - "@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true - }, - "@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true - }, "@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -22380,6 +27302,36 @@ "@sinonjs/commons": "^3.0.0" } }, + "@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true + }, + "@stylistic/stylelint-plugin": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@stylistic/stylelint-plugin/-/stylelint-plugin-3.1.3.tgz", + "integrity": "sha512-85fsmzgsIVmyG3/GFrjuYj6Cz8rAM7IZiPiXCMiSMfoDOC1lOrzrXPDk24WqviAghnPqGpx8b0caK2PuewWGFg==", + "dev": true, + "requires": { + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", + "@csstools/media-query-list-parser": "^3.0.1", + "is-plain-object": "^5.0.0", + "postcss": "^8.4.41", + "postcss-selector-parser": "^6.1.2", + "postcss-value-parser": "^4.2.0", + "style-search": "^0.1.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + } + } + }, "@svgr/babel-plugin-add-jsx-attribute": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", @@ -22514,43 +27466,6 @@ "@svgr/plugin-svgo": "8.1.0" } }, - "@tannin/compile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/compile/-/compile-1.1.0.tgz", - "integrity": "sha512-n8m9eNDfoNZoxdvWiTfW/hSPhehzLJ3zW7f8E7oT6mCROoMNWCB4TYtv041+2FMAxweiE0j7i1jubQU4MEC/Gg==", - "dev": true, - "requires": { - "@tannin/evaluate": "^1.2.0", - "@tannin/postfix": "^1.1.0" - } - }, - "@tannin/evaluate": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@tannin/evaluate/-/evaluate-1.2.0.tgz", - "integrity": "sha512-3ioXvNowbO/wSrxsDG5DKIMxC81P0QrQTYai8zFNY+umuoHWRPbQ/TuuDEOju9E+jQDXmj6yI5GyejNuh8I+eg==", - "dev": true - }, - "@tannin/plural-forms": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/plural-forms/-/plural-forms-1.1.0.tgz", - "integrity": "sha512-xl9R2mDZO/qiHam1AgMnAES6IKIg7OBhcXqy6eDsRCdXuxAFPcjrej9HMjyCLE0DJ/8cHf0i5OQTstuBRhpbHw==", - "dev": true, - "requires": { - "@tannin/compile": "^1.1.0" - } - }, - "@tannin/postfix": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tannin/postfix/-/postfix-1.1.0.tgz", - "integrity": "sha512-oocsqY7g0cR+Gur5jRQLSrX2OtpMLMse1I10JQBm8CdGMrDkh1Mg2gjsiquMHRtBs4Qwu5wgEp5GgIYHk4SNPw==", - "dev": true - }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true - }, "@tootallnate/quickjs-emscripten": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", @@ -22563,6 +27478,16 @@ "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "dev": true }, + "@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "optional": true, + "requires": { + "tslib": "^2.4.0" + } + }, "@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -22674,35 +27599,21 @@ "dev": true }, "@types/express": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz", - "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==", + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", "dev": true, "requires": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", - "@types/serve-static": "*" - }, - "dependencies": { - "@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - } + "@types/serve-static": "^1" } }, "@types/express-serve-static-core": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz", - "integrity": "sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==", + "version": "4.19.8", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", "dev": true, "requires": { "@types/node": "*", @@ -22711,16 +27622,6 @@ "@types/send": "*" } }, - "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, "@types/graceful-fs": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", @@ -22737,9 +27638,9 @@ "dev": true }, "@types/http-proxy": { - "version": "1.17.16", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", - "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", "dev": true, "requires": { "@types/node": "*" @@ -22770,9 +27671,9 @@ } }, "@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "version": "21.1.7", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", + "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", "dev": true, "requires": { "@types/node": "*", @@ -22798,21 +27699,21 @@ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true }, - "@types/minimatch": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-6.0.0.tgz", - "integrity": "sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==", - "dev": true, - "requires": { - "minimatch": "*" - } - }, "@types/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", "dev": true }, + "@types/mysql": { + "version": "2.15.26", + "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz", + "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/node": { "version": "24.4.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.4.0.tgz", @@ -22822,15 +27723,6 @@ "undici-types": "~7.11.0" } }, - "@types/node-forge": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", - "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "@types/normalize-package-data": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", @@ -22843,6 +27735,32 @@ "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", "dev": true }, + "@types/pg": { + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", + "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", + "dev": true, + "requires": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" + } + }, + "@types/pg-pool": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.6.tgz", + "integrity": "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==", + "dev": true, + "requires": { + "@types/pg": "*" + } + }, + "@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "dev": true + }, "@types/qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", @@ -22855,10 +27773,27 @@ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true }, + "@types/react": { + "version": "18.3.27", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.27.tgz", + "integrity": "sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "csstype": "^3.2.2" + } + }, + "@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "dev": true, + "requires": {} + }, "@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "dev": true }, "@types/semver": { @@ -22868,12 +27803,11 @@ "dev": true }, "@types/send": { - "version": "0.17.5", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", - "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", "dev": true, "requires": { - "@types/mime": "^1", "@types/node": "*" } }, @@ -22887,16 +27821,34 @@ } }, "@types/serve-static": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz", - "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", "dev": true, "requires": { "@types/http-errors": "*", "@types/node": "*", - "@types/send": "*" + "@types/send": "<1" + }, + "dependencies": { + "@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + } } }, + "@types/shimmer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", + "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==", + "dev": true + }, "@types/sockjs": { "version": "0.3.36", "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", @@ -22910,7 +27862,9 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.6.tgz", "integrity": "sha512-5JcVt1u5HDmlXkwOD2nslZVllBBc7HDuOICfiZah2Z0is8M8g+ddAEawbmd3VjedfDHBzxCaXLs07QEmb7y54g==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "@types/stack-utils": { "version": "2.0.3", @@ -22922,7 +27876,18 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.12.tgz", "integrity": "sha512-bTHG8fcxEqv1M9+TD14P8ok8hjxoOCkfKc8XXLaaD05kI7ohpeI956jtDOD3XHKBQrlyPughUtzm1jtVhHpA5Q==", - "dev": true + "dev": true, + "optional": true, + "peer": true + }, + "@types/tedious": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.14.tgz", + "integrity": "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==", + "dev": true, + "requires": { + "@types/node": "*" + } }, "@types/tough-cookie": { "version": "4.0.5", @@ -22935,6 +27900,8 @@ "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.5.tgz", "integrity": "sha512-TU+fZFBTBcXj/GpDpDaBmgWk/gn96kMZ+uocaFUlV2f8a6WdMzzI44QBCmGcCiYR0Y6ZlNRiyUyKKt5nl/lbzQ==", "dev": true, + "optional": true, + "peer": true, "requires": { "source-map": "^0.6.1" }, @@ -22943,7 +27910,9 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "optional": true, + "peer": true } } }, @@ -22952,6 +27921,8 @@ "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.40.tgz", "integrity": "sha512-u6kMFSBM9HcoTpUXnL6mt2HSzftqb3JgYV6oxIgL2dl6sX6aCa5k6SOkzv5DuZjBTPUE/dJltKtwwuqrkZHpfw==", "dev": true, + "optional": true, + "peer": true, "requires": { "@types/node": "*", "@types/tapable": "^1", @@ -22965,7 +27936,9 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "optional": true, + "peer": true } } }, @@ -22974,6 +27947,8 @@ "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==", "dev": true, + "optional": true, + "peer": true, "requires": { "@types/node": "*", "@types/source-list-map": "*", @@ -22990,9 +27965,9 @@ } }, "@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -23034,9 +28009,9 @@ }, "dependencies": { "semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true } } @@ -23099,9 +28074,9 @@ }, "dependencies": { "semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true } } @@ -23122,9 +28097,9 @@ }, "dependencies": { "semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true } } @@ -23153,6 +28128,142 @@ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "dev": true }, + "@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "dev": true, + "optional": true + }, + "@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "dev": true, + "optional": true + }, + "@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "dev": true, + "optional": true + }, + "@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "dev": true, + "optional": true + }, + "@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "dev": true, + "optional": true + }, + "@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "dev": true, + "optional": true + }, + "@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "dev": true, + "optional": true + }, + "@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "dev": true, + "optional": true + }, + "@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "dev": true, + "optional": true + }, + "@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "dev": true, + "optional": true + }, + "@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "dev": true, + "optional": true + }, + "@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "dev": true, + "optional": true + }, + "@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "dev": true, + "optional": true + }, + "@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "dev": true, + "optional": true + }, + "@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "dev": true, + "optional": true + }, + "@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "dev": true, + "optional": true, + "requires": { + "@napi-rs/wasm-runtime": "^0.2.11" + } + }, + "@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "dev": true, + "optional": true + }, + "@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "dev": true, + "optional": true + }, + "@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "dev": true, + "optional": true + }, "@vitejs/plugin-react": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", @@ -23322,118 +28433,281 @@ } }, "@webpack-cli/configtest": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", + "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", "dev": true, "requires": {} }, "@webpack-cli/info": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", + "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", "dev": true, "requires": {} }, "@webpack-cli/serve": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", - "dev": true, - "requires": {} - }, - "@wordpress/api-fetch": { - "version": "6.55.0", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-6.55.0.tgz", - "integrity": "sha512-1HrCUsJdeRY5Y0IjplotINwqMRO81e7O7VhBScuKk7iOuDm/E1ioKv2uLGnPNWziYu+Zf025byxOqVzXDyM2gw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/i18n": "^4.58.0", - "@wordpress/url": "^3.59.0" - } - }, - "@wordpress/babel-plugin-import-jsx-pragma": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@wordpress/babel-plugin-import-jsx-pragma/-/babel-plugin-import-jsx-pragma-4.41.0.tgz", - "integrity": "sha512-hYxj2Uobxk86ctlfaJou9v13XqXZ30yx4ZwRNu5cH5/LWXe2MIXBTPv7dUk6wqN/qFOjsFvP9jCB0NsW6MnkrA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", + "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", "dev": true, "requires": {} }, "@wordpress/babel-preset-default": { - "version": "7.42.0", - "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-7.42.0.tgz", - "integrity": "sha512-AWSxWuEuzazt/nWomKiaVhYQeXuqxTniPCKhvks58wB3P4UXvSe3hRnO+nujz20IuxIk2xHT6x47HgpDZy30jw==", - "dev": true, - "requires": { - "@babel/core": "^7.16.0", - "@babel/plugin-transform-react-jsx": "^7.16.0", - "@babel/plugin-transform-runtime": "^7.16.0", - "@babel/preset-env": "^7.16.0", - "@babel/preset-typescript": "^7.16.0", - "@babel/runtime": "^7.16.0", - "@wordpress/babel-plugin-import-jsx-pragma": "^4.41.0", - "@wordpress/browserslist-config": "^5.41.0", - "@wordpress/warning": "^2.58.0", + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-8.38.0.tgz", + "integrity": "sha512-5DxPlGcB2EDpZjYI9FD1rOcYRaYuPr9EXNhDsiX+Mbxgj6ZZvWeJAT+E/8YlAOO969skUjxk/BIScQRSE99HbA==", + "dev": true, + "requires": { + "@babel/core": "7.25.7", + "@babel/plugin-syntax-import-attributes": "7.26.0", + "@babel/plugin-transform-react-jsx": "7.25.7", + "@babel/plugin-transform-runtime": "7.25.7", + "@babel/preset-env": "7.25.7", + "@babel/preset-typescript": "7.25.7", + "@wordpress/browserslist-config": "^6.38.0", + "@wordpress/warning": "^3.38.0", "browserslist": "^4.21.10", "core-js": "^3.31.0", "react": "^18.3.0" + }, + "dependencies": { + "@babel/core": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz", + "integrity": "sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helpers": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.7.tgz", + "integrity": "sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/plugin-syntax-jsx": "^7.25.7", + "@babel/types": "^7.25.7" + } + }, + "@babel/preset-env": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.7.tgz", + "integrity": "sha512-Gibz4OUdyNqqLj+7OAvBZxOD7CklCtMA5/j0JgUEwOnaRULsPDXmic2iKxL2DX2vQduPR5wH2hjZas/Vr/Oc0g==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.7", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.25.7", + "@babel/plugin-syntax-import-attributes": "^7.25.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.25.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.7", + "@babel/plugin-transform-async-to-generator": "^7.25.7", + "@babel/plugin-transform-block-scoped-functions": "^7.25.7", + "@babel/plugin-transform-block-scoping": "^7.25.7", + "@babel/plugin-transform-class-properties": "^7.25.7", + "@babel/plugin-transform-class-static-block": "^7.25.7", + "@babel/plugin-transform-classes": "^7.25.7", + "@babel/plugin-transform-computed-properties": "^7.25.7", + "@babel/plugin-transform-destructuring": "^7.25.7", + "@babel/plugin-transform-dotall-regex": "^7.25.7", + "@babel/plugin-transform-duplicate-keys": "^7.25.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.7", + "@babel/plugin-transform-dynamic-import": "^7.25.7", + "@babel/plugin-transform-exponentiation-operator": "^7.25.7", + "@babel/plugin-transform-export-namespace-from": "^7.25.7", + "@babel/plugin-transform-for-of": "^7.25.7", + "@babel/plugin-transform-function-name": "^7.25.7", + "@babel/plugin-transform-json-strings": "^7.25.7", + "@babel/plugin-transform-literals": "^7.25.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.7", + "@babel/plugin-transform-member-expression-literals": "^7.25.7", + "@babel/plugin-transform-modules-amd": "^7.25.7", + "@babel/plugin-transform-modules-commonjs": "^7.25.7", + "@babel/plugin-transform-modules-systemjs": "^7.25.7", + "@babel/plugin-transform-modules-umd": "^7.25.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.7", + "@babel/plugin-transform-new-target": "^7.25.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.7", + "@babel/plugin-transform-numeric-separator": "^7.25.7", + "@babel/plugin-transform-object-rest-spread": "^7.25.7", + "@babel/plugin-transform-object-super": "^7.25.7", + "@babel/plugin-transform-optional-catch-binding": "^7.25.7", + "@babel/plugin-transform-optional-chaining": "^7.25.7", + "@babel/plugin-transform-parameters": "^7.25.7", + "@babel/plugin-transform-private-methods": "^7.25.7", + "@babel/plugin-transform-private-property-in-object": "^7.25.7", + "@babel/plugin-transform-property-literals": "^7.25.7", + "@babel/plugin-transform-regenerator": "^7.25.7", + "@babel/plugin-transform-reserved-words": "^7.25.7", + "@babel/plugin-transform-shorthand-properties": "^7.25.7", + "@babel/plugin-transform-spread": "^7.25.7", + "@babel/plugin-transform-sticky-regex": "^7.25.7", + "@babel/plugin-transform-template-literals": "^7.25.7", + "@babel/plugin-transform-typeof-symbol": "^7.25.7", + "@babel/plugin-transform-unicode-escapes": "^7.25.7", + "@babel/plugin-transform-unicode-property-regex": "^7.25.7", + "@babel/plugin-transform-unicode-regex": "^7.25.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.38.1", + "semver": "^6.3.1" + } + }, + "@babel/preset-typescript": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.25.7.tgz", + "integrity": "sha512-rkkpaXJZOFN45Fb+Gki0c+KMIglk4+zZXOoMJuyEK8y8Kkc8Jd3BDmP7qPsz0zQMJj+UD7EprF+AqAXcILnexw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "@babel/plugin-syntax-jsx": "^7.25.7", + "@babel/plugin-transform-modules-commonjs": "^7.25.7", + "@babel/plugin-transform-typescript": "^7.25.7" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" + } + } } }, "@wordpress/base-styles": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-4.49.0.tgz", - "integrity": "sha512-yFRYqNtd26ULZ0oAHhCu/IcaA0XHI3E7kRCKajZqUvyRQj7YprXnpD3o0/pnwvF6ZFTXzCX8pXHjUc2TIv97ig==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-6.14.0.tgz", + "integrity": "sha512-0NoWb5+gVGUMZ8RiAE4g4dJ08ZdSMrWdnt/fp//BclezTdOLepZPzZ9O6nDWLVdlNgnYLhPwK/t5jxOow5WRoA==", "dev": true }, "@wordpress/browserslist-config": { - "version": "5.41.0", - "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-5.41.0.tgz", - "integrity": "sha512-J7ejzzDpPZddVIiq2YiK8J/pNTJDy3X1s+5ZtwkwklCxBMZJurxf9pEhtbaf7us0Q6c1j8Ubv7Fpx3lqk2ypxA==", + "version": "6.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-6.38.0.tgz", + "integrity": "sha512-cLm8mg7jHdajpkuC0ohjy1/DWB7X/mrW8N5spA0ukKfj+CbJi7+PVFeeEPCjDLEybnlqrVCJ8VaLaxde+xU3UA==", "dev": true }, "@wordpress/dependency-extraction-webpack-plugin": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-4.31.0.tgz", - "integrity": "sha512-Xpm8EEhi6e8GL1juYh/70AFbcE/ZVXJ3p47KMkkEsn5t+hG9QHjKe2lTj98v2r3rB+ampoK+whdV1w6gItXYpw==", + "version": "6.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-6.38.0.tgz", + "integrity": "sha512-N/wjZ7Ne5D3ASXgEqKhLeAsbYPUtmSAXmyd31dMChIP6HnN9kuN+iyrxNR3COg2VoW7K9VAhwTzEEGQrOQv/rw==", "dev": true, "requires": { - "json2php": "^0.0.7", - "webpack-sources": "^3.2.2" + "json2php": "^0.0.7" + }, + "dependencies": { + "json2php": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/json2php/-/json2php-0.0.7.tgz", + "integrity": "sha512-dnSoUiLAoVaMXxFsVi4CrPVYMKOuDBXTghXSmMINX44RZ8WM9cXlY7UqrQnlAcODCVO7FV3+8t/5nDKAjimLfg==", + "dev": true + } } }, - "@wordpress/e2e-test-utils-playwright": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-0.16.0.tgz", - "integrity": "sha512-CktRj5/Cc/pAvTHXIAPIMrmmnb0VjtXbTGSjYG6pW/JI2YAmpwY2yBA+DlHJjqOIpcjDDj+sSsJomRSxT2chwQ==", + "@wordpress/element": { + "version": "6.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-6.38.0.tgz", + "integrity": "sha512-4N9xtuE2TIvaZ037fQREKrBw4TTt90PWswAfNFvxUVu5vdp91PLuR6rmeO0ohKg2CJLzozQLEKZF+6VuSaYowQ==", "dev": true, "requires": { - "@wordpress/api-fetch": "^6.45.0", - "@wordpress/keycodes": "^3.48.0", - "@wordpress/url": "^3.49.0", + "@types/react": "^18.3.27", + "@types/react-dom": "^18.3.1", + "@wordpress/escape-html": "^3.38.0", "change-case": "^4.1.2", - "form-data": "^4.0.0", - "get-port": "^5.1.1", - "lighthouse": "^10.4.0", - "mime": "^3.0.0", - "web-vitals": "^3.5.0" + "is-plain-object": "^5.0.0", + "react": "^18.3.0", + "react-dom": "^18.3.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + } } }, + "@wordpress/escape-html": { + "version": "3.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.38.0.tgz", + "integrity": "sha512-LItqIdFnn/JAVEzTtvDZGJfsdmzeIE4ryMjovHkJhRElzcQWKHuq806DMprL40NcvJbdn0YfJZSv+aeP+9Ah3g==", + "dev": true + }, "@wordpress/eslint-plugin": { - "version": "17.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-17.13.0.tgz", - "integrity": "sha512-QnG5HmOd+XsweKOvrqbOugm9rINUjcsh1jo2SN4cbbTWZJ6nPmcfLS0YJdrKkgOQUnKDPQgBPVEyI8tp19OtBw==", + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-24.0.0.tgz", + "integrity": "sha512-FXf427hQNXymMxk+qvzejXLEnnn64aGNHBEDMUYpt4MJx98+Upo2uYG0JGWm5y/Aqm+rBlGgdyNsQjjSB+Q6pQ==", "dev": true, "requires": { - "@babel/eslint-parser": "^7.16.0", + "@babel/eslint-parser": "7.25.7", "@typescript-eslint/eslint-plugin": "^6.4.1", "@typescript-eslint/parser": "^6.4.1", - "@wordpress/babel-preset-default": "^7.40.0", - "@wordpress/prettier-config": "^3.13.0", + "@wordpress/babel-preset-default": "^8.38.0", + "@wordpress/prettier-config": "^4.38.0", + "@wordpress/theme": "^0.5.0", "cosmiconfig": "^7.0.0", "eslint-config-prettier": "^8.3.0", + "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-import": "^2.25.2", - "eslint-plugin-jest": "^27.2.3", + "eslint-plugin-jest": "^27.4.3", "eslint-plugin-jsdoc": "^46.4.6", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-playwright": "^0.15.3", @@ -23456,176 +28730,329 @@ "path-type": "^4.0.0", "yaml": "^1.10.0" } + }, + "eslint-config-prettier": { + "version": "8.10.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", + "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", + "dev": true, + "requires": {} + }, + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true } } }, - "@wordpress/hooks": { - "version": "3.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.58.0.tgz", - "integrity": "sha512-9LB0ZHnZRQlORttux9t/xbAskF+dk2ujqzPGsVzc92mSKpQP3K2a5Wy74fUnInguB1vLUNHT6nrNdkVom5qX1Q==", - "dev": true, - "requires": { - "@babel/runtime": "^7.16.0" - } - }, - "@wordpress/i18n": { - "version": "4.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.58.0.tgz", - "integrity": "sha512-VfvS3BWv/RDjRKD6PscIcvYfWKnGJcI/DEqyDgUMhxCM6NRwoL478CsUKTiGJIymeyRodNRfprdcF086DpGKYw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.58.0", - "gettext-parser": "^1.3.1", - "memize": "^2.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - } - }, "@wordpress/jest-console": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-7.29.0.tgz", - "integrity": "sha512-/9PZJhyszdRX4mka7t1WzoooM+Q/DwC4jkNVtJxqci5lbL3Lrhy1cCJGCgMr1n/9w+zs7eLmExFBvV4v44iyNw==", + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-8.38.0.tgz", + "integrity": "sha512-pRvWbxr/PHs2IsjsVvb9kBgqcxOcPnTN/baOmmEJFHVtOa5hp/ze6zbz/c18RCmrxWt5doRwHpfH84M/yivo2A==", "dev": true, "requires": { - "@babel/runtime": "^7.16.0", - "jest-matcher-utils": "^29.6.2" + "jest-matcher-utils": "^29.6.2", + "jest-mock": "^29.6.2" } }, "@wordpress/jest-preset-default": { - "version": "11.29.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-11.29.0.tgz", - "integrity": "sha512-7LA0ZS5t0Thn7xrdwPL3hLgjB9LKloneGhMwnnDUTgJP330lyfdDfJ+O6Lnz3iL+bg68mkA3AzrT9Fs9f3WKww==", - "dev": true, - "requires": { - "@wordpress/jest-console": "^7.29.0", - "babel-jest": "^29.6.2" - } - }, - "@wordpress/keycodes": { - "version": "3.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-3.58.0.tgz", - "integrity": "sha512-Q/LRKpx8ndzuHlkxSQ2BD+NTYYKQPIneNNMng8hTAfyU7RFwXpqj06HpeOFGh4XIdPKCs/8hmucoLJRmmLmZJA==", + "version": "12.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-12.38.0.tgz", + "integrity": "sha512-rAEYTMbpmfhYA5p3HmkhsTXM3rHq+4mdmt8xS5izXn5SzZdsHs+oa1Ej9COMi6xThpMN5i0+N+vz3HDzAMLCsg==", "dev": true, "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/i18n": "^4.58.0" + "@wordpress/jest-console": "^8.38.0", + "babel-jest": "29.7.0" } }, "@wordpress/npm-package-json-lint-config": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-4.43.0.tgz", - "integrity": "sha512-XSb7AdDC7yGTBVYeRM4oqmOygEB+/+tk7lobLIGDmlZJs+M3F/NUvQq0Vcas1pojq2fyPYTUwOlu81ga33fNwQ==", + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/npm-package-json-lint-config/-/npm-package-json-lint-config-5.38.0.tgz", + "integrity": "sha512-/8oarSArKiN2ZUTCexn27YQLPXpxmNAYQEzgubmALtR5wGWnMwpCw9bt/+/cG6t6o1YaAN8ZOO3gattQYssYrA==", "dev": true, "requires": {} }, "@wordpress/postcss-plugins-preset": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-4.42.0.tgz", - "integrity": "sha512-5xmKF7IUsqS5JcmJlHKHq7RaR6ZpaLj3n9c+X0X0/Oo7ZCIGp6WeDQngx13sH4NJoKXrZ9g4n1rbzhEKeo/Wtg==", + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/postcss-plugins-preset/-/postcss-plugins-preset-5.38.0.tgz", + "integrity": "sha512-I8QFM8pPv04VTvakhIqRL5CU8s6Irf7onixBjXD95+ae3kmVJY548mp7cBU5MV9n92IZbGbwLjhaOIegS3QxfQ==", "dev": true, "requires": { - "@wordpress/base-styles": "^4.49.0", - "autoprefixer": "^10.2.5" + "@wordpress/base-styles": "^6.14.0", + "autoprefixer": "^10.4.20", + "postcss-import": "^16.1.1" } }, "@wordpress/prettier-config": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-3.15.0.tgz", - "integrity": "sha512-exC2rkEioTt//AnzPRyaaFv8FNYIvamPDytNol5bKQ6Qh65QSdZZE9V+GtRCrIPL7/Bq6xba03XuRVxl9TjtJg==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/prettier-config/-/prettier-config-4.38.0.tgz", + "integrity": "sha512-kWGpmmkIvvObtteeOBkZM3GiTOL8tBkccBJwIWV7kBIC71HrBERnvQZKga84QW5thdt+S0ccjBZk41saEGXavw==", "dev": true, "requires": {} }, + "@wordpress/private-apis": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-1.38.0.tgz", + "integrity": "sha512-6Hj9x3xJb64Xu/p2M4XA9fGeY2omTly2bb+Kayaa55eEZi6iXlcIhvv7UAdKhJ2PF9hfuENccgqhG7OrvaEEJg==", + "dev": true + }, "@wordpress/scripts": { - "version": "26.19.0", - "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-26.19.0.tgz", - "integrity": "sha512-m3QYlgpWRfIqCfU4jWKwGeA12Qkt6d9CMewEIxIBGVlEGd/sL5rU1fM7LKNBEbSPQpaOTWJApNGWPcW75Fwp+w==", + "version": "31.3.0", + "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-31.3.0.tgz", + "integrity": "sha512-gZiw7y3/tNbzxcW4IXBszyTzP7KkZivDGAvL01sJ1bcVTTuD4LyQ4MXhesCUYEYXPkSRNQh1Q4oAXk1FH3DlSQ==", "dev": true, "requires": { - "@babel/core": "^7.16.0", + "@babel/core": "7.25.7", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", "@svgr/webpack": "^8.0.1", - "@wordpress/babel-preset-default": "^7.32.0", - "@wordpress/browserslist-config": "^5.31.0", - "@wordpress/dependency-extraction-webpack-plugin": "^4.31.0", - "@wordpress/e2e-test-utils-playwright": "^0.16.0", - "@wordpress/eslint-plugin": "^17.5.0", - "@wordpress/jest-preset-default": "^11.19.0", - "@wordpress/npm-package-json-lint-config": "^4.33.0", - "@wordpress/postcss-plugins-preset": "^4.32.0", - "@wordpress/prettier-config": "^3.5.0", - "@wordpress/stylelint-config": "^21.31.0", + "@wordpress/babel-preset-default": "^8.38.0", + "@wordpress/browserslist-config": "^6.38.0", + "@wordpress/dependency-extraction-webpack-plugin": "^6.38.0", + "@wordpress/e2e-test-utils-playwright": "^1.38.0", + "@wordpress/eslint-plugin": "^24.0.0", + "@wordpress/jest-preset-default": "^12.38.0", + "@wordpress/npm-package-json-lint-config": "^5.38.0", + "@wordpress/postcss-plugins-preset": "^5.38.0", + "@wordpress/prettier-config": "^4.38.0", + "@wordpress/stylelint-config": "^23.30.0", "adm-zip": "^0.5.9", - "babel-jest": "^29.6.2", - "babel-loader": "^8.2.3", + "babel-jest": "29.7.0", + "babel-loader": "9.2.1", "browserslist": "^4.21.10", "chalk": "^4.0.0", "check-node-version": "^4.1.0", - "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^10.2.0", - "cross-spawn": "^5.1.0", + "cross-spawn": "^7.0.6", "css-loader": "^6.2.0", "cssnano": "^6.0.1", "cwd": "^0.10.0", "dir-glob": "^3.0.1", - "eslint": "^8.3.0", + "eslint": "^8.57.1", "expect-puppeteer": "^4.4.0", "fast-glob": "^3.2.7", "filenamify": "^4.2.0", "jest": "^29.6.2", - "jest-dev-server": "^9.0.1", - "jest-environment-jsdom": "^29.6.2", + "jest-dev-server": "^10.1.4", + "jest-environment-jsdom": "^30.2.0", "jest-environment-node": "^29.6.2", + "json2php": "^0.0.9", "markdownlint-cli": "^0.31.1", "merge-deep": "^3.0.3", - "mini-css-extract-plugin": "^2.5.1", + "mini-css-extract-plugin": "^2.9.2", "minimist": "^1.2.0", "npm-package-json-lint": "^6.4.0", "npm-packlist": "^3.0.0", - "playwright-core": "1.39.0", "postcss": "^8.4.5", "postcss-loader": "^6.2.1", "prettier": "npm:wp-prettier@3.0.3", - "puppeteer-core": "^13.2.0", + "puppeteer-core": "^23.10.1", "react-refresh": "^0.14.0", "read-pkg-up": "^7.0.1", "resolve-bin": "^0.4.0", - "sass": "^1.35.2", - "sass-loader": "^12.1.0", + "rtlcss": "^4.3.0", + "sass": "^1.54.0", + "sass-loader": "^16.0.3", + "schema-utils": "^4.2.0", "source-map-loader": "^3.0.0", - "stylelint": "^14.2.0", - "terser-webpack-plugin": "^5.3.9", + "stylelint": "^16.8.2", + "terser-webpack-plugin": "^5.3.10", "url-loader": "^4.1.1", - "webpack": "^5.88.2", + "webpack": "^5.97.0", "webpack-bundle-analyzer": "^4.9.1", "webpack-cli": "^5.1.4", - "webpack-dev-server": "^4.15.1" + "webpack-dev-server": "^5.2.1" + }, + "dependencies": { + "@babel/core": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz", + "integrity": "sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helpers": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + } + }, + "@types/node": { + "version": "20.19.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.30.tgz", + "integrity": "sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g==", + "dev": true, + "peer": true, + "requires": { + "undici-types": "~6.21.0" + } + }, + "@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "requires": {} + }, + "@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "requires": {} + }, + "@wordpress/e2e-test-utils-playwright": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils-playwright/-/e2e-test-utils-playwright-1.38.0.tgz", + "integrity": "sha512-/3Qo6/N5BtCbQJJShy3pY5xr68OkMctouYcz1mvL8Q8tMO1fdiZTlJvU9bSMwdM1G1NEbE8pa/9q2F1Va/2S2A==", + "dev": true, + "requires": { + "change-case": "^4.1.2", + "get-port": "^5.1.1", + "lighthouse": "^12.2.2", + "mime": "^3.0.0", + "web-vitals": "^4.2.1" + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true + }, + "prettier": { + "version": "npm:wp-prettier@3.0.3", + "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-3.0.3.tgz", + "integrity": "sha512-X4UlrxDTH8oom9qXlcjnydsjAOD2BmB6yFmvS4Z2zdTzqqpRWb+fbqrH412+l+OUXmbzJlSXjlMFYPgYG12IAA==", + "dev": true + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "peer": true + }, + "webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + } + }, + "webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + } + } } }, "@wordpress/stylelint-config": { - "version": "21.41.0", - "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-21.41.0.tgz", - "integrity": "sha512-2wxFu8ICeRGF3Lxz7H7o2SU1u6pTI4mjuog39DgtCNb+v+f6yhgREDuNQEeti3Svb0rjj63AJ7r2CqLZk+EQIQ==", + "version": "23.30.0", + "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-23.30.0.tgz", + "integrity": "sha512-35s8w52ZxTVkvllBSCMbV2cFLQjHd+8FzROUIBW0OaUlZum3bQXnz2I3Q71e6fG2/jXvXVrHRh45P2oIhWnKPQ==", "dev": true, "requires": { - "stylelint-config-recommended": "^6.0.0", - "stylelint-config-recommended-scss": "^5.0.2" + "@stylistic/stylelint-plugin": "^3.0.1", + "@wordpress/theme": "^0.5.0", + "stylelint-config-recommended": "^14.0.1", + "stylelint-config-recommended-scss": "^14.1.0" } }, - "@wordpress/url": { - "version": "3.59.0", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.59.0.tgz", - "integrity": "sha512-GxvoMjYCav0w4CiX0i0h3qflrE/9rhLIZg5aPCQjbrBdwTxYR3Exfw0IJYcmVaTKXQOUU8fOxlDxULsbLmKe9w==", + "@wordpress/theme": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@wordpress/theme/-/theme-0.5.0.tgz", + "integrity": "sha512-6V14snLXUqVs3fBPmGJhWkgtWcrwEe7vUS04nTl7hyI5uyL+N7LXRldWTjnzwaQL0ywBIx4u13gJU/GZqOc8dQ==", "dev": true, "requires": { - "@babel/runtime": "^7.16.0", - "remove-accents": "^0.5.0" + "@wordpress/element": "^6.38.0", + "@wordpress/private-apis": "^1.38.0", + "colorjs.io": "^0.6.0", + "memize": "^2.1.0" } }, "@wordpress/warning": { - "version": "2.58.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-2.58.0.tgz", - "integrity": "sha512-9bZlORhyMY2nbWozeyC5kqJsFzEPP4DCLhGmjtbv+YWGHttUrxUZEfrKdqO+rUODA8rP5zeIly1nCQOUnkw4Lg==", + "version": "3.38.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.38.0.tgz", + "integrity": "sha512-4eHJoNC/Ofrp+hOIf/2KqSoyIZLFIoyAhfTBrFxq3bGKNFJlOEHAJ3+tGiy77Ja93uQzrSWctZsH1CpSRYKkng==", "dev": true }, "@xstate/fsm": { @@ -23675,15 +29102,12 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true }, - "acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, - "requires": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } + "requires": {} }, "acorn-import-phases": { "version": "1.0.4", @@ -23715,13 +29139,10 @@ "dev": true }, "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true }, "ajv": { "version": "6.12.6", @@ -23851,14 +29272,6 @@ "dev": true, "requires": { "sprintf-js": "~1.0.2" - }, - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - } } }, "aria-query": { @@ -23911,12 +29324,6 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true - }, "array.prototype.findlast": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", @@ -24004,6 +29411,17 @@ "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, + "asn1js": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz", + "integrity": "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==", + "dev": true, + "requires": { + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + } + }, "ast-types": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", @@ -24037,18 +29455,52 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, + "atomically": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-2.1.0.tgz", + "integrity": "sha512-+gDffFXRW6sl/HCwbta7zK4uNqbPjv4YJEAdz7Vu+FLQHe77eZ4bvbJGi4hE0QPeJlMYMA3piXEr1UL3dAwx7Q==", + "dev": true, + "requires": { + "stubborn-fs": "^2.0.0", + "when-exit": "^2.1.4" + } + }, "autoprefixer": { - "version": "10.4.21", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", - "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "version": "10.4.23", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz", + "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==", "dev": true, "requires": { - "browserslist": "^4.24.4", - "caniuse-lite": "^1.0.30001702", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001760", + "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" + }, + "dependencies": { + "browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "requires": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + } + }, + "update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "requires": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + } + } } }, "available-typed-arrays": { @@ -24067,9 +29519,9 @@ "dev": true }, "axios": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", - "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", "dev": true, "requires": { "follow-redirects": "^1.15.6", @@ -24099,28 +29551,13 @@ } }, "babel-loader": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.4.1.tgz", - "integrity": "sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", + "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", "dev": true, "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.4", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - } + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" } }, "babel-plugin-istanbul": { @@ -24218,12 +29655,63 @@ "dev": true }, "bare-events": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.6.1.tgz", - "integrity": "sha512-AuTJkq9XmE6Vk0FJVNq5QxETrSA/vKHarWVBG5l/JbdCL1prJemiyJqUS0jrlXO0MftuPq4m3YVYhoNc5+aE/g==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "dev": true, + "requires": {} + }, + "bare-fs": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.2.tgz", + "integrity": "sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==", + "dev": true, + "optional": true, + "requires": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + } + }, + "bare-os": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz", + "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==", "dev": true, "optional": true }, + "bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "dev": true, + "optional": true, + "requires": { + "bare-os": "^3.0.1" + } + }, + "bare-stream": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz", + "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==", + "dev": true, + "optional": true, + "requires": { + "streamx": "^2.21.0" + } + }, + "bare-url": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", + "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", + "dev": true, + "optional": true, + "requires": { + "bare-path": "^3.0.0" + } + }, "base64-arraybuffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", @@ -24236,15 +29724,15 @@ "dev": true }, "baseline-browser-mapping": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.3.tgz", - "integrity": "sha512-mcE+Wr2CAhHNWxXN/DdTI+n4gsPc5QpXpWnyCQWiQYIYZX+ZMJ8juXZgjRa/0/YPJo/NSsgW15/YgmI4nbysYw==", + "version": "2.9.15", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.15.tgz", + "integrity": "sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg==", "dev": true }, "basic-ftp": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", - "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.1.0.tgz", + "integrity": "sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw==", "dev": true }, "batch": { @@ -24265,35 +29753,24 @@ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "dev": true, "requires": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "dependencies": { "debug": { @@ -24406,12 +29883,51 @@ "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true }, + "bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "requires": { + "run-applescript": "^7.0.0" + } + }, "bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true }, + "bytestreamjs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", + "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", + "dev": true + }, + "cacheable": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.3.2.tgz", + "integrity": "sha512-w+ZuRNmex9c1TR9RcsxbfTKCjSL0rh1WA5SABbrWprIHeNBdmyQLSYonlDy9gpD+63XT8DgZ/wNh1Smvc9WnJA==", + "dev": true, + "requires": { + "@cacheable/memory": "^2.0.7", + "@cacheable/utils": "^2.3.3", + "hookified": "^1.15.0", + "keyv": "^5.5.5", + "qified": "^0.6.0" + }, + "dependencies": { + "keyv": { + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.5.tgz", + "integrity": "sha512-FA5LmZVF1VziNc0bIdCSA1IoSVnDCqE8HJIZZv2/W8YmoAM50+tnUgJR/gQZwEeIMleuIOnRnHA/UaZRNeV4iQ==", + "dev": true, + "requires": { + "@keyv/serialize": "^1.1.1" + } + } + } + }, "call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -24498,9 +30014,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001741", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz", - "integrity": "sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==", + "version": "1.0.30001765", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001765.tgz", + "integrity": "sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==", "dev": true }, "capital-case": { @@ -24585,22 +30101,33 @@ "readdirp": "^4.0.1" } }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, "chrome-launcher": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", - "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-1.2.1.tgz", + "integrity": "sha512-qmFR5PLMzHyuNJHwOloHPAHhbaNglkfeV/xDtt5b7xiFFyU1I+AZZX0PYseMuhenJSSirgxELYIbswcoc+5H4A==", "dev": true, "requires": { "@types/node": "*", "escape-string-regexp": "^4.0.0", "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0" + "lighthouse-logger": "^2.0.1" + }, + "dependencies": { + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + } } }, "chrome-trace-event": { @@ -24609,6 +30136,16 @@ "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true }, + "chromium-bidi": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.11.0.tgz", + "integrity": "sha512-6CJWHkNRoyZyjV9Rwv2lYONZf1Xm0IuDyNq97nwSsxxP3wf5Bwy15K5rOvVKMtJ127jJBmxFUanSAOjgFRxgrA==", + "dev": true, + "requires": { + "mitt": "3.0.1", + "zod": "3.23.8" + } + }, "ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", @@ -24692,16 +30229,6 @@ } } }, - "clean-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==", - "dev": true, - "requires": { - "@types/webpack": "^4.4.31", - "del": "^4.1.1" - } - }, "cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -24733,9 +30260,9 @@ "dev": true }, "collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", "dev": true }, "color-convert": { @@ -24765,6 +30292,12 @@ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, + "colorjs.io": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.6.1.tgz", + "integrity": "sha512-8lyR2wHzuIykCpqHKgluGsqQi5iDm3/a2IgP2GBZrasn2sBRkE4NOGsglZxWLs/jZQoNkmA/KM/8NV16rLUdBg==", + "dev": true + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -24786,10 +30319,10 @@ "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", "dev": true }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", "dev": true }, "compressible": { @@ -24840,31 +30373,15 @@ "dev": true }, "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-7.1.0.tgz", + "integrity": "sha512-N4oog6YJWbR9kGyXvS7jEykLDXIE2C0ILYqNBZBp9iwiJpoCBWYsuAdW6PPFn6w06jjnC+3JstVvWHO4cZqvRg==", "dev": true, "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - } + "atomically": "^2.0.3", + "dot-prop": "^9.0.0", + "graceful-fs": "^4.2.11", + "xdg-basedir": "^5.1.0" } }, "connect-history-api-fallback": { @@ -24906,15 +30423,15 @@ "dev": true }, "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true }, "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", "dev": true }, "copy-webpack-plugin": { @@ -24960,9 +30477,9 @@ } }, "core-js": { - "version": "3.45.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.45.1.tgz", - "integrity": "sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==", + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.47.0.tgz", + "integrity": "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==", "dev": true }, "core-js-compat": { @@ -25005,9 +30522,9 @@ "dev": true }, "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -25037,93 +30554,23 @@ "dev": true, "requires": { "cross-spawn": "^7.0.1" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dev": true, - "requires": { - "node-fetch": "2.6.7" } }, "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - } + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true - }, "csp_evaluator": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/csp_evaluator/-/csp_evaluator-1.1.1.tgz", - "integrity": "sha512-N3ASg0C4kNPUaNxt1XAvzHIVuzdtr8KLgfk1O8WDyimp1GisPAHESupArO2ieHk9QWbrJ/WkQODyh21Ps/xhxw==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/csp_evaluator/-/csp_evaluator-1.1.5.tgz", + "integrity": "sha512-EL/iN9etCTzw/fBnp0/uj0f5BOOGvZut2mzsiiBZ/FdT6gFQCKRO/tmcKOxn5drWZ2Ndm/xBb1SI4zwWbGtmIw==", "dev": true }, "css-declaration-sorter": { @@ -25280,29 +30727,22 @@ } } }, - "cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true - }, "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", + "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", "dev": true, "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } + "@asamuzakjp/css-color": "^3.2.0", + "rrweb-cssom": "^0.8.0" } }, + "csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true + }, "cwd": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", @@ -25326,14 +30766,13 @@ "dev": true }, "data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dev": true, "requires": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" } }, "data-view-buffer": { @@ -25415,9 +30854,9 @@ "dev": true }, "dedent": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", - "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", + "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", "dev": true, "requires": {} }, @@ -25439,15 +30878,22 @@ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true }, - "default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "default-browser": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", + "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", "dev": true, "requires": { - "execa": "^5.0.0" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" } }, + "default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "dev": true + }, "define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -25460,9 +30906,9 @@ } }, "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true }, "define-properties": { @@ -25487,53 +30933,6 @@ "esprima": "^4.0.1" } }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - } - } - } - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -25572,9 +30971,9 @@ "dev": true }, "devtools-protocol": { - "version": "0.0.1155343", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1155343.tgz", - "integrity": "sha512-oD9vGBV2wTc7fAzAM6KC0chSgs234V8+qDEeK+mcbRj2UvcuA7lgBztGi/opj/iahcXD3BSj8Ymvib628yy9FA==", + "version": "0.0.1367902", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1367902.tgz", + "integrity": "sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg==", "dev": true }, "diff-sequences": { @@ -25627,15 +31026,6 @@ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true }, - "domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "dev": true, - "requires": { - "webidl-conversions": "^7.0.0" - } - }, "domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", @@ -25667,12 +31057,20 @@ } }, "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-9.0.0.tgz", + "integrity": "sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==", "dev": true, "requires": { - "is-obj": "^2.0.0" + "type-fest": "^4.18.2" + }, + "dependencies": { + "type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true + } } }, "dunder-proto": { @@ -25699,9 +31097,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.5.218", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.218.tgz", - "integrity": "sha512-uwwdN0TUHs8u6iRgN8vKeWZMRll4gBkz+QMqdS7DDe49uiK68/UX92lFb61oiFPrpYZNeZIqa4bA7O6Aiasnzg==", + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", "dev": true }, "emittery": { @@ -25728,15 +31126,6 @@ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "requires": { - "iconv-lite": "^0.6.2" - } - }, "end-of-stream": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", @@ -25772,6 +31161,12 @@ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, "envinfo": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", @@ -25942,34 +31337,37 @@ } }, "esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, - "requires": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" } }, "escalade": { @@ -26073,17 +31471,6 @@ "concat-map": "0.0.1" } }, - "cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", @@ -26110,10 +31497,19 @@ "path-exists": "^4.0.0" } }, + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -26145,40 +31541,26 @@ "requires": { "p-limit": "^3.0.2" } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, "eslint-config-prettier": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", - "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.2.tgz", + "integrity": "sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==", "dev": true, "requires": {} }, + "eslint-import-context": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz", + "integrity": "sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==", + "dev": true, + "requires": { + "get-tsconfig": "^4.10.1", + "stable-hash-x": "^0.2.0" + } + }, "eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", @@ -26201,6 +31583,21 @@ } } }, + "eslint-import-resolver-typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.4.tgz", + "integrity": "sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==", + "dev": true, + "requires": { + "debug": "^4.4.1", + "eslint-import-context": "^0.1.8", + "get-tsconfig": "^4.10.1", + "is-bun-module": "^2.0.0", + "stable-hash-x": "^0.2.0", + "tinyglobby": "^0.2.14", + "unrs-resolver": "^1.7.11" + } + }, "eslint-module-utils": { "version": "2.12.1", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", @@ -26360,9 +31757,9 @@ "dev": true }, "semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true } } @@ -26385,9 +31782,9 @@ }, "dependencies": { "semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true } } @@ -26444,13 +31841,13 @@ "requires": {} }, "eslint-plugin-prettier": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", - "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", "dev": true, "requires": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.11.7" + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" } }, "eslint-plugin-react": { @@ -26624,6 +32021,15 @@ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, + "events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "dev": true, + "requires": { + "bare-events": "^2.7.0" + } + }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -26639,43 +32045,6 @@ "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } } }, "exit": { @@ -26713,50 +32082,44 @@ "dev": true }, "express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "dev": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.13.0", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" }, "dependencies": { - "cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "dev": true - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -26935,17 +32298,17 @@ } }, "finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "statuses": "2.0.1", + "statuses": "~2.0.2", "unpipe": "~1.0.0" }, "dependencies": { @@ -26967,14 +32330,73 @@ } }, "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "dependencies": { + "find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "requires": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + } + }, + "locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "requires": { + "p-locate": "^6.0.0" + } + }, + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "requires": { + "p-limit": "^4.0.0" + } + }, + "path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true + }, + "pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "requires": { + "find-up": "^6.3.0" + } + }, + "yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "dev": true + } } }, "find-file-up": { @@ -27088,9 +32510,9 @@ } }, "form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "dev": true, "requires": { "asynckit": "^0.4.0", @@ -27106,10 +32528,16 @@ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true }, + "forwarded-parse": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/forwarded-parse/-/forwarded-parse-2.1.2.tgz", + "integrity": "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==", + "dev": true + }, "fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", "dev": true }, "fresh": { @@ -27118,24 +32546,12 @@ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, "fs-exists-sync": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", "integrity": "sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==", "dev": true }, - "fs-monkey": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", - "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", - "dev": true - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -27250,6 +32666,15 @@ "get-intrinsic": "^1.2.6" } }, + "get-tsconfig": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", + "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", + "dev": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" + } + }, "get-uri": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", @@ -27261,16 +32686,6 @@ "debug": "^4.3.4" } }, - "gettext-parser": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz", - "integrity": "sha512-sedZYLHlHeBop/gZ1jdg59hlUEcpcZJofLq2JFwJT1zTqAU3l2wFv6IsuwFHGqbiT9DWzMUW4/em2+hspnmMMA==", - "dev": true, - "requires": { - "encoding": "^0.1.12", - "safe-buffer": "^5.1.1" - } - }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -27315,6 +32730,13 @@ "is-glob": "^4.0.3" } }, + "glob-to-regex.js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", + "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", + "dev": true, + "requires": {} + }, "glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", @@ -27341,16 +32763,23 @@ "ini": "^1.3.4", "is-windows": "^0.2.0", "which": "^1.2.12" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==" }, "globalthis": { "version": "1.0.4", @@ -27466,6 +32895,15 @@ "has-symbols": "^1.0.3" } }, + "hashery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.4.0.tgz", + "integrity": "sha512-Wn2i1In6XFxl8Az55kkgnFRiAlIAushzh26PTjL2AKtQcEfXrcLa7Hn5QOWGZEf3LU057P9TwwZjFyxfS1VuvQ==", + "dev": true, + "requires": { + "hookified": "^1.14.0" + } + }, "hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -27494,6 +32932,12 @@ "parse-passwd": "^1.0.0" } }, + "hookified": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.0.tgz", + "integrity": "sha512-51w+ZZGt7Zw5q7rM3nC4t3aLn/xvKDETsXqMczndvwyVQhAHfUmUuFBRFcos8Iyebtk7OAE9dL26wFNzZVVOkw==", + "dev": true + }, "hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -27571,12 +33015,12 @@ } }, "html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dev": true, "requires": { - "whatwg-encoding": "^2.0.0" + "whatwg-encoding": "^3.1.1" } }, "html-entities": { @@ -27612,16 +33056,16 @@ "dev": true }, "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "dev": true, "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" } }, "http-link-header": { @@ -27648,14 +33092,13 @@ } }, "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" } }, "http-proxy-middleware": { @@ -27672,12 +33115,12 @@ } }, "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "requires": { - "agent-base": "6", + "agent-base": "^7.1.2", "debug": "4" } }, @@ -27687,13 +33130,19 @@ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, + "hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "dev": true + }, "i18next": { - "version": "25.5.2", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.5.2.tgz", - "integrity": "sha512-lW8Zeh37i/o0zVr+NoCHfNnfvVw+M6FQbRp36ZZ/NyHDJ3NJVpp2HhAUyU9WafL5AssymNoOjMRB48mmx2P6Hw==", + "version": "25.7.4", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.7.4.tgz", + "integrity": "sha512-hRkpEblXXcXSNbw8mBNq9042OEetgyB/ahc/X17uV/khPwzV+uB8RHceHh3qavyrkPJvmXFKXME2Sy1E0KjAfw==", "peer": true, "requires": { - "@babel/runtime": "^7.27.6" + "@babel/runtime": "^7.28.4" } }, "iconv-lite": { @@ -27784,11 +33233,17 @@ } } }, - "import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true + "import-in-the-middle": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.15.0.tgz", + "integrity": "sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA==", + "dev": true, + "requires": { + "acorn": "^8.14.0", + "acorn-import-attributes": "^1.9.5", + "cjs-module-lexer": "^1.2.2", + "module-details-from-path": "^1.0.3" + } }, "import-local": { "version": "3.2.0", @@ -27852,30 +33307,27 @@ "dev": true }, "intl-messageformat": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-4.4.0.tgz", - "integrity": "sha512-z+Bj2rS3LZSYU4+sNitdHrwnBhr0wO80ZJSW8EzKDBowwUe3Q/UsvgCGjrwa+HPzoGCLEb9HAjfJgo4j2Sac8w==", + "version": "10.7.18", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.18.tgz", + "integrity": "sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g==", "dev": true, "requires": { - "intl-messageformat-parser": "^1.8.1" + "@formatjs/ecma402-abstract": "2.3.6", + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/icu-messageformat-parser": "2.11.4", + "tslib": "^2.8.0" } }, - "intl-messageformat-parser": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-1.8.1.tgz", - "integrity": "sha512-IMSCKVf0USrM/959vj3xac7s8f87sc+80Y/ipBzdKy4ifBv5Gsj2tZ41EAaURVg01QU71fYr77uA8Meh6kELbg==", - "dev": true - }, "ip-address": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "dev": true }, "ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", "dev": true }, "irregular-plurals": { @@ -27957,6 +33409,23 @@ "builtin-modules": "^3.3.0" } }, + "is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "requires": { + "semver": "^7.7.1" + }, + "dependencies": { + "semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true + } + } + }, "is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -27994,9 +33463,9 @@ } }, "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true }, "is-extendable": { @@ -28053,6 +33522,15 @@ "is-extglob": "^2.1.1" } }, + "is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "requires": { + "is-docker": "^3.0.0" + } + }, "is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -28065,6 +33543,12 @@ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true }, + "is-network-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", + "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -28081,38 +33565,6 @@ "has-tostringtag": "^1.0.2" } }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - }, - "dependencies": { - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } - } - } - }, "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -28203,12 +33655,6 @@ "which-typed-array": "^1.1.16" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, "is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -28247,12 +33693,12 @@ "dev": true }, "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dev": true, "requires": { - "is-docker": "^2.0.0" + "is-inside-container": "^1.0.0" } }, "isarray": { @@ -28301,23 +33747,6 @@ "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", "supports-color": "^7.1.0" - }, - "dependencies": { - "make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "requires": { - "semver": "^7.5.3" - } - }, - "semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true - } } }, "istanbul-lib-source-maps": { @@ -28464,18 +33893,18 @@ } }, "jest-dev-server": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jest-dev-server/-/jest-dev-server-9.0.2.tgz", - "integrity": "sha512-Zc/JB0IlNNrpXkhBw+h86cGrde/Mey52KvF+FER2eyrtYJTHObOwW7Iarxm3rPyTKby5+3Y2QZtl8pRz/5GCxg==", + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/jest-dev-server/-/jest-dev-server-10.1.4.tgz", + "integrity": "sha512-bGQ6sedNGtT6AFHhCVqGTXMPz7UyJi/ZrhNBgyqsP0XU9N8acCEIfqZEA22rOaZ+NdEVsaltk6tL7UT6aXfI7w==", "dev": true, "requires": { "chalk": "^4.1.2", "cwd": "^0.10.0", "find-process": "^1.4.7", "prompts": "^2.4.2", - "spawnd": "^9.0.2", + "spawnd": "^10.1.4", "tree-kill": "^1.2.2", - "wait-on": "^7.2.0" + "wait-on": "^8.0.1" } }, "jest-diff": { @@ -28513,19 +33942,154 @@ } }, "jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.2.0.tgz", + "integrity": "sha512-zbBTiqr2Vl78pKp/laGBREYzbZx9ZtqPjOK4++lL4BNDhxRnahg51HtoDrk9/VjIy9IthNEWdKVd7H5bqBhiWQ==", "dev": true, "requires": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", + "@jest/environment": "30.2.0", + "@jest/environment-jsdom-abstract": "30.2.0", + "@types/jsdom": "^21.1.7", "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" + "jsdom": "^26.1.0" + }, + "dependencies": { + "@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", + "dev": true, + "requires": { + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" + } + }, + "@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "dev": true, + "requires": { + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + } + }, + "@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.34.0" + } + }, + "@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "requires": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + } + }, + "@sinclair/typebox": { + "version": "0.34.47", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.47.tgz", + "integrity": "sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==", + "dev": true + }, + "@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.1" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true + }, + "jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + } + }, + "jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "requires": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + } + }, + "jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "requires": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + } + }, + "picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true + }, + "pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "requires": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + } + } } }, "jest-environment-node": { @@ -28746,9 +34310,9 @@ }, "dependencies": { "semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true } } @@ -28821,16 +34385,18 @@ } }, "joi": { - "version": "17.13.3", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", - "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-18.0.2.tgz", + "integrity": "sha512-RuCOQMIt78LWnktPoeBL0GErkNaJPTBGcYuyaBvUOQSpcpcLfWrHPPihYdOGbV5pam9VTWbeoF7TsGiHugcjGA==", "dev": true, "requires": { - "@hapi/hoek": "^9.3.0", - "@hapi/topo": "^5.1.0", - "@sideway/address": "^4.1.5", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" + "@hapi/address": "^5.1.1", + "@hapi/formula": "^3.0.2", + "@hapi/hoek": "^11.0.7", + "@hapi/pinpoint": "^2.0.1", + "@hapi/tlds": "^1.1.1", + "@hapi/topo": "^6.0.2", + "@standard-schema/spec": "^1.0.0" } }, "jpeg-js": { @@ -28851,9 +34417,9 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -28867,37 +34433,31 @@ "dev": true }, "jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", - "dev": true, - "requires": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", + "version": "26.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz", + "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", + "dev": true, + "requires": { + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.5.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", + "tough-cookie": "^5.1.1", + "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.1", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" } }, "jsesc": { @@ -28931,9 +34491,9 @@ "dev": true }, "json2php": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/json2php/-/json2php-0.0.7.tgz", - "integrity": "sha512-dnSoUiLAoVaMXxFsVi4CrPVYMKOuDBXTghXSmMINX44RZ8WM9cXlY7UqrQnlAcODCVO7FV3+8t/5nDKAjimLfg==", + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/json2php/-/json2php-0.0.9.tgz", + "integrity": "sha512-fQMYwvPsQt8hxRnCGyg1r2JVi6yL8Um0DIIawiKiMK9yhAAkcRNj5UsBWoaFvFzPpcWbgw9L6wzj+UMYA702Mw==", "dev": true }, "json5": { @@ -28991,9 +34551,9 @@ "dev": true }, "known-css-properties": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.26.0.tgz", - "integrity": "sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==", + "version": "0.37.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz", + "integrity": "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==", "dev": true }, "language-subtag-registry": { @@ -29012,9 +34572,9 @@ } }, "launch-editor": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.11.1.tgz", - "integrity": "sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", + "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", "dev": true, "requires": { "picocolors": "^1.1.1", @@ -29027,6 +34587,12 @@ "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==", "dev": true }, + "legacy-javascript": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/legacy-javascript/-/legacy-javascript-0.0.1.tgz", + "integrity": "sha512-lPyntS4/aS7jpuvOlitZDFifBCb4W8L/3QU0PLbUTUj+zYah8rfVjYic88yG7ZKTxhS5h9iz7duT8oUXKszLhg==", + "dev": true + }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -29044,185 +34610,174 @@ } }, "lighthouse": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-10.4.0.tgz", - "integrity": "sha512-XQWHEWkJ8YxSPsxttBJORy5+hQrzbvGkYfeP3fJjyYKioWkF2MXfFqNK4ZuV4jL8pBu7Z91qnQP6In0bq1yXww==", - "dev": true, - "requires": { - "@sentry/node": "^6.17.4", - "axe-core": "4.7.2", - "chrome-launcher": "^0.15.2", - "configstore": "^5.0.1", - "csp_evaluator": "1.1.1", - "devtools-protocol": "0.0.1155343", + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-12.8.2.tgz", + "integrity": "sha512-+5SKYzVaTFj22MgoYDPNrP9tlD2/Ay7j3SxPSFD9FpPyVxGr4UtOQGKyrdZ7wCmcnBaFk0mCkPfARU3CsE0nvA==", + "dev": true, + "requires": { + "@paulirish/trace_engine": "0.0.59", + "@sentry/node": "^9.28.1", + "axe-core": "^4.10.3", + "chrome-launcher": "^1.2.0", + "configstore": "^7.0.0", + "csp_evaluator": "1.1.5", + "devtools-protocol": "0.0.1507524", "enquirer": "^2.3.6", "http-link-header": "^1.1.1", - "intl-messageformat": "^4.4.0", + "intl-messageformat": "^10.5.3", "jpeg-js": "^0.4.4", - "js-library-detector": "^6.6.0", - "lighthouse-logger": "^1.4.1", - "lighthouse-stack-packs": "1.11.0", - "lodash": "^4.17.21", + "js-library-detector": "^6.7.0", + "lighthouse-logger": "^2.0.2", + "lighthouse-stack-packs": "1.12.2", + "lodash-es": "^4.17.21", "lookup-closest-locale": "6.2.0", "metaviewport-parser": "0.3.0", "open": "^8.4.0", "parse-cache-control": "1.0.1", - "ps-list": "^8.0.0", - "puppeteer-core": "^20.8.0", - "robots-parser": "^3.0.0", - "semver": "^5.3.0", + "puppeteer-core": "^24.17.1", + "robots-parser": "^3.0.1", "speedline-core": "^1.4.3", - "third-party-web": "^0.23.3", + "third-party-web": "^0.27.0", + "tldts-icann": "^7.0.12", "ws": "^7.0.0", "yargs": "^17.3.1", "yargs-parser": "^21.0.0" }, "dependencies": { - "axe-core": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", - "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", - "dev": true - }, - "cross-fetch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", - "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "@puppeteer/browsers": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.11.1.tgz", + "integrity": "sha512-YmhAxs7XPuxN0j7LJloHpfD1ylhDuFmmwMvfy/+6nBSrETT2ycL53LrhgPtR+f+GcPSybQVuQ5inWWu5MrWCpA==", "dev": true, "requires": { - "node-fetch": "^2.6.12" + "debug": "^4.4.3", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.5.0", + "semver": "^7.7.3", + "tar-fs": "^3.1.1", + "yargs": "^17.7.2" } }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "chromium-bidi": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-12.0.1.tgz", + "integrity": "sha512-fGg+6jr0xjQhzpy5N4ErZxQ4wF7KLEvhGZXD6EgvZKDhu7iOhZXnZhcDxPJDcwTcrD48NPzOCo84RP2lv3Z+Cg==", "dev": true, "requires": { - "ms": "2.1.2" + "mitt": "^3.0.1", + "zod": "^3.24.1" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true }, - "node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "devtools-protocol": { + "version": "0.0.1507524", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1507524.tgz", + "integrity": "sha512-OjaNE7qpk6GRTXtqQjAE5bGx6+c4F1zZH0YXtpZQLM92HNXx4zMAaqlKhP4T52DosG6hDW8gPMNhGOF8xbwk/w==", + "dev": true + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "requires": { - "whatwg-url": "^5.0.0" + "is-docker": "^2.0.0" + } + }, + "open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" } }, "puppeteer-core": { - "version": "20.9.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.9.0.tgz", - "integrity": "sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==", + "version": "24.35.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.35.0.tgz", + "integrity": "sha512-vt1zc2ME0kHBn7ZDOqLvgvrYD5bqNv5y2ZNXzYnCv8DEtZGw/zKhljlrGuImxptZ4rq+QI9dFGrUIYqG4/IQzA==", "dev": true, "requires": { - "@puppeteer/browsers": "1.4.6", - "chromium-bidi": "0.4.16", - "cross-fetch": "4.0.0", - "debug": "4.3.4", - "devtools-protocol": "0.0.1147663", - "ws": "8.13.0" + "@puppeteer/browsers": "2.11.1", + "chromium-bidi": "12.0.1", + "debug": "^4.4.3", + "devtools-protocol": "0.0.1534754", + "typed-query-selector": "^2.12.0", + "webdriver-bidi-protocol": "0.3.10", + "ws": "^8.19.0" }, "dependencies": { - "chromium-bidi": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz", - "integrity": "sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==", - "dev": true, - "requires": { - "mitt": "3.0.0" - } - }, "devtools-protocol": { - "version": "0.0.1147663", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1147663.tgz", - "integrity": "sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==", + "version": "0.0.1534754", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1534754.tgz", + "integrity": "sha512-26T91cV5dbOYnXdJi5qQHoTtUoNEqwkHcAyu/IKtjIAxiEqPMrDiRkDOPWVsGfNZGmlQVHQbZRSjD8sxagWVsQ==", "dev": true }, "ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "dev": true, "requires": {} } } }, "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "ws": { "version": "7.5.10", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, "requires": {} + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, + "zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "dev": true } } }, "lighthouse-logger": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", - "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-2.0.2.tgz", + "integrity": "sha512-vWl2+u5jgOQuZR55Z1WM0XDdrJT6mzMP8zHUct7xTlWhuQs+eV0g+QL0RQdFjT54zVmbhLCP8vIVpy1wGn/gCg==", "dev": true, "requires": { - "debug": "^2.6.9", + "debug": "^4.4.1", "marky": "^1.2.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } } }, "lighthouse-stack-packs": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/lighthouse-stack-packs/-/lighthouse-stack-packs-1.11.0.tgz", - "integrity": "sha512-sRr0z1S/I26VffRLq9KJsKtLk856YrJlNGmcJmbLX8dFn3MuzVPUbstuChEhqnSxZb8TZmVfthuXuwhG9vRoSw==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/lighthouse-stack-packs/-/lighthouse-stack-packs-1.12.2.tgz", + "integrity": "sha512-Ug8feS/A+92TMTCK6yHYLwaFMuelK/hAKRMdldYkMNwv+d9PtWxjXEg6rwKtsUXTADajhdrhXyuNCJ5/sfmPFw==", "dev": true }, "lilconfig": { @@ -29278,6 +34833,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash-es": { + "version": "4.17.22", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.22.tgz", + "integrity": "sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==", + "dev": true + }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -29347,12 +34908,6 @@ "tslib": "^2.0.3" } }, - "lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", - "dev": true - }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -29363,12 +34918,20 @@ } }, "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "requires": { - "semver": "^6.0.0" + "semver": "^7.5.3" + }, + "dependencies": { + "semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true + } } }, "makeerror": { @@ -29475,9 +35038,9 @@ "dev": true }, "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -29537,12 +35100,17 @@ "dev": true }, "memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "version": "4.54.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.54.0.tgz", + "integrity": "sha512-wiJ9YYUj2bVcpdJgIv6y1KrStknSdNhfM4+4+ttt0cHHMxVLZ3aOBoER8krt9lGY5HkR2ustUXiihhNPeNxXaQ==", "dev": true, "requires": { - "fs-monkey": "^1.0.4" + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.0.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" } }, "memize": { @@ -29576,12 +35144,6 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true } } }, @@ -29637,9 +35199,9 @@ } }, "mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, "mime-db": { @@ -29726,9 +35288,9 @@ } }, "mitt": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", - "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" }, "mixin-object": { "version": "2.0.1", @@ -29749,18 +35311,18 @@ } }, "mixpanel-browser": { - "version": "2.72.0", - "resolved": "https://registry.npmjs.org/mixpanel-browser/-/mixpanel-browser-2.72.0.tgz", - "integrity": "sha512-Olc+1ebVBSVBjtR/Pp4t8Pc1wAI9AfA5e668B0MsI/gKJ43QcndzfQ/AT/TiP1Klup8O1C9vwykoWjvPqX+SRA==", + "version": "2.73.0", + "resolved": "https://registry.npmjs.org/mixpanel-browser/-/mixpanel-browser-2.73.0.tgz", + "integrity": "sha512-Ny+6BVeWJozZoyrzB+5/6LTqBZ0gDY1pwcs7PQLQVGPKMTdL8qAz0yV4H8ykGQEA5KrW2Ky/KZ3uMEHGjE7oSA==", "requires": { "@mixpanel/rrweb": "2.0.0-alpha.18.2", "@mixpanel/rrweb-plugin-console-record": "2.0.0-alpha.18.2" } }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "module-details-from-path": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", + "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", "dev": true }, "mrmime": { @@ -29790,6 +35352,12 @@ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==" }, + "napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -29831,45 +35399,6 @@ "dev": true, "optional": true }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - }, - "dependencies": { - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } - } - }, - "node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true - }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -29877,9 +35406,9 @@ "dev": true }, "node-releases": { - "version": "2.0.21", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.21.tgz", - "integrity": "sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==", + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "dev": true }, "normalize-package-data": { @@ -29895,9 +35424,9 @@ }, "dependencies": { "semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true } } @@ -29908,12 +35437,6 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true - }, "npm-bundled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", @@ -29961,9 +35484,9 @@ "dev": true }, "semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true }, "type-fest": { @@ -30005,16 +35528,15 @@ } }, "nwsapi": { - "version": "2.2.22", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz", - "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==", + "version": "2.2.23", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", + "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", "dev": true }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-filter": { "version": "1.0.2", @@ -30135,14 +35657,15 @@ } }, "open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", "dev": true, "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" } }, "opener": { @@ -30211,19 +35734,14 @@ } } }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - }, "p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "dev": true, "requires": { - "@types/retry": "0.12.0", + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", "retry": "^0.13.1" } }, @@ -30247,34 +35765,6 @@ "https-proxy-agent": "^7.0.6", "pac-resolver": "^7.0.1", "socks-proxy-agent": "^8.0.5" - }, - "dependencies": { - "agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true - }, - "http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "requires": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - } - }, - "https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "requires": { - "agent-base": "^7.1.2", - "debug": "4" - } - } } }, "pac-resolver": { @@ -30385,12 +35875,6 @@ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true - }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -30421,6 +35905,31 @@ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, + "pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "dev": true + }, + "pg-protocol": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.11.0.tgz", + "integrity": "sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==", + "dev": true + }, + "pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dev": true, + "requires": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + } + }, "picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -30433,26 +35942,11 @@ "dev": true }, "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, "pirates": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", @@ -30468,31 +35962,47 @@ "find-up": "^4.0.0" } }, + "pkijs": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.3.3.tgz", + "integrity": "sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==", + "dev": true, + "requires": { + "@noble/hashes": "1.4.0", + "asn1js": "^3.0.6", + "bytestreamjs": "^2.0.1", + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + } + }, "playwright": { - "version": "1.55.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.55.0.tgz", - "integrity": "sha512-sdCWStblvV1YU909Xqx0DhOjPZE4/5lJsIS84IfN9dAZfcl/CIZ5O8l3o0j7hPMjDvqoTF8ZUcc+i/GL5erstA==", + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", + "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", "dev": true, "peer": true, "requires": { "fsevents": "2.3.2", - "playwright-core": "1.55.0" + "playwright-core": "1.57.0" }, "dependencies": { - "playwright-core": { - "version": "1.55.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.55.0.tgz", - "integrity": "sha512-GvZs4vU3U5ro2nZpeiwyb0zuFaqb9sUiAJuyrWpcGouD8y9/HLgGbNRjIph7zU9D3hnPaisMl9zG9CgFi/biIg==", + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, + "optional": true, "peer": true } } }, "playwright-core": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.39.0.tgz", - "integrity": "sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==", - "dev": true + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", + "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", + "dev": true, + "peer": true }, "plur": { "version": "4.0.0", @@ -30579,6 +36089,17 @@ "dev": true, "requires": {} }, + "postcss-import": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-16.1.1.tgz", + "integrity": "sha512-2xVS1NCZAfjtVdvXiyegxzJ447GyqCeEI5V7ApgQVOWnros1p5lGNovJNapwPpMombyFBfqDwt7AD3n2l0KOfQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, "postcss-loader": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", @@ -30608,6 +36129,12 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true } } }, @@ -30855,9 +36382,9 @@ "dev": true }, "postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", "dev": true, "requires": {} }, @@ -30903,6 +36430,33 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, + "postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "dev": true + }, + "postgres-bytea": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", + "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", + "dev": true + }, + "postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "dev": true + }, + "postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dev": true, + "requires": { + "xtend": "^4.0.0" + } + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -30910,15 +36464,15 @@ "dev": true }, "prettier": { - "version": "npm:wp-prettier@3.0.3", - "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-3.0.3.tgz", - "integrity": "sha512-X4UlrxDTH8oom9qXlcjnydsjAOD2BmB6yFmvS4Z2zdTzqqpRWb+fbqrH412+l+OUXmbzJlSXjlMFYPgYG12IAA==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.0.tgz", + "integrity": "sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==", "dev": true }, "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", "dev": true, "requires": { "fast-diff": "^1.1.2" @@ -30969,7 +36523,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -30979,8 +36532,7 @@ "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" } } }, @@ -31003,47 +36555,21 @@ } }, "proxy-agent": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.0.tgz", - "integrity": "sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", "dev": true, "requires": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "^4.3.4", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.6", "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.0", + "pac-proxy-agent": "^7.1.0", "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.1" + "socks-proxy-agent": "^8.0.5" }, "dependencies": { - "agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true - }, - "http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "requires": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - } - }, - "https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "requires": { - "agent-base": "^7.1.2", - "debug": "4" - } - }, "lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -31058,27 +36584,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, - "ps-list": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-8.1.1.tgz", - "integrity": "sha512-OPS9kEJYVmiO48u/B9qneqhkMvgCxT+Tm28VCEJpheTpl8cJ0ffZRRNgS5mrQRTrX5yRTpaJ+hRDeefXYmmorQ==", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true - }, - "psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "dev": true, - "requires": { - "punycode": "^2.3.1" - } - }, "pump": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", @@ -31096,62 +36601,17 @@ "dev": true }, "puppeteer-core": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.7.0.tgz", - "integrity": "sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q==", + "version": "23.11.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.11.1.tgz", + "integrity": "sha512-3HZ2/7hdDKZvZQ7dhhITOUg4/wOrDRjyK2ZBllRB0ZCOi9u0cwq1ACHDjBB+nX+7+kltHjQvBRdeY7+W0T+7Gg==", "dev": true, "requires": { - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.981744", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.5.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "devtools-protocol": { - "version": "0.0.981744", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", - "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "dev": true, - "requires": {} - } + "@puppeteer/browsers": "2.6.1", + "chromium-bidi": "0.11.0", + "debug": "^4.4.0", + "devtools-protocol": "0.0.1367902", + "typed-query-selector": "^2.12.0", + "ws": "^8.18.0" } }, "pure-rand": { @@ -31160,21 +36620,39 @@ "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true }, - "qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "pvtsutils": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", "dev": true, "requires": { - "side-channel": "^1.0.6" + "tslib": "^2.8.1" } }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "pvutils": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz", + "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==", "dev": true }, + "qified": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/qified/-/qified-0.6.0.tgz", + "integrity": "sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==", + "dev": true, + "requires": { + "hookified": "^1.14.0" + } + }, + "qs": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "dev": true, + "requires": { + "side-channel": "^1.1.0" + } + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -31203,15 +36681,15 @@ "dev": true }, "raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "dev": true, "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" }, "dependencies": { "iconv-lite": { @@ -31237,19 +36715,19 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "peer": true, "requires": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" } }, "react-i18next": { - "version": "15.7.3", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-15.7.3.tgz", - "integrity": "sha512-AANws4tOE+QSq/IeMF/ncoHlMNZaVLxpa5uUGW1wjike68elVYr0018L9xYoqBr1OFO7G7boDPrbn0HpMCJxTw==", + "version": "16.5.3", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-16.5.3.tgz", + "integrity": "sha512-fo+/NNch37zqxOzlBYrWMx0uy/yInPkRfjSuy4lqKdaecR17nvCHnEUt3QyzA8XjQ2B/0iW/5BhaHR3ZmukpGw==", "requires": { - "@babel/runtime": "^7.27.6", - "html-parse-stringify": "^3.0.1" + "@babel/runtime": "^7.28.4", + "html-parse-stringify": "^3.0.1", + "use-sync-external-store": "^1.6.0" } }, "react-is": { @@ -31264,6 +36742,15 @@ "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "dev": true }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "requires": { + "pify": "^2.3.0" + } + }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -31363,6 +36850,12 @@ "strip-indent": "^3.0.0" } }, + "reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "dev": true + }, "reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -31445,12 +36938,6 @@ } } }, - "remove-accents": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz", - "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==", - "dev": true - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -31463,6 +36950,17 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, + "require-in-the-middle": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.2.tgz", + "integrity": "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==", + "dev": true, + "requires": { + "debug": "^4.3.5", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.8" + } + }, "requireindex": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", @@ -31520,6 +37018,12 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true + }, "resolve.exports": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", @@ -31538,15 +37042,6 @@ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "robots-parser": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/robots-parser/-/robots-parser-3.0.1.tgz", @@ -31584,6 +37079,30 @@ "fsevents": "~2.3.2" } }, + "rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "dev": true + }, + "rtlcss": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz", + "integrity": "sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0", + "postcss": "^8.4.21", + "strip-json-comments": "^3.1.1" + } + }, + "run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "dev": true + }, "run-con": { "version": "1.2.12", "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.2.12.tgz", @@ -31681,12 +37200,11 @@ } }, "sass-loader": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", - "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "version": "16.0.6", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.6.tgz", + "integrity": "sha512-sglGzId5gmlfxNs4gK2U3h7HlVRfx278YK6Ono5lwzuvi1jxig80YiuHkaDBVsYIKFhx8wN7XSCI0M2IDS/3qA==", "dev": true, "requires": { - "klona": "^2.0.4", "neo-async": "^2.6.2" } }, @@ -31703,7 +37221,6 @@ "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "peer": true, "requires": { "loose-envify": "^1.1.0" } @@ -31756,13 +37273,13 @@ "dev": true }, "selfsigned": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", - "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-5.5.0.tgz", + "integrity": "sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==", "dev": true, "requires": { - "@types/node-forge": "^1.3.0", - "node-forge": "^1" + "@peculiar/x509": "^1.14.2", + "pkijs": "^3.3.3" } }, "semver": { @@ -31772,24 +37289,24 @@ "dev": true }, "send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "dev": true, "requires": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "range-parser": "~1.2.1", - "statuses": "2.0.1" + "statuses": "~2.0.2" }, "dependencies": { "debug": { @@ -31808,18 +37325,6 @@ "dev": true } } - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true } } }, @@ -31912,15 +37417,15 @@ } }, "serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", "dev": true, "requires": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.19.0" + "send": "~0.19.1" } }, "set-function-length": { @@ -31996,18 +37501,18 @@ } }, "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "shell-quote": { @@ -32016,6 +37521,12 @@ "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", "dev": true }, + "shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", + "dev": true + }, "side-channel": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", @@ -32150,14 +37661,6 @@ "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" - }, - "dependencies": { - "agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true - } } }, "source-map": { @@ -32201,9 +37704,9 @@ } }, "spawnd": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/spawnd/-/spawnd-9.0.2.tgz", - "integrity": "sha512-nl8DVHEDQ57IcKakzpjanspVChkMpGLuVwMR/eOn9cXE55Qr6luD2Kn06sA0ootRMdgrU4tInN6lA6ohTNvysw==", + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/spawnd/-/spawnd-10.1.4.tgz", + "integrity": "sha512-drqHc0mKJmtMsiGMOCwzlc5eZ0RPtRvT7tQAluW2A0qUc0G7TQ8KLcn3E6K5qzkLkH2UkS3nYQiVGULvvsD9dw==", "dev": true, "requires": { "signal-exit": "^4.1.0", @@ -32301,9 +37804,15 @@ } }, "sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "stable-hash-x": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", + "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", "dev": true }, "stack-utils": { @@ -32330,9 +37839,9 @@ "dev": true }, "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "dev": true }, "stop-iteration-iterator": { @@ -32346,12 +37855,12 @@ } }, "streamx": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", - "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", "dev": true, "requires": { - "bare-events": "^2.2.0", + "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } @@ -32527,6 +38036,21 @@ } } }, + "stubborn-fs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stubborn-fs/-/stubborn-fs-2.0.0.tgz", + "integrity": "sha512-Y0AvSwDw8y+nlSNFXMm2g6L51rBGdAQT20J3YSOqxC53Lo3bjWRtr2BKcfYoAf352WYpsZSTURrA0tqhfgudPA==", + "dev": true, + "requires": { + "stubborn-utils": "^1.0.1" + } + }, + "stubborn-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stubborn-utils/-/stubborn-utils-1.0.2.tgz", + "integrity": "sha512-zOh9jPYI+xrNOyisSelgym4tolKTJCQd5GBhK0+0xJvcYDcwlOoxF/rnFKQ2KRZknXSG9jWAp66fwP6AxN9STg==", + "dev": true + }, "style-search": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", @@ -32544,51 +38068,72 @@ } }, "stylelint": { - "version": "14.16.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.16.1.tgz", - "integrity": "sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==", + "version": "16.26.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.26.1.tgz", + "integrity": "sha512-v20V59/crfc8sVTAtge0mdafI3AdnzQ2KsWe6v523L4OA1bJO02S7MO2oyXDCS6iWb9ckIPnqAFVItqSBQr7jw==", "dev": true, "requires": { - "@csstools/selector-specificity": "^2.0.2", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-syntax-patches-for-csstree": "^1.0.19", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3", + "@csstools/selector-specificity": "^5.0.0", + "@dual-bundle/import-meta-resolve": "^4.2.1", "balanced-match": "^2.0.0", "colord": "^2.9.3", - "cosmiconfig": "^7.1.0", - "css-functions-list": "^3.1.0", - "debug": "^4.3.4", - "fast-glob": "^3.2.12", + "cosmiconfig": "^9.0.0", + "css-functions-list": "^3.2.3", + "css-tree": "^3.1.0", + "debug": "^4.4.3", + "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^11.1.1", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", - "html-tags": "^3.2.0", - "ignore": "^5.2.1", - "import-lazy": "^4.0.0", + "html-tags": "^3.3.1", + "ignore": "^7.0.5", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.26.0", + "known-css-properties": "^0.37.0", "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", - "micromatch": "^4.0.5", + "meow": "^13.2.0", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.19", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", + "picocolors": "^1.1.1", + "postcss": "^8.5.6", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.1", + "postcss-selector-parser": "^7.1.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "style-search": "^0.1.0", - "supports-hyperlinks": "^2.3.0", + "supports-hyperlinks": "^3.2.0", "svg-tags": "^1.0.0", - "table": "^6.8.1", - "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^4.0.2" + "table": "^6.9.0", + "write-file-atomic": "^5.0.1" }, "dependencies": { + "@csstools/media-query-list-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", + "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==", + "dev": true, + "requires": {} + }, + "@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "dev": true, + "requires": {} + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", @@ -32596,16 +38141,45 @@ "dev": true }, "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + } + }, + "css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "dev": true, + "requires": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + } + }, + "file-entry-cache": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.2.tgz", + "integrity": "sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==", + "dev": true, + "requires": { + "flat-cache": "^6.1.20" + } + }, + "flat-cache": { + "version": "6.1.20", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.20.tgz", + "integrity": "sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==", + "dev": true, + "requires": { + "cacheable": "^2.3.2", + "flatted": "^3.3.3", + "hookified": "^1.15.0" } }, "global-modules": { @@ -32628,48 +38202,156 @@ "which": "^1.3.1" } }, + "ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true + }, "is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true }, + "js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true + }, + "mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "dev": true + }, + "meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "dev": true + }, + "postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + } } } }, "stylelint-config-recommended": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-6.0.0.tgz", - "integrity": "sha512-ZorSSdyMcxWpROYUvLEMm0vSZud2uB7tX1hzBZwvVY9SV/uly4AvvJPPhCcymZL3fcQhEQG5AELmrxWqtmzacw==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz", + "integrity": "sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==", "dev": true, "requires": {} }, "stylelint-config-recommended-scss": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-5.0.2.tgz", - "integrity": "sha512-b14BSZjcwW0hqbzm9b0S/ScN2+3CO3O4vcMNOw2KGf8lfVSwJ4p5TbNEXKwKl1+0FMtgRXZj6DqVUe/7nGnuBg==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.1.0.tgz", + "integrity": "sha512-bhaMhh1u5dQqSsf6ri2GVWWQW5iUjBYgcHkh7SgDDn92ijoItC/cfO/W+fpXshgTQWhwFkP1rVcewcv4jaftRg==", "dev": true, "requires": { - "postcss-scss": "^4.0.2", - "stylelint-config-recommended": "^6.0.0", - "stylelint-scss": "^4.0.0" + "postcss-scss": "^4.0.9", + "stylelint-config-recommended": "^14.0.1", + "stylelint-scss": "^6.4.0" } }, "stylelint-scss": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.7.0.tgz", - "integrity": "sha512-TSUgIeS0H3jqDZnby1UO1Qv3poi1N8wUYIJY6D1tuUq2MN3lwp/rITVo0wD+1SWTmRm0tNmGO0b7nKInnqF6Hg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.14.0.tgz", + "integrity": "sha512-ZKmHMZolxeuYsnB+PCYrTpFce0/QWX9i9gh0hPXzp73WjuIMqUpzdQaBCrKoLWh6XtCFSaNDErkMPqdjy1/8aA==", "dev": true, "requires": { + "css-tree": "^3.0.1", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.37.0", + "mdn-data": "^2.25.0", "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-selector-parser": "^6.0.11", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-selector-parser": "^7.1.1", "postcss-value-parser": "^4.2.0" + }, + "dependencies": { + "css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "dev": true, + "requires": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "dependencies": { + "mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "dev": true + } + } + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "mdn-data": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.26.0.tgz", + "integrity": "sha512-ZqI0qjKWHMPcGUfLmlr80NPNVHIOjPMHtIOe1qXYFGS0YBZ1YKAzo9yk8W+gGrLCN0Xdv/RKxqdIsqPakEfmow==", + "dev": true + }, + "postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + } } }, "supports-color": { @@ -32682,9 +38364,9 @@ } }, "supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", + "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", "dev": true, "requires": { "has-flag": "^4.0.0", @@ -32739,9 +38421,9 @@ "dev": true }, "synckit": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", - "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, "requires": { "@pkgr/core": "^0.2.9" @@ -32780,15 +38462,6 @@ } } }, - "tannin": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tannin/-/tannin-1.2.0.tgz", - "integrity": "sha512-U7GgX/RcSeUETbV7gYgoz8PD7Ni4y95pgIP/Z6ayI3CfhSujwKEBlGFTCRN+Aqnuyf4AN2yHL+L8x+TCGjb9uA==", - "dev": true, - "requires": { - "@tannin/plural-forms": "^1.1.0" - } - }, "tapable": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.3.tgz", @@ -32796,28 +38469,35 @@ "dev": true }, "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", + "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", "dev": true, "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0", "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "tar-stream": "^3.1.5" } }, "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + }, + "dependencies": { + "b4a": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", + "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", + "dev": true, + "requires": {} + } } }, "terser": { @@ -32933,9 +38613,9 @@ }, "dependencies": { "b4a": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.1.tgz", - "integrity": "sha512-ZovbrBV0g6JxK5cGUF1Suby1vLfKjv4RWi8IxoaO/Mon8BDD9I21RxjHFtgQ+kskJqLAVyQZly3uMBui+vhc8Q==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", + "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", "dev": true, "requires": {} } @@ -32947,10 +38627,17 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "thingies": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", + "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", + "dev": true, + "requires": {} + }, "third-party-web": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/third-party-web/-/third-party-web-0.23.4.tgz", - "integrity": "sha512-kwYnSZRhEvv0SBW2fp8SBBKRglMoBjV8xz6C31m0ewqOtknB5UL+Ihg+M81hyFY5ldkZuGWPb+e4GVDkzf/gYg==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/third-party-web/-/third-party-web-0.27.0.tgz", + "integrity": "sha512-h0JYX+dO2Zr3abCQpS6/uFjujaOjA1DyDzGQ41+oFn9VW/ARiq9g5ln7qEP9+BTzDpOMyIfsfj4OvfgXAsMUSA==", "dev": true }, "through": { @@ -32965,6 +38652,63 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, + "tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "requires": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "dependencies": { + "fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "requires": {} + }, + "picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true + } + } + }, + "tldts": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", + "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", + "dev": true, + "requires": { + "tldts-core": "^6.1.86" + } + }, + "tldts-core": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", + "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", + "dev": true + }, + "tldts-icann": { + "version": "7.0.19", + "resolved": "https://registry.npmjs.org/tldts-icann/-/tldts-icann-7.0.19.tgz", + "integrity": "sha512-PZgda8E2cXMNa7QlBbiZh3vcS8UaPTDRIBmcGPDlujSMtQLrzjvikeJxzQSqWxn3muaMJ7BsC+aL464Yl2I6cA==", + "dev": true, + "requires": { + "tldts-core": "^7.0.19" + }, + "dependencies": { + "tldts-core": { + "version": "7.0.19", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.19.tgz", + "integrity": "sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==", + "dev": true + } + } + }, "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -32993,26 +38737,30 @@ "dev": true }, "tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", "dev": true, "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "tldts": "^6.1.32" } }, "tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", + "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", "dev": true, "requires": { - "punycode": "^2.1.1" + "punycode": "^2.3.1" } }, + "tree-dump": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", + "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", + "dev": true, + "requires": {} + }, "tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -33101,6 +38849,23 @@ } } }, + "tsyringe": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz", + "integrity": "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==", + "dev": true, + "requires": { + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -33185,14 +38950,11 @@ "reflect.getprototypeof": "^1.0.6" } }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } + "typed-query-selector": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", + "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==", + "dev": true }, "typescript": { "version": "5.9.2", @@ -33263,27 +39025,40 @@ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "requires": { - "crypto-random-string": "^2.0.0" - } - }, - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true - }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true }, + "unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "requires": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1", + "napi-postinstall": "^0.3.0" + } + }, "update-browserslist-db": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", @@ -33345,15 +39120,11 @@ } } }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } + "use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "requires": {} }, "util-deprecate": { "version": "1.0.2", @@ -33373,12 +39144,6 @@ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true }, - "v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "dev": true - }, "v8-to-istanbul": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", @@ -33425,15 +39190,33 @@ "dev": true }, "vite": { - "version": "5.4.20", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.20.tgz", - "integrity": "sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "dev": true, "requires": { - "esbuild": "^0.21.3", + "esbuild": "^0.25.0", + "fdir": "^6.4.4", "fsevents": "~2.3.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "dependencies": { + "fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "requires": {} + }, + "picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true + } } }, "void-elements": { @@ -33442,25 +39225,25 @@ "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==" }, "w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dev": true, "requires": { - "xml-name-validator": "^4.0.0" + "xml-name-validator": "^5.0.0" } }, "wait-on": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz", - "integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.5.tgz", + "integrity": "sha512-J3WlS0txVHkhLRb2FsmRg3dkMTCV1+M6Xra3Ho7HzZDHpE7DCOnoSoCJsZotrmW3uRMhvIJGSKUKrh/MeF4iag==", "dev": true, "requires": { - "axios": "^1.6.1", - "joi": "^17.11.0", + "axios": "^1.12.1", + "joi": "^18.0.1", "lodash": "^4.17.21", "minimist": "^1.2.8", - "rxjs": "^7.8.1" + "rxjs": "^7.8.2" } }, "walker": { @@ -33492,9 +39275,15 @@ } }, "web-vitals": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.5.2.tgz", - "integrity": "sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-4.2.4.tgz", + "integrity": "sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==", + "dev": true + }, + "webdriver-bidi-protocol": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.10.tgz", + "integrity": "sha512-5LAE43jAVLOhB/QqX4bwSiv0Hg1HBfMmOuwBSXHdvg4GMGu9Y0lIq7p4R/yySu6w74WmaR4GM4H9t2IwLW7hgw==", "dev": true }, "webidl-conversions": { @@ -33572,118 +39361,99 @@ } }, "webpack-cli": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", - "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", + "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", "dev": true, "requires": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.1.1", - "@webpack-cli/info": "^2.0.2", - "@webpack-cli/serve": "^2.0.5", + "@discoveryjs/json-ext": "^0.6.1", + "@webpack-cli/configtest": "^3.0.1", + "@webpack-cli/info": "^3.0.1", + "@webpack-cli/serve": "^3.0.1", "colorette": "^2.0.14", - "commander": "^10.0.1", + "commander": "^12.1.0", "cross-spawn": "^7.0.3", - "envinfo": "^7.7.3", + "envinfo": "^7.14.0", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", "interpret": "^3.1.1", "rechoir": "^0.8.0", - "webpack-merge": "^5.7.3" + "webpack-merge": "^6.0.1" }, "dependencies": { - "commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "@discoveryjs/json-ext": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, "webpack-dev-middleware": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", - "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", + "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", "dev": true, "requires": { "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", + "memfs": "^4.43.1", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" + }, + "dependencies": { + "mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true + }, + "mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "dev": true, + "requires": { + "mime-db": "^1.54.0" + } + } } }, "webpack-dev-server": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", - "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", - "dev": true, - "requires": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz", + "integrity": "sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.25", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", "colorette": "^2.0.10", - "compression": "^1.7.4", + "compression": "^1.8.1", "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", + "express": "^4.22.1", "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^5.5.0", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.4", - "ws": "^8.13.0" + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" }, "dependencies": { "chokidar": { @@ -33719,27 +39489,18 @@ "requires": { "picomatch": "^2.2.1" } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } } } }, "webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", "dev": true, "requires": { "clone-deep": "^4.0.1", "flat": "^5.0.2", - "wildcard": "^2.0.0" + "wildcard": "^2.0.1" }, "dependencies": { "clone-deep": { @@ -33794,34 +39555,40 @@ "dev": true }, "whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dev": true, "requires": { "iconv-lite": "0.6.3" } }, "whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "dev": true }, "whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", "dev": true, "requires": { - "tr46": "^3.0.0", + "tr46": "^5.1.0", "webidl-conversions": "^7.0.0" } }, + "when-exit": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/when-exit/-/when-exit-2.1.5.tgz", + "integrity": "sha512-VGkKJ564kzt6Ms1dbgPP/yuIoQCrsFAnRbptpC5wOEsDaNsbCB2bnfnaA8i/vRs5tjUSEOtIuvl9/MyVsvQZCg==", + "dev": true + }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -33928,22 +39695,31 @@ } }, "ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "dev": true, "requires": {} }, + "wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "dev": true, + "requires": { + "is-wsl": "^3.1.0" + } + }, "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", "dev": true }, "xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "dev": true }, "xmlchars": { @@ -33952,6 +39728,12 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -33965,10 +39747,12 @@ "dev": true }, "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "dev": true, + "optional": true, + "peer": true }, "yargs": { "version": "17.7.2", @@ -33983,12 +39767,20 @@ "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" + }, + "dependencies": { + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } } }, "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true }, "yauzl": { @@ -34006,6 +39798,12 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true + }, + "zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "dev": true } } } diff --git a/frontend/package.json b/frontend/package.json index 0a0a33a..261e178 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -15,10 +15,13 @@ "README.md" ], "scripts": { - "start": "npm run minify-css && node copy-build.js --watch & wp-scripts start", - "build": "npm run minify-css && webpack --config webpack.wp.js && node copy-build.js", + "start": "npm run minify-css && wp-scripts start", + "build": "npm run minify-css && webpack --config webpack.wp.js", "build:standalone": "vite build", - "copy": "node copy-build.js", + "lint": "eslint 'src/**/*.{js,jsx}'", + "lint:fix": "eslint . --fix", + "format": "prettier --log-level=error --write 'src/**/*.{js,jsx,css,scss}'", + "format:check": "prettier --check 'src/**/*.{js,jsx,css,scss}'", "minify-css": "cleancss -o ../assets/min-css/marketplace.min.css ../css/marketplace.css" }, "peerDependencies": { @@ -27,12 +30,21 @@ }, "devDependencies": { "@vitejs/plugin-react": "^4.0.0", - "@wordpress/scripts": "^26.0.0", + "@wordpress/scripts": "^31.1.0", "clean-css-cli": "^5.6.3", "cross-env": "^7.0.3", - "vite": "^5.0.0", - "webpack": "^5.0.0", - "webpack-cli": "^5.0.0" + "eslint": "^8.57.1", + "eslint-config-prettier": "^9.1.2", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-react": "^7.37.4", + "eslint-plugin-react-hooks": "^4.6.2", + "prettier": "^3.5.1", + "vite": "^6.1.0", + "webpack": "^5.97.1", + "webpack-cli": "^6.0.1" + }, + "overrides": { + "webpack-dev-server": "^5.2.1" }, "publishConfig": { "access": "public" @@ -44,8 +56,11 @@ "author": "One.com", "license": "GPL-2.0-or-later", "dependencies": { - "@group.one/gravity": "^5.22.1", - "mixpanel-browser": "^2.72.0", - "react-i18next": "^15.7.3" + "@eslint/js": "^8.57.1", + "@dogado/gravity": "^5.25.3", + "globals": "^15.15.0", + "mixpanel-browser": "^2.73.0", + "prop-types": "^15.8.1", + "react-i18next": "^16.5.0" } } diff --git a/frontend/src/AddonsApp.jsx b/frontend/src/AddonsApp.jsx index 2c28e05..b0176dc 100644 --- a/frontend/src/AddonsApp.jsx +++ b/frontend/src/AddonsApp.jsx @@ -1,25 +1,25 @@ -import React from "react"; -import Addons from "./components/Addons"; -import LoadingOverlay from "./components/LoadingOverlay"; -import { MarketplaceProvider } from "./context/MarketplaceContext"; +import React from 'react'; +import Addons from './components/Addons'; +import LoadingOverlay from './components/LoadingOverlay'; +import { MarketplaceProvider } from './context/MarketplaceContext'; const AddonsApp = ({ apiBaseUrl, useWPHandlers, wpConfig, enableDefaultStyles, assetsBaseUrl }) => { - return ( - - -
-
- -
-
-
- ); + return ( + + +
+
+ +
+
+
+ ); }; export default AddonsApp; diff --git a/frontend/src/MarketplaceApp.jsx b/frontend/src/MarketplaceApp.jsx index cbe717d..4b7280f 100644 --- a/frontend/src/MarketplaceApp.jsx +++ b/frontend/src/MarketplaceApp.jsx @@ -1,80 +1,91 @@ -import React, { useState, useEffect } from "react"; -import Marketplace from "./components/MarketPlace"; -import ProductBanner from "./components/ProductBanner"; -import FeaturedCarousel from "./components/FeaturedCarousel"; -import LoadingOverlay from "./components/LoadingOverlay"; -import { MarketplaceProvider, useMarketplace } from "./context/MarketplaceContext"; +import React, { useState, useEffect } from 'react'; +import Marketplace from './components/MarketPlace'; +import ProductBanner from './components/ProductBanner'; +import FeaturedCarousel from './components/FeaturedCarousel'; +import LoadingOverlay from './components/LoadingOverlay'; +import { MarketplaceProvider, useMarketplace } from './context/MarketplaceContext'; // Inner component that can access the context const MarketplaceContent = () => { - const { allPluginsActivated, catalogError, catalogLoading, isWpVersionSupported } = useMarketplace(); + const { allPluginsActivated, catalogError, catalogLoading, isWpVersionSupported } = + useMarketplace(); - const isSupportedWpVersion = isWpVersionSupported('6.2'); + const isSupportedWpVersion = isWpVersionSupported('6.2'); - // Track detail page visibility with state - const [isDetailPage, setIsDetailPage] = useState( - typeof window !== "undefined" && new URLSearchParams(window.location.search).get("plugin") - ); + // Track detail page visibility with state + const [isDetailPage, setIsDetailPage] = useState( + typeof window !== 'undefined' && new URLSearchParams(window.location.search).get('plugin') + ); - // Listen for URL changes (both popstate and custom events) - useEffect(() => { - const checkDetailPage = () => { - const hasPlugin = typeof window !== "undefined" && new URLSearchParams(window.location.search).get("plugin"); - setIsDetailPage(!!hasPlugin); - }; + // Listen for URL changes (both popstate and custom events) + useEffect(() => { + const checkDetailPage = () => { + const hasPlugin = + typeof window !== 'undefined' && new URLSearchParams(window.location.search).get('plugin'); + setIsDetailPage(!!hasPlugin); + }; - // Listen for browser back/forward - window.addEventListener('popstate', checkDetailPage); + // Listen for browser back/forward + window.addEventListener('popstate', checkDetailPage); - // Listen for programmatic URL changes (from pushState) - const originalPushState = window.history.pushState; - window.history.pushState = function(...args) { - originalPushState.apply(this, args); - checkDetailPage(); - }; + // Listen for programmatic URL changes (from pushState) + const originalPushState = window.history.pushState; + window.history.pushState = function (...args) { + originalPushState.apply(this, args); + checkDetailPage(); + }; - // Listen for programmatic URL changes (from replaceState) - const originalReplaceState = window.history.replaceState; - window.history.replaceState = function(...args) { - originalReplaceState.apply(this, args); - checkDetailPage(); - }; + // Listen for programmatic URL changes (from replaceState) + const originalReplaceState = window.history.replaceState; + window.history.replaceState = function (...args) { + originalReplaceState.apply(this, args); + checkDetailPage(); + }; - return () => { - window.removeEventListener('popstate', checkDetailPage); - window.history.pushState = originalPushState; - window.history.replaceState = originalReplaceState; - }; - }, []); + return () => { + window.removeEventListener('popstate', checkDetailPage); + window.history.pushState = originalPushState; + window.history.replaceState = originalReplaceState; + }; + }, []); - return ( - <> - -
-
+ return ( + <> + +
+
+ {!isDetailPage && !catalogError && isSupportedWpVersion && ( + + )} + {!isDetailPage && !allPluginsActivated && isSupportedWpVersion && ( + + )} - {!isDetailPage && !catalogError && isSupportedWpVersion && } - {!isDetailPage && !allPluginsActivated && isSupportedWpVersion && } - - -
-
- - ); + +
+
+ + ); }; -const MarketplaceApp = ({ apiBaseUrl, useWPHandlers, wpConfig, enableDefaultStyles, assetsBaseUrl }) => { - return ( - - - - ); +const MarketplaceApp = ({ + apiBaseUrl, + useWPHandlers, + wpConfig, + enableDefaultStyles, + assetsBaseUrl, +}) => { + return ( + + + + ); }; export default MarketplaceApp; diff --git a/frontend/src/addons.jsx b/frontend/src/addons.jsx index 9dd17b9..542fdb3 100644 --- a/frontend/src/addons.jsx +++ b/frontend/src/addons.jsx @@ -1,31 +1,32 @@ -import React from "react"; -import ReactDOM from "react-dom"; -import AddonsApp from "./AddonsApp"; -import './i18n' -import { isWpVersionSupported } from "./utils/wpVersionHelper"; +import React from 'react'; +import ReactDOM from 'react-dom'; +import AddonsApp from './AddonsApp'; +import './i18n'; +import { isWpVersionSupported } from './utils/wpVersionHelper'; // Inside-WP auto-mount -document.addEventListener("DOMContentLoaded", () => { - const el = document.getElementById("marketplace-addons-root"); - if (el) { - const config = window.marketplaceConfig || {}; - if (config.locale) { - import("i18next").then(({ default: i18n }) => { - i18n.changeLanguage(config.locale); - }); - } +document.addEventListener('DOMContentLoaded', () => { + const el = document.getElementById('marketplace-addons-root'); + if (el) { + const config = window.marketplaceConfig || {}; + if (config.locale) { + import('i18next').then(({ default: i18n }) => { + i18n.changeLanguage(config.locale); + }); + } - const isSupported = isWpVersionSupported(config.wpVersion, '6.2'); + const isSupported = isWpVersionSupported(config.wpVersion, '6.2'); - if (typeof ReactDOM.createRoot === 'function' && isSupported) { - // React 18+ - const root = ReactDOM.createRoot(el); - root.render(); - } else { - // React 17 or unsupported version - // For unsupported versions, AddonsApp will still render and show WpVersionErrorState - // We just need to use the compatible render method - ReactDOM.render(, el); - } + if (typeof ReactDOM.createRoot === 'function' && isSupported) { + // React 18+ + const root = ReactDOM.createRoot(el); + root.render(); + } else { + // React 17 or unsupported version + // For unsupported versions, AddonsApp will still render and show WpVersionErrorState + // We just need to use the compatible render method + /* eslint-disable-next-line react/no-deprecated */ + ReactDOM.render(, el); } + } }); diff --git a/frontend/src/components/Addons.jsx b/frontend/src/components/Addons.jsx index 46b9b70..84125d1 100644 --- a/frontend/src/components/Addons.jsx +++ b/frontend/src/components/Addons.jsx @@ -1,631 +1,722 @@ -import React, { useState, useEffect, useRef } from "react"; -import { useMarketplace } from "../context/MarketplaceContext"; -import { formatPluginPrice, getRebatePrice, getFullPrice } from "../utils/priceFormatter"; -import ProductDetail from "./ProductDetail"; -import ProductDetailRankMath from "./ProductDetailRankMath"; -import ErrorToast from "./ErrorToast"; -import SuccessToast from "./SuccessToast"; -import "@group.one/gravity"; -import ErrorState from "./ErrorState"; -import WpVersionErrorState from "./WpVersionErrorState"; -import {trackButtonClick, trackPageView, trackPluginDetailVisit} from "../utils/mixpanelTracking"; -import { getPluginRedirectUrl, navigateToPluginUrl } from "../utils/redirectUrlHelper"; +import React, { useState, useEffect, useRef } from 'react'; +import { useMarketplace } from '../context/MarketplaceContext'; +import { formatPluginPrice, getRebatePrice, getFullPrice } from '../utils/priceFormatter'; +import ProductDetail from './ProductDetail'; +import ProductDetailRankMath from './ProductDetailRankMath'; +import ErrorToast from './ErrorToast'; +import SuccessToast from './SuccessToast'; +import '@dogado/gravity'; +import ErrorState from './ErrorState'; +import WpVersionErrorState from './WpVersionErrorState'; +import { trackButtonClick, trackPageView, trackPluginDetailVisit } from '../utils/mixpanelTracking'; +import { getPluginRedirectUrl, navigateToPluginUrl } from '../utils/redirectUrlHelper'; export default function Addons() { - const { - apiBaseUrl, - assetsBaseUrl, - pluginInAction, - setPluginInAction, - subscriptionStatus, - fetchSubscriptionStatus, - isOnecomBrand, - plugins, - setPlugins, - uiI18n, - setUiI18n, - handlePluginAction, - catalogError, - setCatalogError, - catalogLoading, - setCatalogLoading, - shouldShowProvision, - isSpecialPlugin, - shouldShowPlugin, - isWpVersionSupported - } = useMarketplace(); - - const [selectedPlugin, setSelectedPlugin] = useState(null); - const [featuredPlugins, setFeaturedPlugins] = useState([]); - const [openMenuIndex, setOpenMenuIndex] = useState(null); - const menuRef = useRef(null); - - // Use ref to track if plugins have already been fetched - const hasFetchedPlugins = useRef(false); - - // Use ref to track if addons visit has been tracked (prevent duplicates) - const hasTrackedAddonsVisit = useRef(false); - - // Use ref to track last tracked plugin detail to prevent duplicate tracking - const lastTrackedPluginSlug = useRef(null); - - // Use ref to store timestamps for tracking - const contentReceivedTimestamp = useRef(null); - const contentRenderTimestamp = useRef(null); - - // Use ref to store is_cached flag from API response - const isCachedRef = useRef(false); - - // Construct icon base URL with fallback logic - const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== "undefined" && window.marketplaceConfig?.assetsBaseUrl) || ""; - const iconBase = assetBase ? `${assetBase}assets/icons/` : ""; - - // Determine if a plugin slug is in the URL - const pluginFromQuery = typeof window !== "undefined" - ? new URLSearchParams(window.location.search).get("plugin") - : null; - - // Get marketplace page URL - const getMarketplaceUrl = (slug) => { - const adminUrl = typeof window !== "undefined" && window.marketplaceConfig?.wpConfig?.adminUrl - ? window.marketplaceConfig.wpConfig.adminUrl - : '/wp-admin/'; - return `${adminUrl}admin.php?page=onecom-marketplace&plugin=${slug}`; - }; + const { + apiBaseUrl, + assetsBaseUrl, + pluginInAction, + setPluginInAction, + subscriptionStatus, + fetchSubscriptionStatus, + isOnecomBrand, + plugins, + setPlugins, + uiI18n, + setUiI18n, + handlePluginAction, + catalogError, + setCatalogError, + catalogLoading, + setCatalogLoading, + shouldShowProvision, + isSpecialPlugin, + shouldShowPlugin, + isWpVersionSupported, + } = useMarketplace(); + + const [selectedPlugin, setSelectedPlugin] = useState(null); + const [featuredPlugins, setFeaturedPlugins] = useState([]); + const [openMenuIndex, setOpenMenuIndex] = useState(null); + const menuRef = useRef(null); + + // Use ref to track if plugins have already been fetched + const hasFetchedPlugins = useRef(false); + + // Use ref to track if addons visit has been tracked (prevent duplicates) + const hasTrackedAddonsVisit = useRef(false); + + // Use ref to track last tracked plugin detail to prevent duplicate tracking + const lastTrackedPluginSlug = useRef(null); + + // Use ref to store timestamps for tracking + const contentReceivedTimestamp = useRef(null); + const contentRenderTimestamp = useRef(null); + + // Use ref to store is_cached flag from API response + const isCachedRef = useRef(false); + + // Construct icon base URL with fallback logic + const assetBase = + assetsBaseUrl || + (typeof window.marketplaceConfig !== 'undefined' && window.marketplaceConfig?.assetsBaseUrl) || + ''; + const iconBase = assetBase ? `${assetBase}assets/icons/` : ''; + + // Determine if a plugin slug is in the URL + const pluginFromQuery = + typeof window !== 'undefined' + ? new URLSearchParams(window.location.search).get('plugin') + : null; + + // Get marketplace page URL + const getMarketplaceUrl = (slug) => { + const adminUrl = + typeof window !== 'undefined' && window.marketplaceConfig?.wpConfig?.adminUrl + ? window.marketplaceConfig.wpConfig.adminUrl + : '/wp-admin/'; + return `${adminUrl}admin.php?page=onecom-marketplace&plugin=${slug}`; + }; + + // Handle "Manage" action + const handleManageAction = (plugin) => { + // Track the manage button click + if (typeof window !== 'undefined' && window.marketplaceConfig?.data_consent_status) { + trackButtonClick({ + buttonName: 'Manage', + buttonAction: 'manage_product', + context: { + product_slug: plugin.slug, + product_name: plugin.name, + has_redirect_url: !!(plugin.redirectUrl && plugin.redirectUrl.trim() !== ''), + has_onboarding_url: !!(plugin.onboardingUrl && plugin.onboardingUrl.trim() !== ''), + }, + }); + } - // Handle "Manage" action - const handleManageAction = (plugin) => { - // Track the manage button click - if (typeof window !== "undefined" && window.marketplaceConfig?.data_consent_status) { - trackButtonClick({ - buttonName: 'Manage', - buttonAction: 'manage_product', - context: { - product_slug: plugin.slug, - product_name: plugin.name, - has_redirect_url: !!(plugin.redirectUrl && plugin.redirectUrl.trim() !== ''), - has_onboarding_url: !!(plugin.onboardingUrl && plugin.onboardingUrl.trim() !== ''), - } - }); + const redirectUrl = getPluginRedirectUrl(plugin, false); + navigateToPluginUrl(redirectUrl); + }; + + // Fetch plugins from API + useEffect(() => { + if (hasFetchedPlugins.current) return; + hasFetchedPlugins.current = true; + + setCatalogLoading(true); + setCatalogError(null); + + fetch(apiBaseUrl) + .then((res) => { + if (!res.ok) throw new Error(`HTTP error! status: ${res.status}`); + // Capture timestamp when content is received + contentReceivedTimestamp.current = Date.now(); + return res.json(); + }) + .then((data) => { + // Check if response was cached + if (data.is_cached || data.cached) { + isCachedRef.current = true; } - const redirectUrl = getPluginRedirectUrl(plugin, false); - navigateToPluginUrl(redirectUrl); - }; - - // Fetch plugins from API - useEffect(() => { - if (hasFetchedPlugins.current) return; - hasFetchedPlugins.current = true; - - setCatalogLoading(true); - setCatalogError(null); - - fetch(apiBaseUrl) - .then((res) => { - if (!res.ok) throw new Error(`HTTP error! status: ${res.status}`); - // Capture timestamp when content is received - contentReceivedTimestamp.current = Date.now(); - return res.json(); + if (data.success && data.data && data.data.catalog) { + const allPlugins = data.data.catalog; + setPlugins(allPlugins); + + // Check activation status of Rank Math plugins + const rankMathActivated = + allPlugins.find((p) => p.slug === 'seo-by-rank-math')?.activated === true; + const rankMathProActivated = + allPlugins.find((p) => p.slug === 'seo-by-rank-math-pro')?.activated === true; + + // Filter featured plugins and get top 3 + // Hide if it is already active on the site + const featured = allPlugins + .filter((plugin) => { + // Apply visibility rules + if (!shouldShowPlugin(plugin)) { + return false; + } + + // Skip activated plugins + if ( + plugin.activated === true || + (plugin.featured !== true && plugin.featured !== 'true') + ) { + return false; + } + + // Handle Rank Math plugin visibility + if (plugin.slug === 'seo-by-rank-math') { + // Show seo-by-rank-math only if BOTH plugins are NOT activated + return !rankMathActivated && !rankMathProActivated; + } + + if (plugin.slug === 'seo-by-rank-math-pro') { + // Show seo-by-rank-math-pro only if seo-by-rank-math IS activated + return rankMathActivated; + } + + return true; }) - .then((data) => { - // Check if response was cached - if (data.is_cached || data.cached) { - isCachedRef.current = true; - } - - if (data.success && data.data && data.data.catalog) { - const allPlugins = data.data.catalog; - setPlugins(allPlugins); - - // Check activation status of Rank Math plugins - const rankMathActivated = allPlugins.find(p => p.slug === "seo-by-rank-math")?.activated === true; - const rankMathProActivated = allPlugins.find(p => p.slug === "seo-by-rank-math-pro")?.activated === true; - - // Filter featured plugins and get top 3 - // Hide if it is already active on the site - const featured = allPlugins - .filter(plugin => { - // Apply visibility rules - if (!shouldShowPlugin(plugin)) { - return false; - } + .sort((a, b) => { + const orderA = a.displayOrder !== undefined ? parseInt(a.displayOrder) : Infinity; + const orderB = b.displayOrder !== undefined ? parseInt(b.displayOrder) : Infinity; + return orderA - orderB; + }) + .slice(0, 3); - // Skip activated plugins - if (plugin.activated === true || (plugin.featured !== true && plugin.featured !== "true")) { - return false; - } + setFeaturedPlugins(featured); - // Handle Rank Math plugin visibility - if (plugin.slug === "seo-by-rank-math") { - // Show seo-by-rank-math only if BOTH plugins are NOT activated - return !rankMathActivated && !rankMathProActivated; - } + // Set UI i18n if available + const uiI18nData = data.data.uiI18n || data.data.ui_i18n; + if (uiI18nData) { + setUiI18n(uiI18nData); + } - if (plugin.slug === "seo-by-rank-math-pro") { - // Show seo-by-rank-math-pro only if seo-by-rank-math IS activated - return rankMathActivated; - } + // Fetch subscription status for special plugins (wp-rocket, rank-math-pro) + if (isOnecomBrand) { + const specialPlugins = allPlugins.filter((p) => isSpecialPlugin(p.slug)); - return true; - }) - .sort((a, b) => { - const orderA = a.displayOrder !== undefined ? parseInt(a.displayOrder) : Infinity; - const orderB = b.displayOrder !== undefined ? parseInt(b.displayOrder) : Infinity; - return orderA - orderB; - }) - .slice(0, 3); - - setFeaturedPlugins(featured); - - // Set UI i18n if available - const uiI18nData = data.data.uiI18n || data.data.ui_i18n; - if (uiI18nData) { - setUiI18n(uiI18nData); - } - - // Fetch subscription status for special plugins (wp-rocket, rank-math-pro) - if (isOnecomBrand) { - const specialPlugins = allPlugins.filter(p => isSpecialPlugin(p.slug)); - - // Fetch subscription status for each special plugin - specialPlugins.forEach(plugin => { - fetchSubscriptionStatus(plugin.slug); - }); - } - } else { - // Track page view with content render failure - trackPageView({ - category: 'addons_page', - itemName: 'Addons Page', - isContentRendered: false, - }); - throw new Error("Invalid API response structure"); - } - }) - .catch((err) => { - console.error("Failed to fetch plugins:", err); - // Track page view with content render failure - trackPageView({ - category: 'addons_page', - itemName: 'Addons Page', - isContentRendered: false, - }); - setCatalogError(err.message || "Failed to load plugins"); - }) - .finally(() => { - setCatalogLoading(false); + // Fetch subscription status for each special plugin + specialPlugins.forEach((plugin) => { + fetchSubscriptionStatus(plugin.slug); }); - }, [apiBaseUrl, setPlugins, setUiI18n, setCatalogError, setCatalogLoading, shouldShowPlugin]); - - // After plugins load, select plugin from query if present - useEffect(() => { - if (pluginFromQuery && plugins.length) { - const match = plugins.find(p => p.slug === pluginFromQuery); - if (match) setSelectedPlugin(match); - } else if (!pluginFromQuery) { - setSelectedPlugin(null); - } - }, [pluginFromQuery, plugins]); - - // Listen for browser back/forward navigation - useEffect(() => { - const handlePopState = () => { - const currentPluginParam = new URLSearchParams(window.location.search).get("plugin"); - if (!currentPluginParam) { - setSelectedPlugin(null); - } else if (plugins.length) { - const match = plugins.find(p => p.slug === currentPluginParam); - if (match) setSelectedPlugin(match); - } - }; - - window.addEventListener('popstate', handlePopState); - return () => window.removeEventListener('popstate', handlePopState); - }, [plugins]); - - useEffect(() => { - const handleClickOutside = (event) => { - if (menuRef.current && !menuRef.current.contains(event.target)) { - setOpenMenuIndex(null); - } - }; - - if (openMenuIndex !== null) { - document.addEventListener("mousedown", handleClickOutside); + } } else { - document.removeEventListener("mousedown", handleClickOutside); - } - - return () => { - document.removeEventListener("mousedown", handleClickOutside); - }; - }, [openMenuIndex]); - - // Track addons page visit when plugins are loaded and no plugin detail is shown - useEffect(() => { - if (!catalogLoading && !catalogError && plugins.length > 0 && !pluginFromQuery && !hasTrackedAddonsVisit.current) { - // Capture timestamp when content is rendered to the page - contentRenderTimestamp.current = Date.now(); - - // Check if this is a reload caused by plugin activation - const skipPageView = sessionStorage.getItem('mp_skip_page_view'); - if (skipPageView === 'true') { - // Clear the flag and skip tracking - sessionStorage.removeItem('mp_skip_page_view'); - } else { - // Normal page load, track the visit - trackPageView({ - category: 'addons_page', - itemName: 'Addons Page', - contentReceivedAt: contentReceivedTimestamp.current, - contentRenderedAt: contentRenderTimestamp.current, - isCached: isCachedRef.current, - }); - } - - hasTrackedAddonsVisit.current = true; + // Track page view with content render failure + trackPageView({ + category: 'addons_page', + itemName: 'Addons Page', + isContentRendered: false, + }); + throw new Error('Invalid API response structure'); } - }, [catalogLoading, catalogError, plugins.length, pluginFromQuery]); - - - // Determine which detail component to use - const shouldUseRankMathDetail = (plugin) => { - return plugin && plugin.slug === 'seo-by-rank-math'; + }) + .catch((err) => { + console.error('Failed to fetch plugins:', err); + // Track page view with content render failure + trackPageView({ + category: 'addons_page', + itemName: 'Addons Page', + isContentRendered: false, + }); + setCatalogError(err.message || 'Failed to load plugins'); + }) + .finally(() => { + setCatalogLoading(false); + }); + }, [ + apiBaseUrl, + setPlugins, + setUiI18n, + setCatalogError, + setCatalogLoading, + shouldShowPlugin, + fetchSubscriptionStatus, + isOnecomBrand, + isSpecialPlugin, + ]); + + // After plugins load, select plugin from query if present + useEffect(() => { + if (pluginFromQuery && plugins.length) { + const match = plugins.find((p) => p.slug === pluginFromQuery); + if (match) setSelectedPlugin(match); + } else if (!pluginFromQuery) { + setSelectedPlugin(null); + } + }, [pluginFromQuery, plugins]); + + // Listen for browser back/forward navigation + useEffect(() => { + const handlePopState = () => { + const currentPluginParam = new URLSearchParams(window.location.search).get('plugin'); + if (!currentPluginParam) { + setSelectedPlugin(null); + } else if (plugins.length) { + const match = plugins.find((p) => p.slug === currentPluginParam); + if (match) setSelectedPlugin(match); + } }; + window.addEventListener('popstate', handlePopState); + return () => window.removeEventListener('popstate', handlePopState); + }, [plugins]); + useEffect(() => { + const handleClickOutside = (event) => { + if (menuRef.current && !menuRef.current.contains(event.target)) { + setOpenMenuIndex(null); + } + }; - // Show loading state - if (catalogLoading) { - return ( -
-
-
+ if (openMenuIndex !== null) { + document.addEventListener('mousedown', handleClickOutside); + } else { + document.removeEventListener('mousedown', handleClickOutside); + } -
-
-
-
-
-
-
-
- {[0, 1, 2].map((index) => ( -
-
-
-
-
-
-
-
-
-
-
-
-
- ))} -
+ return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, [openMenuIndex]); + + // Track addons page visit when plugins are loaded and no plugin detail is shown + useEffect(() => { + if ( + !catalogLoading && + !catalogError && + plugins.length > 0 && + !pluginFromQuery && + !hasTrackedAddonsVisit.current + ) { + // Capture timestamp when content is rendered to the page + contentRenderTimestamp.current = Date.now(); + + // Check if this is a reload caused by plugin activation + const skipPageView = sessionStorage.getItem('mp_skip_page_view'); + if (skipPageView === 'true') { + // Clear the flag and skip tracking + sessionStorage.removeItem('mp_skip_page_view'); + } else { + // Normal page load, track the visit + trackPageView({ + category: 'addons_page', + itemName: 'Addons Page', + contentReceivedAt: contentReceivedTimestamp.current, + contentRenderedAt: contentRenderTimestamp.current, + isCached: isCachedRef.current, + }); + } + + hasTrackedAddonsVisit.current = true; + } + }, [catalogLoading, catalogError, plugins.length, pluginFromQuery]); -
- - - - - - - - - - - - {[0, 1].map((index) => ( - - - - - - - - ))} - -
-
-
-
+ // Determine which detail component to use + const shouldUseRankMathDetail = (plugin) => { + return plugin && plugin.slug === 'seo-by-rank-math'; + }; + // Show loading state + if (catalogLoading) { + return ( +
+
+
+ +
+
+
+
+
+
+
+
+ {[0, 1, 2].map((index) => ( +
+
+
+
+
+
+
+
+
+
+
+
- ); - } + ))} +
- // Show error state - if (catalogError) { - return ( - - ); - } - // Show WP version error state - if (!isWpVersionSupported('6.2')) { - return ( - +
+ + + + + + + + + + + + {[0, 1].map((index) => ( + + + + + + + + ))} + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
); } + // Show error state + if (catalogError) { + return ; + } + // Show WP version error state + if (!isWpVersionSupported('6.2')) { + return ; + } - // Filter plugins for the table: installed OR special plugins with subscription - const installedPlugins = plugins.filter(p => p.installed || shouldShowProvision(p)); - - return ( -
-
-

{uiI18n?.headings?.myProducts}

-

{uiI18n?.text?.myProducts}

+ // Filter plugins for the table: installed OR special plugins with subscription + const installedPlugins = plugins.filter((p) => p.installed || shouldShowProvision(p)); + + return ( +
+
+

{uiI18n?.headings?.myProducts}

+

{uiI18n?.text?.myProducts}

+
+ {featuredPlugins.length > 0 && ( +
+
+
+

+ {uiI18n?.headings?.recommendedProducts} +

+

{uiI18n?.text?.recommendedText}

+
+
- {featuredPlugins.length > 0 && ( -
-
-
-

{uiI18n?.headings?.recommendedProducts}

-

{uiI18n?.text?.recommendedText}

-
- - -
+
+ {featuredPlugins.map((plugin) => { + const isProvisionable = shouldShowProvision(plugin); + const freeLabel = + plugin.i18n.freeTrialPeriod && plugin.i18n.freeTrialPeriod.trim() !== '' + ? plugin.i18n.freeTrialPeriod + : uiI18n?.labels?.free || 'Free'; + const price = formatPluginPrice(plugin, freeLabel, uiI18n); + const fullPriceAmount = getFullPrice(plugin); + const rebatePriceAmount = getRebatePrice(plugin); + + return (
- {featuredPlugins.map((plugin) => { - const isProvisionable = shouldShowProvision(plugin); - const freeLabel = (plugin.i18n.freeTrialPeriod && plugin.i18n.freeTrialPeriod.trim() !== '') - ? plugin.i18n.freeTrialPeriod - : (uiI18n?.labels?.free || 'Free'); - const price = formatPluginPrice(plugin, freeLabel, uiI18n); - const fullPriceAmount = getFullPrice(plugin); - const rebatePriceAmount = getRebatePrice(plugin); - - return ( -
-
- {plugin.name} -
-
-

{plugin.name}

-

- {plugin.i18n.listingDescription || plugin.i18n.subtitle} -

- - <> - {plugin.licenseType === "premium" && (rebatePriceAmount > 0) - ? (rebatePriceAmount !== null ? rebatePriceAmount : fullPriceAmount) - : price} - {plugin.licenseType !== "free" && - price && - price !== freeLabel && - price !== (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal') && - /{uiI18n?.labels?.timeMonth}} - - -
-
- - {`View - -
-
- ); - })} + key={plugin.slug} + className="gv-card gv-gap-md gv-content-container gv-p-lg gv-grid gv-grid-cols-12 gv-radius" + > +
+ {plugin.name}
-
- )} - - {installedPlugins.length > 0 && ( -
-
- - - - - - - - - - - - - {installedPlugins.map((plugin, index) => { - const isProvisionable = shouldShowProvision(plugin); - - const handleProvisionClick = (e) => { - e.preventDefault(); - - // Dispatch custom event for provisioning - const event = new CustomEvent("onecom-plugin-provision", { - detail: { - slug: plugin.slug, - }, - bubbles: true, - cancelable: true, - composed: true - }); - document.dispatchEvent(event); - }; - - return ( - - - - - - + + ); + })} + +
{uiI18n?.labels?.name}{uiI18n?.labels?.type}{uiI18n?.labels?.status}
- {plugin.name} - {plugin.name}{plugin.licenseType === 'free' ? uiI18n?.labels?.freePlugin : uiI18n?.labels?.premiumPlugin} -
- - {plugin.activated ? (uiI18n?.labels?.active || 'Active') : (isProvisionable ? (uiI18n?.labels?.notInstalled || 'Not Installed') : (uiI18n?.labels?.notActive || 'Not Active'))} -
-
- {isProvisionable ? ( - - {uiI18n?.installAndActivate || 'Install and activate'} - - ) : !plugin.activated && ( - +

{plugin.name}

+

+ {plugin.i18n.listingDescription || plugin.i18n.subtitle} +

+ + <> + {plugin.licenseType === 'premium' && rebatePriceAmount > 0 + ? rebatePriceAmount !== null + ? rebatePriceAmount + : fullPriceAmount + : price} + {plugin.licenseType !== 'free' && + price && + price !== freeLabel && + price !== (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal') && ( + /{uiI18n?.labels?.timeMonth} + )} + + + +
+ + ); + })} + + + )} + + {installedPlugins.length > 0 && ( +
+
+ + + + + + + + + + + + + {installedPlugins.map((plugin, index) => { + const isProvisionable = shouldShowProvision(plugin); + + const handleProvisionClick = (e) => { + e.preventDefault(); + + // Dispatch custom event for provisioning + const event = new CustomEvent('onecom-plugin-provision', { + detail: { + slug: plugin.slug, + }, + bubbles: true, + cancelable: true, + composed: true, + }); + document.dispatchEvent(event); + }; + + return ( + + + + + + - + - - ); - })} - -
{uiI18n?.labels?.name}{uiI18n?.labels?.type}{uiI18n?.labels?.status}
+ {plugin.name} + {plugin.name} + {plugin.licenseType === 'free' + ? uiI18n?.labels?.freePlugin + : uiI18n?.labels?.premiumPlugin} + +
+ + + {' '} + {plugin.activated + ? uiI18n?.labels?.active || 'Active' + : isProvisionable + ? uiI18n?.labels?.notInstalled || 'Not Installed' + : uiI18n?.labels?.notActive || 'Not Active'} + +
+
+ {isProvisionable ? ( + + ) : ( + !plugin.activated && ( + - {(plugin.activated || (plugin.installed && !isProvisionable)) && ( -
- -
- -
- -
    - {plugin.activated && ( + + ) + )} +
+ {(plugin.activated || (plugin.installed && !isProvisionable)) && ( +
+ +
+
+ + -
+ +
- )} -
-
-
- )} - - - - - {/* Render detail overlay when plugin is selected */} - {selectedPlugin && !pluginFromQuery && (() => { - const DetailComponent = shouldUseRankMathDetail(selectedPlugin) ? ProductDetailRankMath : ProductDetail; - return ( - setSelectedPlugin(null)} - loading={catalogLoading} - /> - ); - })()} - - ); + + )} +
+
+
+ )} + + + + + {/* Render detail overlay when plugin is selected */} + {selectedPlugin && + !pluginFromQuery && + (() => { + const DetailComponent = shouldUseRankMathDetail(selectedPlugin) + ? ProductDetailRankMath + : ProductDetail; + return ( + setSelectedPlugin(null)} + loading={catalogLoading} + /> + ); + })()} +
+ ); } diff --git a/frontend/src/components/ErrorState.jsx b/frontend/src/components/ErrorState.jsx index 1da04bb..e6fc129 100644 --- a/frontend/src/components/ErrorState.jsx +++ b/frontend/src/components/ErrorState.jsx @@ -1,31 +1,34 @@ -import React from "react"; -import { useMarketplace } from "../context/MarketplaceContext"; -import { useTranslation } from "react-i18next"; +import React from 'react'; +import { useMarketplace } from '../context/MarketplaceContext'; +import { useTranslation } from 'react-i18next'; export default function ErrorState() { - const { assetsBaseUrl } = useMarketplace(); - const { t } = useTranslation(); + const { assetsBaseUrl } = useMarketplace(); + const { t } = useTranslation(); - const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== "undefined" && window.marketplaceConfig?.assetsBaseUrl) || ""; - const iconBase = assetBase ? `${assetBase}assets/icons/` : ""; + const assetBase = + assetsBaseUrl || + (typeof window.marketplaceConfig !== 'undefined' && window.marketplaceConfig?.assetsBaseUrl) || + ''; + const iconBase = assetBase ? `${assetBase}assets/icons/` : ''; - const handleRefresh = () => { - window.location.reload(); - }; + const handleRefresh = () => { + window.location.reload(); + }; - return ( -
-
-
{t('ui.notifications.couldNotLoad')}
-

{t('ui.notifications.refreshPage')}

- -
-
- ); + return ( +
+
+
{t('ui.notifications.couldNotLoad')}
+

{t('ui.notifications.refreshPage')}

+ +
+
+ ); } diff --git a/frontend/src/components/ErrorToast.jsx b/frontend/src/components/ErrorToast.jsx index 4cba03b..a8409df 100644 --- a/frontend/src/components/ErrorToast.jsx +++ b/frontend/src/components/ErrorToast.jsx @@ -1,70 +1,79 @@ -import React, { useEffect } from "react"; -import { useMarketplace } from "../context/MarketplaceContext"; +import React, { useEffect } from 'react'; +import { useMarketplace } from '../context/MarketplaceContext'; export default function ErrorToast({ plugin: propPlugin }) { - const { - assetsBaseUrl, - errorState, - setErrorState, - uiI18n, - plugins - } = useMarketplace(); + const { assetsBaseUrl, errorState, setErrorState, uiI18n, plugins } = useMarketplace(); - const plugin = propPlugin || plugins.find(p => p.slug === errorState.pluginSlug); - const isVisible = errorState && errorState.visible && errorState.pluginSlug === plugin?.slug; + const plugin = propPlugin || plugins.find((p) => p.slug === errorState.pluginSlug); + const isVisible = errorState && errorState.visible && errorState.pluginSlug === plugin?.slug; - useEffect(() => { - if (isVisible) { - const timer = setTimeout(() => { - handleClose(); - }, 5000); + const handleClose = React.useCallback(() => { + setErrorState({ visible: false, type: null, pluginSlug: null }); + }, [setErrorState]); - return () => clearTimeout(timer); - } - }, [isVisible]); + useEffect(() => { + if (isVisible) { + const timer = setTimeout(() => { + handleClose(); + }, 5000); - if (!isVisible) { - return null; + return () => clearTimeout(timer); } + }, [isVisible, handleClose]); - const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== "undefined" && window.marketplaceConfig?.assetsBaseUrl) || ""; - const iconBase = assetBase ? `${assetBase}assets/` : ""; + const isActivateError = errorState.type === 'activate'; + const isDeactivateError = errorState.type === 'deactivate'; + const isInstallError = errorState.type === 'install'; + const isDeleteError = errorState.type === 'delete'; - const handleClose = () => { - setErrorState({ visible: false, type: null, pluginSlug: null }); - }; + // Helper function to replace {0} with plugin name + const formatMessage = (message, pluginName) => { + if (!message) return ''; + return message.replace('{0}', pluginName || ''); + }; - const isActivateError = errorState.type === 'activate'; - const isDeactivateError = errorState.type === 'deactivate'; - const isInstallError = errorState.type === 'install'; - const isDeleteError = errorState.type === 'delete'; + const pluginName = plugin?.name || ''; - // Helper function to replace {0} with plugin name - const formatMessage = (message, pluginName) => { - if (!message) return ''; - return message.replace('{0}', pluginName || ''); - }; + const assetBase = + assetsBaseUrl || + (typeof window.marketplaceConfig !== 'undefined' && window.marketplaceConfig?.assetsBaseUrl) || + ''; + const iconBase = assetBase ? `${assetBase}assets/` : ''; - const pluginName = plugin?.name || ''; - - return ( -
-
- -
- {isActivateError && formatMessage(uiI18n?.notifications?.pluginActivationFailed || "Couldn't activate plugin.", pluginName)} - {isDeactivateError && formatMessage(uiI18n?.notifications?.pluginDeactivationFailed || "Couldn't deactivate plugin.", pluginName)} - {isInstallError && formatMessage(uiI18n?.notifications?.pluginInstallationFailed || "Couldn't install plugin.", pluginName)} - {isDeleteError && formatMessage(uiI18n?.notifications?.pluginDeletionFailed || "Couldn't delete plugin.", pluginName)} -
- -
+ return ( +
+
+ +
+ {isActivateError && + formatMessage( + uiI18n?.notifications?.pluginActivationFailed || "Couldn't activate plugin.", + pluginName + )} + {isDeactivateError && + formatMessage( + uiI18n?.notifications?.pluginDeactivationFailed || "Couldn't deactivate plugin.", + pluginName + )} + {isInstallError && + formatMessage( + uiI18n?.notifications?.pluginInstallationFailed || "Couldn't install plugin.", + pluginName + )} + {isDeleteError && + formatMessage( + uiI18n?.notifications?.pluginDeletionFailed || "Couldn't delete plugin.", + pluginName + )}
- ); - } + +
+
+ ); +} diff --git a/frontend/src/components/FeaturedCarousel.jsx b/frontend/src/components/FeaturedCarousel.jsx index 8274b7a..8cd7919 100644 --- a/frontend/src/components/FeaturedCarousel.jsx +++ b/frontend/src/components/FeaturedCarousel.jsx @@ -1,383 +1,436 @@ -import React, { useState, useEffect } from "react"; -import { useMarketplace } from "../context/MarketplaceContext"; -import { formatPluginPrice } from "../utils/priceFormatter"; +import React, { useState, useEffect } from 'react'; +import { useMarketplace } from '../context/MarketplaceContext'; +import { formatPluginPrice } from '../utils/priceFormatter'; export default function FeaturedCarousel({ loading = false }) { - const { plugins, assetsBaseUrl,uiI18n } = useMarketplace(); - const [currentIndex, setCurrentIndex] = useState(0); - const [slidesPerView, setSlidesPerView] = useState(2); - - // Get active plugin slugs from WordPress config - const activePlugins = typeof window !== "undefined" && window.marketplaceConfig?.activePlugins - ? window.marketplaceConfig.activePlugins - : []; - - // Get active theme author from WordPress config - const activeThemeAuthor = typeof window !== "undefined" && window.marketplaceConfig?.activeThemeAuthor - ? window.marketplaceConfig.activeThemeAuthor - : ""; - - useEffect(() => { - const updateSlidesPerView = () => { - if (window.innerWidth > 1024) { - setSlidesPerView(2); // Desktop: show 2 slides - } else if (window.innerWidth >= 600) { - setSlidesPerView(1); // Tablet: show 2 slides - } else { - setSlidesPerView(1); // Mobile: show 1 slide - } - }; - - updateSlidesPerView(); - window.addEventListener('resize', updateSlidesPerView); - return () => window.removeEventListener('resize', updateSlidesPerView); - }, []); - - // Helper function to check if a plugin should be visible based on its rules - const shouldShowPlugin = (plugin) => { - // If plugin has no rules, show it by default - if (!plugin.rules) { - return true; - } - - // Check mustHavePlugins rule - if (plugin.rules.mustHavePlugins && Array.isArray(plugin.rules.mustHavePlugins)) { - // If the array is empty, no requirements exist, so show the plugin - if (plugin.rules.mustHavePlugins.length === 0) { - return true; - } - - // Plugin should be visible if ANY of the required plugins is active - const hasRequiredPlugin = plugin.rules.mustHavePlugins.some(requiredSlug => - activePlugins.includes(requiredSlug) - ); - - // If mustHavePlugins rule exists but no required plugin is active, hide the plugin - if (!hasRequiredPlugin) { - return false; - } - } - - // Check mustHaveThemesByAuthor rule - if (plugin.rules.mustHaveThemesByAuthor && typeof plugin.rules.mustHaveThemesByAuthor === 'string') { - // Plugin should be visible only if the active theme author matches the required author - const requiredAuthor = plugin.rules.mustHaveThemesByAuthor; - if (activeThemeAuthor !== requiredAuthor) { - return false; - } - } - - // Add support for other rule types here in the future - // For now, if all rules pass (or don't exist), show the plugin - return true; + const { plugins, assetsBaseUrl, uiI18n } = useMarketplace(); + const [currentIndex, setCurrentIndex] = useState(0); + const [slidesPerView, setSlidesPerView] = useState(2); + + // Get active plugin slugs from WordPress config + const activePlugins = + typeof window !== 'undefined' && window.marketplaceConfig?.activePlugins + ? window.marketplaceConfig.activePlugins + : []; + + // Get active theme author from WordPress config + const activeThemeAuthor = + typeof window !== 'undefined' && window.marketplaceConfig?.activeThemeAuthor + ? window.marketplaceConfig.activeThemeAuthor + : ''; + + useEffect(() => { + const updateSlidesPerView = () => { + if (window.innerWidth > 1024) { + setSlidesPerView(2); // Desktop: show 2 slides + } else if (window.innerWidth >= 600) { + setSlidesPerView(1); // Tablet: show 2 slides + } else { + setSlidesPerView(1); // Mobile: show 1 slide + } }; - // Check activation status of Rank Math plugins - const rankMathActivated = plugins.find(p => p.slug === "seo-by-rank-math")?.activated === true; - const rankMathProActivated = plugins.find(p => p.slug === "seo-by-rank-math-pro")?.activated === true; - - // Filter featured plugins that are not active, pass rules check, and handle Rank Math logic - const featuredPlugins = plugins.filter(plugin => { - // Skip activated plugins - if (plugin.activated === true || plugin.featured !== true) { - return false; - } - - // Handle Rank Math plugin visibility - if (plugin.slug === "seo-by-rank-math") { - // Show seo-by-rank-math only if BOTH plugins are NOT activated - return !rankMathActivated && !rankMathProActivated && shouldShowPlugin(plugin); - } - - if (plugin.slug === "seo-by-rank-math-pro") { - // Show seo-by-rank-math-pro only if seo-by-rank-math IS activated - return rankMathActivated && shouldShowPlugin(plugin); - } - - // For all other plugins, apply normal filtering - return shouldShowPlugin(plugin); - }).sort((a, b) => { - const orderA = a.displayOrder !== undefined ? parseInt(a.displayOrder) : Infinity; - const orderB = b.displayOrder !== undefined ? parseInt(b.displayOrder) : Infinity; - return orderA - orderB; - }); - - const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== "undefined" && window.marketplaceConfig?.assetsBaseUrl) || ""; - const iconBase = assetBase ? `${assetBase}assets/icons/` : ""; + updateSlidesPerView(); + window.addEventListener('resize', updateSlidesPerView); + return () => window.removeEventListener('resize', updateSlidesPerView); + }, []); - const totalSlides = featuredPlugins.length; - const maxIndex = Math.max(0, totalSlides - slidesPerView); - - const goToPrevious = () => { - if (currentIndex > 0) { - setCurrentIndex(prev => prev - 1); - } - }; + // Helper function to check if a plugin should be visible based on its rules + const shouldShowPlugin = (plugin) => { + // If plugin has no rules, show it by default + if (!plugin.rules) { + return true; + } - const goToNext = () => { - if (currentIndex < maxIndex) { - setCurrentIndex(prev => prev + 1); - } - }; + // Check mustHavePlugins rule + if (plugin.rules.mustHavePlugins && Array.isArray(plugin.rules.mustHavePlugins)) { + // If the array is empty, no requirements exist, so show the plugin + if (plugin.rules.mustHavePlugins.length === 0) { + return true; + } - // Show skeleton loaders while loading - if (loading) { - return ( -
-
-
-
+ // Plugin should be visible if ANY of the required plugins is active + const hasRequiredPlugin = plugin.rules.mustHavePlugins.some((requiredSlug) => + activePlugins.includes(requiredSlug) + ); -
-
- {/* Generate 2 skeleton carousel slides */} - {[...Array(slidesPerView)].map((_, index) => ( -
-
-
- {/* Badge skeleton */} -
- - {/* Title skeleton */} -
- - {/* Description skeletons */} -
-
-
- - {/* Footer with button and price skeletons */} -
-
-
-
-
-
-
-
-
-
-
-
- ))} -
-
-
- ); + // If mustHavePlugins rule exists but no required plugin is active, hide the plugin + if (!hasRequiredPlugin) { + return false; + } } - // If no featured plugins, don't render anything - if (!featuredPlugins || featuredPlugins.length === 0) { - return null; + // Check mustHaveThemesByAuthor rule + if ( + plugin.rules.mustHaveThemesByAuthor && + typeof plugin.rules.mustHaveThemesByAuthor === 'string' + ) { + // Plugin should be visible only if the active theme author matches the required author + const requiredAuthor = plugin.rules.mustHaveThemesByAuthor; + if (activeThemeAuthor !== requiredAuthor) { + return false; + } } - const goToSlide = (index) => { - setCurrentIndex(Math.min(index, maxIndex)); - }; + // Add support for other rule types here in the future + // For now, if all rules pass (or don't exist), show the plugin + return true; + }; + + // Check activation status of Rank Math plugins + const rankMathActivated = plugins.find((p) => p.slug === 'seo-by-rank-math')?.activated === true; + const rankMathProActivated = + plugins.find((p) => p.slug === 'seo-by-rank-math-pro')?.activated === true; + + // Filter featured plugins that are not active, pass rules check, and handle Rank Math logic + const featuredPlugins = plugins + .filter((plugin) => { + // Skip activated plugins + if (plugin.activated === true || plugin.featured !== true) { + return false; + } + + // Handle Rank Math plugin visibility + if (plugin.slug === 'seo-by-rank-math') { + // Show seo-by-rank-math only if BOTH plugins are NOT activated + return !rankMathActivated && !rankMathProActivated && shouldShowPlugin(plugin); + } + + if (plugin.slug === 'seo-by-rank-math-pro') { + // Show seo-by-rank-math-pro only if seo-by-rank-math IS activated + return rankMathActivated && shouldShowPlugin(plugin); + } + + // For all other plugins, apply normal filtering + return shouldShowPlugin(plugin); + }) + .sort((a, b) => { + const orderA = a.displayOrder !== undefined ? parseInt(a.displayOrder) : Infinity; + const orderB = b.displayOrder !== undefined ? parseInt(b.displayOrder) : Infinity; + return orderA - orderB; + }); - // Navigate to plugin detail page - const handleReadMore = (plugin) => { - if (typeof window !== "undefined") { - const url = new URL(window.location.href); - url.searchParams.set("plugin", plugin.slug); - window.history.pushState({}, "", url.toString()); + const assetBase = + assetsBaseUrl || + (typeof window.marketplaceConfig !== 'undefined' && window.marketplaceConfig?.assetsBaseUrl) || + ''; + const iconBase = assetBase ? `${assetBase}assets/icons/` : ''; - // Dispatch custom event to notify app of navigation - window.dispatchEvent(new PopStateEvent('popstate')); - } - }; + const totalSlides = featuredPlugins.length; + const maxIndex = Math.max(0, totalSlides - slidesPerView); + + const goToPrevious = () => { + if (currentIndex > 0) { + setCurrentIndex((prev) => prev - 1); + } + }; + const goToNext = () => { + if (currentIndex < maxIndex) { + setCurrentIndex((prev) => prev + 1); + } + }; + + // Show skeleton loaders while loading + if (loading) { return ( -
-
-
{uiI18n?.headings?.recommendedHeading}
-
- -
-
- {featuredPlugins.map((plugin, index) => { - const title = plugin?.i18n?.featuredTitle; - const description = plugin?.i18n?.featuredContent; - const freeLabel = (plugin.i18n.freeTrialPeriod && plugin.i18n.freeTrialPeriod.trim() !== '') - ? plugin.i18n.freeTrialPeriod - : (uiI18n?.labels?.free || 'Free'); - const price = formatPluginPrice(plugin, freeLabel, uiI18n); - const mainImage = plugin.bannerUrl || plugin.image || plugin.thumbnail || 'https://gravity.group.one/guide-images/product-image@2x.png'; - - // Extract category name from plugin categories array - const categoryObj = Array.isArray(plugin.categories) && plugin.categories.length - ? (typeof plugin.categories[0] === 'object' ? plugin.categories[0] : { slug: String(plugin.categories[0]), title: String(plugin.categories[0]), description: null }) - : { slug: "Others", title: "Others", description: null }; - const categoryName = categoryObj.title || categoryObj.slug || "Others"; - - return ( -
-
-
-
{plugin?.name}
-
- {title} -
-

- {description} -

- -
- - - - {price} - {plugin.licenseType !== "free" && price && price !== freeLabel && price !== (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal') && /{uiI18n?.labels?.timeMonth}} - -
-
-
- - - {`${title} - -
-
-
- ); - })} -
-
- - {/* Navigation Controls: Arrows + Dots */} - {totalSlides > slidesPerView && ( -
+
+
+
+ +
+
+ {/* Generate 2 skeleton carousel slides */} + {[...Array(slidesPerView)].map((_, index) => ( +
+
- +
+ {/* Badge skeleton */} +
+ {/* Title skeleton */} +
+ + {/* Description skeletons */} +
+
+
+ + {/* Footer with button and price skeletons */}
- {Array.from({ length: maxIndex + 1 }).map((_, index) => ( -
- -
+
+
- Next - -
- )} -
+
+
+
+ +
+ ))} +
+ + ); + } + + // If no featured plugins, don't render anything + if (!featuredPlugins || featuredPlugins.length === 0) { + return null; + } + + const goToSlide = (index) => { + setCurrentIndex(Math.min(index, maxIndex)); + }; + + // Navigate to plugin detail page + const handleReadMore = (plugin) => { + if (typeof window !== 'undefined') { + const url = new URL(window.location.href); + url.searchParams.set('plugin', plugin.slug); + window.history.pushState({}, '', url.toString()); + + // Dispatch custom event to notify app of navigation + window.dispatchEvent(new PopStateEvent('popstate')); + } + }; + + return ( +
+
+
+ {uiI18n?.headings?.recommendedHeading} +
+
+ +
+
+ {featuredPlugins.map((plugin, index) => { + const title = plugin?.i18n?.featuredTitle; + const description = plugin?.i18n?.featuredContent; + const freeLabel = + plugin.i18n.freeTrialPeriod && plugin.i18n.freeTrialPeriod.trim() !== '' + ? plugin.i18n.freeTrialPeriod + : uiI18n?.labels?.free || 'Free'; + const price = formatPluginPrice(plugin, freeLabel, uiI18n); + const mainImage = + plugin.bannerUrl || + plugin.image || + plugin.thumbnail || + 'https://gravity.group.one/guide-images/product-image@2x.png'; + + // Extract category name from plugin categories array + const categoryObj = + Array.isArray(plugin.categories) && plugin.categories.length + ? typeof plugin.categories[0] === 'object' + ? plugin.categories[0] + : { + slug: String(plugin.categories[0]), + title: String(plugin.categories[0]), + description: null, + } + : { slug: 'Others', title: 'Others', description: null }; + const categoryName = categoryObj.title || categoryObj.slug || 'Others'; + + return ( +
+
+
+
{plugin?.name}
+
+ {title} +
+

+ {description} +

+ +
+ + + + {price} + {plugin.licenseType !== 'free' && + price && + price !== freeLabel && + price !== (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal') && ( + /{uiI18n?.labels?.timeMonth} + )} + +
+
+
+ + + {title} + +
+
+
+ ); + })} +
+
+ + {/* Navigation Controls: Arrows + Dots */} + {totalSlides > slidesPerView && ( +
+ + +
+ {Array.from({ length: maxIndex + 1 }).map((_, index) => ( +
+ + +
+ )} +
+ ); } diff --git a/frontend/src/components/LoadingOverlay.jsx b/frontend/src/components/LoadingOverlay.jsx index a87d7f7..9f10427 100644 --- a/frontend/src/components/LoadingOverlay.jsx +++ b/frontend/src/components/LoadingOverlay.jsx @@ -1,23 +1,26 @@ -import React from "react"; -import { useMarketplace } from "../context/MarketplaceContext"; +import React from 'react'; +import { useMarketplace } from '../context/MarketplaceContext'; export default function LoadingOverlay() { - const { loadingAction, loadingPlugin, assetsBaseUrl } = useMarketplace(); + const { loadingAction, loadingPlugin, assetsBaseUrl } = useMarketplace(); - // Don't show overlay if no action is in progress - if (!loadingAction) { - return null; - } + // Don't show overlay if no action is in progress + if (!loadingAction) { + return null; + } - const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== "undefined" && window.marketplaceConfig?.assetsBaseUrl) || ""; - const spinnerSrc = `${assetBase}assets/images/spinner.svg`; + const assetBase = + assetsBaseUrl || + (typeof window.marketplaceConfig !== 'undefined' && window.marketplaceConfig?.assetsBaseUrl) || + ''; + const spinnerSrc = `${assetBase}assets/images/spinner.svg`; - return ( -
-
- -

{loadingAction}

-
-
- ); + return ( +
+
+ +

{loadingAction}

+
+
+ ); } diff --git a/frontend/src/components/MarketPlace.jsx b/frontend/src/components/MarketPlace.jsx index 2c71448..a2ca8af 100644 --- a/frontend/src/components/MarketPlace.jsx +++ b/frontend/src/components/MarketPlace.jsx @@ -1,537 +1,607 @@ -import React, { useState, useEffect, useRef } from "react"; -import {normalizePlugins} from "./normalised-plugins"; -import "@group.one/gravity"; -import { useTranslation } from "react-i18next"; -import ProductDetail from "./ProductDetail"; -import ProductDetailRankMath from "./ProductDetailRankMath"; -import ErrorState from "./ErrorState"; -import WpVersionErrorState from "./WpVersionErrorState"; -import { useMarketplace } from "../context/MarketplaceContext"; -import { formatPluginPrice, getRebatePrice,getFullPrice } from "../utils/priceFormatter"; -import { trackMarketplaceVisit, trackPluginDetailVisit, trackPageView } from "../utils/mixpanelTracking"; +import React, { useState, useEffect, useRef } from 'react'; +import { normalizePlugins } from './normalised-plugins'; +import '@dogado/gravity'; +import { useTranslation } from 'react-i18next'; +import ProductDetail from './ProductDetail'; +import ProductDetailRankMath from './ProductDetailRankMath'; +import ErrorState from './ErrorState'; +import WpVersionErrorState from './WpVersionErrorState'; +import { useMarketplace } from '../context/MarketplaceContext'; +import { formatPluginPrice, getRebatePrice, getFullPrice } from '../utils/priceFormatter'; +import { + trackMarketplaceVisit, + trackPluginDetailVisit, + trackPageView, +} from '../utils/mixpanelTracking'; export default function Marketplace() { - const { - apiBaseUrl, - useWPHandlers, - wpConfig, - enableDefaultStyles, - assetsBaseUrl, - pluginInAction, - setPluginInAction, - fetchSubscriptionStatus, - isOnecomBrand, - plugins, - setPlugins, - uiI18n, - setUiI18n, - handlePluginAction, - allPluginsActivated, - setAllPluginsActivated, - catalogError, - setCatalogError, - catalogLoading, - setCatalogLoading, - shouldShowProvision, - isSpecialPlugin, - shouldShowPlugin, - isWpVersionSupported - } = useMarketplace(); - - // Get active plugin slugs from WordPress config - const activePlugins = typeof window !== "undefined" && window.marketplaceConfig?.activePlugins - ? window.marketplaceConfig.activePlugins - : []; - - // Get active theme author from WordPress config - const activeThemeAuthor = typeof window !== "undefined" && window.marketplaceConfig?.activeThemeAuthor - ? window.marketplaceConfig.activeThemeAuthor - : ""; - - const [downloadingPlugins, setDownloadingPlugins] = useState({}); - const [selectedPlugin, setSelectedPlugin] = useState(null); - - // Use ref to track if plugins have already been fetched - const hasFetchedPlugins = useRef(false); - - // Use ref to track if marketplace visit has been tracked (prevent duplicates) - const hasTrackedMarketplaceVisit = useRef(false); - - // Use ref to track last tracked plugin detail to prevent duplicate tracking - const lastTrackedPluginSlug = useRef(null); - - // Use ref to store timestamps for tracking - const contentReceivedTimestamp = useRef(null); - const contentRenderTimestamp = useRef(null); - - // Use ref to store is_cached flag from API response - const isCachedRef = useRef(false); - - // Construct icon base URL with fallback logic - const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== "undefined" && window.marketplaceConfig?.assetsBaseUrl) || ""; - const iconBase = assetBase ? `${assetBase}assets/icons/` : ""; - - // Determine if a plugin slug is in the URL - const pluginFromQuery = typeof window !== "undefined" - ? new URLSearchParams(window.location.search).get("plugin") - : null; - - // Get base page URL (without plugin parameter) - const getBaseUrl = () => { - if (typeof window === "undefined") return ""; - const url = new URL(window.location.href); - url.searchParams.delete("plugin"); - return url.toString(); + const { + apiBaseUrl, + useWPHandlers, + wpConfig, + enableDefaultStyles, + assetsBaseUrl, + pluginInAction, + setPluginInAction, + fetchSubscriptionStatus, + isOnecomBrand, + plugins, + setPlugins, + uiI18n, + setUiI18n, + handlePluginAction, + allPluginsActivated, + setAllPluginsActivated, + catalogError, + setCatalogError, + catalogLoading, + setCatalogLoading, + shouldShowProvision, + isSpecialPlugin, + shouldShowPlugin, + isWpVersionSupported, + } = useMarketplace(); + + // Get active plugin slugs from WordPress config + const activePlugins = + typeof window !== 'undefined' && window.marketplaceConfig?.activePlugins + ? window.marketplaceConfig.activePlugins + : []; + + // Get active theme author from WordPress config + const activeThemeAuthor = + typeof window !== 'undefined' && window.marketplaceConfig?.activeThemeAuthor + ? window.marketplaceConfig.activeThemeAuthor + : ''; + + const [downloadingPlugins, setDownloadingPlugins] = useState({}); + const [selectedPlugin, setSelectedPlugin] = useState(null); + + // Use ref to track if plugins have already been fetched + const hasFetchedPlugins = useRef(false); + + // Use ref to track if marketplace visit has been tracked (prevent duplicates) + const hasTrackedMarketplaceVisit = useRef(false); + + // Use ref to track last tracked plugin detail to prevent duplicate tracking + const lastTrackedPluginSlug = useRef(null); + + // Use ref to store timestamps for tracking + const contentReceivedTimestamp = useRef(null); + const contentRenderTimestamp = useRef(null); + + // Use ref to store is_cached flag from API response + const isCachedRef = useRef(false); + + // Construct icon base URL with fallback logic + const assetBase = + assetsBaseUrl || + (typeof window.marketplaceConfig !== 'undefined' && window.marketplaceConfig?.assetsBaseUrl) || + ''; + const iconBase = assetBase ? `${assetBase}assets/icons/` : ''; + + // Determine if a plugin slug is in the URL + const pluginFromQuery = + typeof window !== 'undefined' + ? new URLSearchParams(window.location.search).get('plugin') + : null; + + // Get base page URL (without plugin parameter) + const getBaseUrl = () => { + if (typeof window === 'undefined') return ''; + const url = new URL(window.location.href); + url.searchParams.delete('plugin'); + return url.toString(); + }; + + // After plugins load, select plugin from query if present + useEffect(() => { + if (pluginFromQuery && plugins.length) { + const match = plugins.find((p) => p.slug === pluginFromQuery); + if (match) setSelectedPlugin(match); + } else if (!pluginFromQuery) { + // Clear selectedPlugin when no plugin parameter in URL + setSelectedPlugin(null); + } + }, [pluginFromQuery, plugins]); + + // Listen for browser back/forward navigation + useEffect(() => { + const handlePopState = () => { + const currentPluginParam = new URLSearchParams(window.location.search).get('plugin'); + if (!currentPluginParam) { + // URL no longer has plugin parameter, clear selection + setSelectedPlugin(null); + } else if (plugins.length) { + // URL has plugin parameter, update selection + const match = plugins.find((p) => p.slug === currentPluginParam); + if (match) setSelectedPlugin(match); + } }; + window.addEventListener('popstate', handlePopState); + return () => window.removeEventListener('popstate', handlePopState); + }, [plugins]); - // After plugins load, select plugin from query if present - useEffect(() => { - if (pluginFromQuery && plugins.length) { - const match = plugins.find(p => p.slug === pluginFromQuery); - if (match) setSelectedPlugin(match); - } else if (!pluginFromQuery) { - // Clear selectedPlugin when no plugin parameter in URL - setSelectedPlugin(null); - } - }, [pluginFromQuery, plugins]); - - // Listen for browser back/forward navigation - useEffect(() => { - const handlePopState = () => { - const currentPluginParam = new URLSearchParams(window.location.search).get("plugin"); - if (!currentPluginParam) { - // URL no longer has plugin parameter, clear selection - setSelectedPlugin(null); - } else if (plugins.length) { - // URL has plugin parameter, update selection - const match = plugins.find(p => p.slug === currentPluginParam); - if (match) setSelectedPlugin(match); - } - }; - - window.addEventListener('popstate', handlePopState); - return () => window.removeEventListener('popstate', handlePopState); - }, [plugins]); - - const {t} = useTranslation(); - - useEffect(() => { - // Only fetch once - if (hasFetchedPlugins.current) { - return; - } - - async function fetchPlugins() { - try { - hasFetchedPlugins.current = true; - const res = await fetch(`${apiBaseUrl}`); - const json = await res.json(); - - // Capture timestamp when API content is received - contentReceivedTimestamp.current = Date.now(); - - // Extract is_cached flag from API response - isCachedRef.current = json.is_cached || false; - - // Check for API error response (success: false) - if (json && json.success === false) { - // Track page view with content render failure - trackPageView({ - category: 'marketplace_home', - isContentRendered: false, - }); - setCatalogError(true); - setCatalogLoading(false); - return; - } - - // Check for blank/empty response - if (!json || !json.data || !json.data.catalog || (Array.isArray(json.data.catalog) && json.data.catalog.length === 0)) { - console.error("API returned empty or blank response"); - // Track page view with content render failure - trackPageView({ - category: 'marketplace_home', - isContentRendered: false, - }); - setCatalogError(true); - setCatalogLoading(false); - return; - } - - const { plugins: normalizedPlugins, uiI18n: apiUiI18n } = normalizePlugins(json); - setPlugins(normalizedPlugins); - setUiI18n(apiUiI18n); - - // Fetch subscription status for special plugins (wp-rocket, rank-math-pro) - if (isOnecomBrand) { - const specialPlugins = normalizedPlugins.filter(p => isSpecialPlugin(p.slug)); - - // Fetch subscription status for each special plugin - specialPlugins.forEach(plugin => { - fetchSubscriptionStatus(plugin.slug); - }); - } - } catch (e) { - // Track page view with content render failure - trackPageView({ - category: 'marketplace_home', - isContentRendered: false, - }); - setCatalogError(true); - } finally { - setCatalogLoading(false); - } - } - - fetchPlugins(); - }, [apiBaseUrl, isOnecomBrand, fetchSubscriptionStatus, setPlugins]); - - // Use useMemo to filter plugins based on rules and activation status - const visiblePlugins = React.useMemo(() => { - if (!plugins.length) return []; - - const bySlug = new Map(); - - // Check activation status of Rank Math plugins - const rankMathActivated = plugins.find(p => p.slug === "seo-by-rank-math")?.activated === true; - const rankMathProActivated = plugins.find(p => p.slug === "seo-by-rank-math-pro")?.activated === true; - - plugins.forEach((p) => { - // Skip if already in map or activated - if (bySlug.has(p.slug) || p.activated === true) { - return; - } - - // Handle Rank Math plugin visibility - if (p.slug === "seo-by-rank-math") { - // Show seo-by-rank-math only if BOTH plugins are NOT activated - if (!rankMathActivated && !rankMathProActivated && shouldShowPlugin(p)) { - bySlug.set(p.slug, p); - } - return; - } - - if (p.slug === "seo-by-rank-math-pro") { - // Show seo-by-rank-math-pro only if seo-by-rank-math IS activated - if (rankMathActivated && shouldShowPlugin(p)) { - bySlug.set(p.slug, p); - } - return; - } - - // Apply filtering based on rules - if (shouldShowPlugin(p)) { - bySlug.set(p.slug, p); - } - }); + const { t } = useTranslation(); - return Array.from(bySlug.values()); - }, [plugins, shouldShowPlugin]); + useEffect(() => { + // Only fetch once + if (hasFetchedPlugins.current) { + return; + } - // Update allPluginsActivated in context whenever plugins change - useEffect(() => { - if (plugins.length > 0) { - // If there are no plugins that should be visible (not activated and passing rules), then all are activated/hidden - const allActivated = visiblePlugins.length === 0; - setAllPluginsActivated(allActivated); - } - }, [plugins, visiblePlugins, setAllPluginsActivated]); - - // Track marketplace visit when plugins are loaded and no plugin detail is shown - useEffect(() => { - if (!catalogLoading && !catalogError && plugins.length > 0 && !pluginFromQuery && !hasTrackedMarketplaceVisit.current) { - // Capture timestamp when content is rendered to the page - contentRenderTimestamp.current = Date.now(); - - // Check if this is a reload caused by plugin activation - const skipPageView = sessionStorage.getItem('mp_skip_page_view'); - if (skipPageView === 'true') { - // Clear the flag and skip tracking - sessionStorage.removeItem('mp_skip_page_view'); - } else { - // Normal page load, track the visit - trackMarketplaceVisit(contentReceivedTimestamp.current, contentRenderTimestamp.current, isCachedRef.current); - } - hasTrackedMarketplaceVisit.current = true; - } - }, [catalogLoading, catalogError, plugins.length, pluginFromQuery]); - - // Track plugin detail page visit when selectedPlugin changes - useEffect(() => { - if (selectedPlugin && pluginFromQuery && lastTrackedPluginSlug.current !== selectedPlugin.slug) { - // Capture timestamp when content is rendered to the page - contentRenderTimestamp.current = Date.now(); - - // Check if this is a reload caused by plugin activation - const skipPageView = sessionStorage.getItem('mp_skip_page_view'); - if (skipPageView === 'true') { - // Clear the flag and skip tracking - sessionStorage.removeItem('mp_skip_page_view'); - } else { - // Normal page load, track the visit - trackPluginDetailVisit(selectedPlugin, contentReceivedTimestamp.current, contentRenderTimestamp.current, isCachedRef.current); - } - lastTrackedPluginSlug.current = selectedPlugin.slug; + async function fetchPlugins() { + try { + hasFetchedPlugins.current = true; + const res = await fetch(`${apiBaseUrl}`); + const json = await res.json(); + + // Capture timestamp when API content is received + contentReceivedTimestamp.current = Date.now(); + + // Extract is_cached flag from API response + isCachedRef.current = json.is_cached || false; + + // Check for API error response (success: false) + if (json && json.success === false) { + // Track page view with content render failure + trackPageView({ + category: 'marketplace_home', + isContentRendered: false, + }); + setCatalogError(true); + setCatalogLoading(false); + return; } - // Reset when returning to marketplace list - if (!pluginFromQuery) { - lastTrackedPluginSlug.current = null; - } - }, [selectedPlugin, pluginFromQuery]); - - const handleDownloadClick = (e, plugin) => { - e.stopPropagation(); - - // Set downloading state - setDownloadingPlugins(prev => ({ ...prev, [plugin.slug]: true })); - - // Reset after a short delay (download is triggered immediately) - // The browser handles the actual download, so we simulate completion - setTimeout(() => { - setDownloadingPlugins(prev => ({ ...prev, [plugin.slug]: false })); - }, 2000); - }; - - const openDetail = (plugin, e) => { - // Debug to confirm click - setSelectedPlugin(plugin); - }; + // Check for blank/empty response + if ( + !json || + !json.data || + !json.data.catalog || + (Array.isArray(json.data.catalog) && json.data.catalog.length === 0) + ) { + console.error('API returned empty or blank response'); + // Track page view with content render failure + trackPageView({ + category: 'marketplace_home', + isContentRendered: false, + }); + setCatalogError(true); + setCatalogLoading(false); + return; + } + const { plugins: normalizedPlugins, uiI18n: apiUiI18n } = normalizePlugins(json); + setPlugins(normalizedPlugins); + setUiI18n(apiUiI18n); - // Helper function to determine if we should use ProductDetailRankMath - const shouldUseRankMathDetail = (plugin) => { - if (!plugin) return false; - const brand = typeof window !== "undefined" && window.marketplaceConfig?.brand; - const isOnecomBrand = brand === "onecom"; - const isRankMathPlugin = plugin.slug === "seo-by-rank-math-pro" || plugin.slug === "seo-by-rank-math"; - return isOnecomBrand && isRankMathPlugin; - }; + // Fetch subscription status for special plugins (wp-rocket, rank-math-pro) + if (isOnecomBrand) { + const specialPlugins = normalizedPlugins.filter((p) => isSpecialPlugin(p.slug)); + // Fetch subscription status for each special plugin + specialPlugins.forEach((plugin) => { + fetchSubscriptionStatus(plugin.slug); + }); + } + } catch (e) { + // Track page view with content render failure + trackPageView({ + category: 'marketplace_home', + isContentRendered: false, + }); + setCatalogError(true); + } finally { + setCatalogLoading(false); + } + } + fetchPlugins(); + }, [ + apiBaseUrl, + isOnecomBrand, + fetchSubscriptionStatus, + setPlugins, + isSpecialPlugin, + setCatalogError, + setCatalogLoading, + setUiI18n, + ]); + + // Use useMemo to filter plugins based on rules and activation status + const visiblePlugins = React.useMemo(() => { + if (!plugins.length) return []; + + const bySlug = new Map(); + + // Check activation status of Rank Math plugins + const rankMathActivated = + plugins.find((p) => p.slug === 'seo-by-rank-math')?.activated === true; + const rankMathProActivated = + plugins.find((p) => p.slug === 'seo-by-rank-math-pro')?.activated === true; + + plugins.forEach((p) => { + // Skip if already in map or activated + if (bySlug.has(p.slug) || p.activated === true) { + return; + } + + // Handle Rank Math plugin visibility + if (p.slug === 'seo-by-rank-math') { + // Show seo-by-rank-math only if BOTH plugins are NOT activated + if (!rankMathActivated && !rankMathProActivated && shouldShowPlugin(p)) { + bySlug.set(p.slug, p); + } + return; + } - if (catalogLoading) { - // If there's a plugin parameter in the URL, show appropriate skeleton based on plugin type - if (pluginFromQuery) { - // Determine if we should use RankMath detail component based on slug - const brand = typeof window !== "undefined" && window.marketplaceConfig?.brand; - const isOnecomBrand = brand === "onecom"; - const isRankMathPlugin = pluginFromQuery === "seo-by-rank-math-pro" || pluginFromQuery === "seo-by-rank-math"; - const DetailComponent = (isOnecomBrand && isRankMathPlugin) ? ProductDetailRankMath : ProductDetail; - return ( - {}} - usePortal={false} - loading={true} - /> - ); + if (p.slug === 'seo-by-rank-math-pro') { + // Show seo-by-rank-math-pro only if seo-by-rank-math IS activated + if (rankMathActivated && shouldShowPlugin(p)) { + bySlug.set(p.slug, p); } + return; + } - // Show catalog skeleton loaders while catalog is loading - return ( -
-
-
-
-
- {/* Generate first 3 skeleton plugin cards */} - {[...Array(3)].map((_, index) => ( -
-
-
-
-
-
-
-
-
-
-
-
-
- ))} -
+ // Apply filtering based on rules + if (shouldShowPlugin(p)) { + bySlug.set(p.slug, p); + } + }); - {/* Additional skeleton loaders after 3 cards */} -
-
-
- - - {/* Generate remaining 3 skeleton plugin cards */} - {[...Array(3)].map((_, index) => ( -
-
-
-
-
-
-
-
-
-
-
-
-
- ))} -
-
-
+ return Array.from(bySlug.values()); + }, [plugins, shouldShowPlugin]); + + // Update allPluginsActivated in context whenever plugins change + useEffect(() => { + if (plugins.length > 0) { + // If there are no plugins that should be visible (not activated and passing rules), then all are activated/hidden + const allActivated = visiblePlugins.length === 0; + setAllPluginsActivated(allActivated); + } + }, [plugins, visiblePlugins, setAllPluginsActivated]); + + // Track marketplace visit when plugins are loaded and no plugin detail is shown + useEffect(() => { + if ( + !catalogLoading && + !catalogError && + plugins.length > 0 && + !pluginFromQuery && + !hasTrackedMarketplaceVisit.current + ) { + // Capture timestamp when content is rendered to the page + contentRenderTimestamp.current = Date.now(); + + // Check if this is a reload caused by plugin activation + const skipPageView = sessionStorage.getItem('mp_skip_page_view'); + if (skipPageView === 'true') { + // Clear the flag and skip tracking + sessionStorage.removeItem('mp_skip_page_view'); + } else { + // Normal page load, track the visit + trackMarketplaceVisit( + contentReceivedTimestamp.current, + contentRenderTimestamp.current, + isCachedRef.current ); + } + hasTrackedMarketplaceVisit.current = true; } - - // Show error state if API failed or returned error - if (catalogError) { - return ; + }, [catalogLoading, catalogError, plugins.length, pluginFromQuery]); + + // Track plugin detail page visit when selectedPlugin changes + useEffect(() => { + if ( + selectedPlugin && + pluginFromQuery && + lastTrackedPluginSlug.current !== selectedPlugin.slug + ) { + // Capture timestamp when content is rendered to the page + contentRenderTimestamp.current = Date.now(); + + // Check if this is a reload caused by plugin activation + const skipPageView = sessionStorage.getItem('mp_skip_page_view'); + if (skipPageView === 'true') { + // Clear the flag and skip tracking + sessionStorage.removeItem('mp_skip_page_view'); + } else { + // Normal page load, track the visit + trackPluginDetailVisit( + selectedPlugin, + contentReceivedTimestamp.current, + contentRenderTimestamp.current, + isCachedRef.current + ); + } + lastTrackedPluginSlug.current = selectedPlugin.slug; + } + // Reset when returning to marketplace list + if (!pluginFromQuery) { + lastTrackedPluginSlug.current = null; + } + }, [selectedPlugin, pluginFromQuery]); + + const handleDownloadClick = (e, plugin) => { + e.stopPropagation(); + + // Set downloading state + setDownloadingPlugins((prev) => ({ ...prev, [plugin.slug]: true })); + + // Reset after a short delay (download is triggered immediately) + // The browser handles the actual download, so we simulate completion + setTimeout(() => { + setDownloadingPlugins((prev) => ({ ...prev, [plugin.slug]: false })); + }, 2000); + }; + + const openDetail = (plugin, e) => { + // Debug to confirm click + setSelectedPlugin(plugin); + }; + + // Helper function to determine if we should use ProductDetailRankMath + const shouldUseRankMathDetail = (plugin) => { + if (!plugin) return false; + const brand = typeof window !== 'undefined' && window.marketplaceConfig?.brand; + const isOnecomBrand = brand === 'onecom'; + const isRankMathPlugin = + plugin.slug === 'seo-by-rank-math-pro' || plugin.slug === 'seo-by-rank-math'; + return isOnecomBrand && isRankMathPlugin; + }; + + if (catalogLoading) { + // If there's a plugin parameter in the URL, show appropriate skeleton based on plugin type + if (pluginFromQuery) { + // Determine if we should use RankMath detail component based on slug + const brand = typeof window !== 'undefined' && window.marketplaceConfig?.brand; + const isOnecomBrand = brand === 'onecom'; + const isRankMathPlugin = + pluginFromQuery === 'seo-by-rank-math-pro' || pluginFromQuery === 'seo-by-rank-math'; + const DetailComponent = + isOnecomBrand && isRankMathPlugin ? ProductDetailRankMath : ProductDetail; + return {}} usePortal={false} loading={true} />; } + // Show catalog skeleton loaders while catalog is loading + return ( +
+
+
+
+
+ {/* Generate first 3 skeleton plugin cards */} + {[...Array(3)].map((_, index) => ( +
+
+
+
+
+
+
+
+
+
+
+
+
+ ))} +
+ + {/* Additional skeleton loaders after 3 cards */} +
+
+
+ {/* Generate remaining 3 skeleton plugin cards */} + {[...Array(3)].map((_, index) => ( +
+
+
+
+
+
+
+
+
+
+
+
+
+ ))} +
+
+
+ ); + } + + // Show error state if API failed or returned error + if (catalogError) { + return ; + } + // Show WP version error state if (!isWpVersionSupported('6.2')) { return ; } - // Early return: show full page detail instead of list - if (selectedPlugin && pluginFromQuery) { - const DetailComponent = shouldUseRankMathDetail(selectedPlugin) ? ProductDetailRankMath : ProductDetail; - return ( - { - // Return to listing (clear selection and URL) - setSelectedPlugin(null); - // Check if history.back() will work (has navigable history) - if (typeof window !== "undefined" && window.history && window.history.length > 1) { - window.history.back(); - } else { - // In new-tab scenario, manually remove plugin parameter from URL - const url = new URL(window.location.href); - url.searchParams.delete("plugin"); - window.history.replaceState({}, '', url.toString()); - } - }} - usePortal={false} - loading={catalogLoading} - /> - ); - } - - // Group plugins by a single, specific category (first category), avoid duplicates across headings - const categoryMap = new Map(); + // Early return: show full page detail instead of list + if (selectedPlugin && pluginFromQuery) { + const DetailComponent = shouldUseRankMathDetail(selectedPlugin) + ? ProductDetailRankMath + : ProductDetail; + return ( + { + // Return to listing (clear selection and URL) + setSelectedPlugin(null); + // Check if history.back() will work (has navigable history) + if (typeof window !== 'undefined' && window.history && window.history.length > 1) { + window.history.back(); + } else { + // In new-tab scenario, manually remove plugin parameter from URL + const url = new URL(window.location.href); + url.searchParams.delete('plugin'); + window.history.replaceState({}, '', url.toString()); + } + }} + usePortal={false} + loading={catalogLoading} + /> + ); + } - visiblePlugins.forEach((p) => { - // Handle new category object structure: { id, slug, title, description } - const categoryObj = Array.isArray(p.categories) && p.categories.length - ? (typeof p.categories[0] === 'object' ? p.categories[0] : { slug: String(p.categories[0]), title: String(p.categories[0]), description: null }) - : { slug: "Others", title: "Others", description: null }; + // Group plugins by a single, specific category (first category), avoid duplicates across headings + const categoryMap = new Map(); - const categoryKey = categoryObj.slug || categoryObj.title || "Others"; + visiblePlugins.forEach((p) => { + // Handle new category object structure: { id, slug, title, description } + const categoryObj = + Array.isArray(p.categories) && p.categories.length + ? typeof p.categories[0] === 'object' + ? p.categories[0] + : { slug: String(p.categories[0]), title: String(p.categories[0]), description: null } + : { slug: 'Others', title: 'Others', description: null }; - if (!categoryMap.has(categoryKey)) { - categoryMap.set(categoryKey, { info: categoryObj, plugins: [] }); - } - categoryMap.get(categoryKey).plugins.push(p); - }); + const categoryKey = categoryObj.slug || categoryObj.title || 'Others'; - const categories = Array.from(categoryMap.entries()).filter(([catKey, { plugins: list }]) => list.length > 0); - - // If all plugins are activated, show the "You've got all our plugins!" message - if (allPluginsActivated) { - return ( -
-
-
{uiI18n?.notifications?.allPluginsOwned}
-

{uiI18n?.text?.managePlugins}

- -
-
- ); + if (!categoryMap.has(categoryKey)) { + categoryMap.set(categoryKey, { info: categoryObj, plugins: [] }); } + categoryMap.get(categoryKey).plugins.push(p); + }); + const categories = Array.from(categoryMap.entries()).filter( + ([catKey, { plugins: list }]) => list.length > 0 + ); + + // If all plugins are activated, show the "You've got all our plugins!" message + if (allPluginsActivated) { return ( -
- {categories.map(([catKey, { info, plugins: list }]) => ( -
-

{info.title || catKey}

- {info.description &&

{info.description}

} -
- {list.map((plugin) => { - const isProvisionable = shouldShowProvision(plugin); - const freeLabel = (plugin.i18n.freeTrialPeriod && plugin.i18n.freeTrialPeriod.trim() !== '') - ? plugin.i18n.freeTrialPeriod - : (uiI18n?.labels?.free || 'Free'); - const price = formatPluginPrice(plugin, freeLabel, uiI18n); - const fullPriceAmount = getFullPrice(plugin); - const rebatePriceAmount = getRebatePrice(plugin); - return ( -
-
- {plugin.name} -
-
-
-

{plugin.name}

-

{plugin.i18n.listingDescription || plugin.i18n.subtitle}

- - <> - {plugin.licenseType === "premium" && (rebatePriceAmount > 0) ? (rebatePriceAmount !== null ? rebatePriceAmount : fullPriceAmount) : price} - {plugin.licenseType !== "free" && price && price !== freeLabel && price !== (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal') && /{uiI18n?.labels?.timeMonth}} - - -
-
- -
- ); - })} -
-
- ))} - {/* Remove overlay render (keep for non-query usage) */} - {selectedPlugin && !pluginFromQuery && (() => { - const DetailComponent = shouldUseRankMathDetail(selectedPlugin) ? ProductDetailRankMath : ProductDetail; - return ( - setSelectedPlugin(null)} - loading={catalogLoading} - /> - ); - })()} +
+
+
{uiI18n?.notifications?.allPluginsOwned}
+

{uiI18n?.text?.managePlugins}

+
+
); + } + + return ( +
+ {categories.map(([catKey, { info, plugins: list }]) => ( +
+

{info.title || catKey}

+ {info.description &&

{info.description}

} +
+ {list.map((plugin) => { + const isProvisionable = shouldShowProvision(plugin); + const freeLabel = + plugin.i18n.freeTrialPeriod && plugin.i18n.freeTrialPeriod.trim() !== '' + ? plugin.i18n.freeTrialPeriod + : uiI18n?.labels?.free || 'Free'; + const price = formatPluginPrice(plugin, freeLabel, uiI18n); + const fullPriceAmount = getFullPrice(plugin); + const rebatePriceAmount = getRebatePrice(plugin); + return ( +
+
+ {plugin.name} +
+
+
+

{plugin.name}

+

+ {' '} + {plugin.i18n.listingDescription || plugin.i18n.subtitle}{' '} +

+ + <> + {plugin.licenseType === 'premium' && rebatePriceAmount > 0 + ? rebatePriceAmount !== null + ? rebatePriceAmount + : fullPriceAmount + : price} + {plugin.licenseType !== 'free' && + price && + price !== freeLabel && + price !== + (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal') && ( + /{uiI18n?.labels?.timeMonth} + )} + + +
+
+ +
+ ); + })} +
+
+ ))} + {/* Remove overlay render (keep for non-query usage) */} + {selectedPlugin && + !pluginFromQuery && + (() => { + const DetailComponent = shouldUseRankMathDetail(selectedPlugin) + ? ProductDetailRankMath + : ProductDetail; + return ( + setSelectedPlugin(null)} + loading={catalogLoading} + /> + ); + })()} +
+ ); } diff --git a/frontend/src/components/PluginActions.jsx b/frontend/src/components/PluginActions.jsx index 77aa4a4..243d9ed 100644 --- a/frontend/src/components/PluginActions.jsx +++ b/frontend/src/components/PluginActions.jsx @@ -1,155 +1,161 @@ -import React, { useState, useEffect } from "react"; -import { useMarketplace } from "../context/MarketplaceContext"; -import { trackPluginAction, trackButtonClick } from "../utils/mixpanelTracking"; -import { getPluginRedirectUrl, navigateToPluginUrl } from "../utils/redirectUrlHelper"; +import React, { useState, useEffect } from 'react'; +import { useMarketplace } from '../context/MarketplaceContext'; +import { trackPluginAction, trackButtonClick } from '../utils/mixpanelTracking'; +import { getPluginRedirectUrl, navigateToPluginUrl } from '../utils/redirectUrlHelper'; export default function PluginActions({ plugin }) { - const { - assetsBaseUrl, - pluginInAction, - subscriptionStatus, - isCheckingSubscription, - isOnecomBrand, - handlePluginAction, - uiI18n, - isSpecialPlugin - } = useMarketplace(); + const { + assetsBaseUrl, + pluginInAction, + subscriptionStatus, + isCheckingSubscription, + isOnecomBrand, + handlePluginAction, + uiI18n, + isSpecialPlugin, + } = useMarketplace(); - // Get subscription status for this plugin from context - const pluginSubscriptionStatus = subscriptionStatus[plugin.slug]; - const pluginIsCheckingSubscription = isCheckingSubscription[plugin.slug]; - const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== "undefined" && window.marketplaceConfig?.assetsBaseUrl) || ""; - const iconBase = assetBase ? `${assetBase}assets/` : ""; - const handleClick = (action) => { - // Check if brand is onecom, plugin is not installed, and slug is wp-rocket or rank-math-pro - const isNotInstalled = !plugin.installed; + // Get subscription status for this plugin from context + const pluginSubscriptionStatus = subscriptionStatus[plugin.slug]; + const pluginIsCheckingSubscription = isCheckingSubscription[plugin.slug]; + const assetBase = + assetsBaseUrl || + (typeof window.marketplaceConfig !== 'undefined' && window.marketplaceConfig?.assetsBaseUrl) || + ''; + const iconBase = assetBase ? `${assetBase}assets/` : ''; + const handleClick = (action) => { + // Check if brand is onecom, plugin is not installed, and slug is wp-rocket or rank-math-pro + const isNotInstalled = !plugin.installed; - if (isOnecomBrand && isSpecialPlugin(plugin.slug) && isNotInstalled && action === "install") { - // Track install event with result: initiated for special plugins - trackButtonClick({ - buttonName: 'Install', - buttonAction: 'product_install', - plugin: plugin, - context: { - action: action, - result: 'initiated', - } - }); + if (isOnecomBrand && isSpecialPlugin(plugin.slug) && isNotInstalled && action === 'install') { + // Track install event with result: initiated for special plugins + trackButtonClick({ + buttonName: 'Install', + buttonAction: 'product_install', + plugin: plugin, + context: { + action: action, + result: 'initiated', + }, + }); - // Dispatch custom event instead of calling handlePluginAction - const event = new CustomEvent("onecom-plugin-provision", { - detail: { - slug: plugin.slug, - }, - bubbles: true, - cancelable: true, - composed: true - }); - // Dispatch on document so listeners using document.addEventListener receive it - document.dispatchEvent(event); - return; - } + // Dispatch custom event instead of calling handlePluginAction + const event = new CustomEvent('onecom-plugin-provision', { + detail: { + slug: plugin.slug, + }, + bubbles: true, + cancelable: true, + composed: true, + }); + // Dispatch on document so listeners using document.addEventListener receive it + document.dispatchEvent(event); + return; + } - // Default behavior - handlePluginAction(action, plugin, 'product_detail'); - }; + // Default behavior + handlePluginAction(action, plugin, 'product_detail'); + }; - const handleSelectClick = () => { - // Track the select button click - trackButtonClick({ - buttonName: 'Select', - buttonAction: 'subscribe_addon', - plugin: plugin, - }); + const handleSelectClick = () => { + // Track the select button click + trackButtonClick({ + buttonName: 'Select', + buttonAction: 'subscribe_addon', + plugin: plugin, + }); - // Dispatch custom event for provisioning - const event = new CustomEvent("onecom-subscribe-addon", { - detail: { slug: plugin.slug }, - bubbles: true, - cancelable: true, - composed: true - }); - document.dispatchEvent(event); - }; + // Dispatch custom event for provisioning + const event = new CustomEvent('onecom-subscribe-addon', { + detail: { slug: plugin.slug }, + bubbles: true, + cancelable: true, + composed: true, + }); + document.dispatchEvent(event); + }; - const handleManage = () => { - // Track the manage button click - trackButtonClick({ - buttonName: 'Manage', - buttonAction: 'manage_product', - context: { - product_slug: plugin.slug, - product_name: plugin.name, - has_redirect_url: !!(plugin.redirectUrl && plugin.redirectUrl.trim() !== ''), - has_onboarding_url: !!(plugin.onboardingUrl && plugin.onboardingUrl.trim() !== ''), - } - }); + const handleManage = () => { + // Track the manage button click + trackButtonClick({ + buttonName: 'Manage', + buttonAction: 'manage_product', + context: { + product_slug: plugin.slug, + product_name: plugin.name, + has_redirect_url: !!(plugin.redirectUrl && plugin.redirectUrl.trim() !== ''), + has_onboarding_url: !!(plugin.onboardingUrl && plugin.onboardingUrl.trim() !== ''), + }, + }); - const redirectUrl = getPluginRedirectUrl(plugin, false); - navigateToPluginUrl(redirectUrl); - }; + const redirectUrl = getPluginRedirectUrl(plugin, false); + navigateToPluginUrl(redirectUrl); + }; - // Helper function to replace {0} with plugin name - const formatMessage = (message, pluginName) => { - if (!message) return ''; - return message.replace('{0}', pluginName || ''); - }; + // Helper function to replace {0} with plugin name + const formatMessage = (message, pluginName) => { + if (!message) return ''; + return message.replace('{0}', pluginName || ''); + }; - const pluginName = plugin?.name || ''; + const pluginName = plugin?.name || ''; - // Check if we should show "Select" button instead of install/activate - const shouldShowSelectButton = isOnecomBrand && isSpecialPlugin(plugin.slug) && !plugin.installed && pluginSubscriptionStatus === false; + // Check if we should show "Select" button instead of install/activate + const shouldShowSelectButton = + isOnecomBrand && + isSpecialPlugin(plugin.slug) && + !plugin.installed && + pluginSubscriptionStatus === false; - // Check if we should show skeleton loader (while checking subscription for special plugins) - // Show skeleton if: checking OR status is undefined (not yet fetched) - const shouldShowSkeleton = isOnecomBrand && isSpecialPlugin(plugin.slug) && !plugin.installed && - (pluginIsCheckingSubscription || pluginSubscriptionStatus === undefined); + // Check if we should show skeleton loader (while checking subscription for special plugins) + // Show skeleton if: checking OR status is undefined (not yet fetched) + const shouldShowSkeleton = + isOnecomBrand && + isSpecialPlugin(plugin.slug) && + !plugin.installed && + (pluginIsCheckingSubscription || pluginSubscriptionStatus === undefined); - return ( -
- {shouldShowSkeleton ? ( -
- ) : shouldShowSelectButton ? ( - - ) : plugin.installed ? ( - plugin.activated ? ( - - ) : ( - - ) - ) : ( - - )} -
- ); + return ( +
+ {shouldShowSkeleton ? ( +
+ ) : shouldShowSelectButton ? ( + + ) : plugin.installed ? ( + plugin.activated ? ( + + ) : ( + + ) + ) : ( + + )} +
+ ); } diff --git a/frontend/src/components/ProductBanner.jsx b/frontend/src/components/ProductBanner.jsx index 0ddcf30..1119f30 100644 --- a/frontend/src/components/ProductBanner.jsx +++ b/frontend/src/components/ProductBanner.jsx @@ -2,63 +2,64 @@ import React from 'react'; import { useMarketplace } from '../context/MarketplaceContext'; const ProductBanner = ({ loading = false }) => { - const { assetsBaseUrl, uiI18n } = useMarketplace(); - const leftBannerUrl = 'https://wpaddon-static.group-cdn.one/images/wp/marketplace/banners/top-header-left-banner.png'; - const rightBannerUrl = 'https://wpaddon-static.group-cdn.one/images/wp/marketplace/banners/top-header-right-banner.png'; + const { assetsBaseUrl, uiI18n } = useMarketplace(); + const leftBannerUrl = + 'https://wpaddon-static.group-cdn.one/images/wp/marketplace/banners/top-header-left-banner.png'; + const rightBannerUrl = + 'https://wpaddon-static.group-cdn.one/images/wp/marketplace/banners/top-header-right-banner.png'; - return ( -
-
- {loading ? ( -
-
-
- ) : ( -
- - - Left banner - -
- )} -
+ return ( +
+
+ {loading ? ( +
+
+
+ ) : ( +
+ + + Left banner + +
+ )} +
-
- {loading ? ( - <> -
-
-
-
- - ) : ( - <> -

- {uiI18n?.headings?.pageTitle} -

-

- {uiI18n?.text?.pageContent} -

- - )} -
+
+ {loading ? ( + <> +
+
+
+
+ + ) : ( + <> +

{uiI18n?.headings?.pageTitle}

+

{uiI18n?.text?.pageContent}

+ + )} +
-
- {loading ? ( -
-
-
- ) : ( -
- - - Product image - -
- )} -
-
- ); +
+ {loading ? ( +
+
+
+ ) : ( +
+ + + Right banner + +
+ )} +
+
+ ); }; export default ProductBanner; diff --git a/frontend/src/components/ProductDetail.jsx b/frontend/src/components/ProductDetail.jsx index 64312f0..e7408d1 100644 --- a/frontend/src/components/ProductDetail.jsx +++ b/frontend/src/components/ProductDetail.jsx @@ -1,410 +1,454 @@ -import React, { useState, useEffect } from "react"; -import { createPortal } from "react-dom"; -import PluginActions from "./PluginActions"; -import SuccessNotice from "./SuccessNotice"; -import ErrorToast from "./ErrorToast"; -import { useMarketplace } from "../context/MarketplaceContext"; -import { formatPluginPrice, getFullPrice, getRebatePrice } from "../utils/priceFormatter"; - -export default function ProductDetail({ - plugin, - onClose, - usePortal = true, - loading = false -}) { - const { - assetsBaseUrl, - useWPHandlers, - pluginInAction, - uiI18n, - subscriptionStatus, - isCheckingSubscription, - setNoticeState, - setErrorState - } = useMarketplace(); - - const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== "undefined" && window.marketplaceConfig?.assetsBaseUrl) || ""; - const iconBase = assetBase ? `${assetBase}assets/icons/` : ""; - - // Show skeleton loaders while loading (even if plugin is null) - if (loading) { - const skeletonContent = ( -
-
- {/* Breadcrumbs skeleton */} - - - {/* Header skeleton */} -
-
-
-
-
-
-
-
-
-
-
-
-
- - {/* Pricing / Action Section skeleton */} -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+import React, { useState, useEffect } from 'react'; +import { createPortal } from 'react-dom'; +import PluginActions from './PluginActions'; +import SuccessNotice from './SuccessNotice'; +import ErrorToast from './ErrorToast'; +import { useMarketplace } from '../context/MarketplaceContext'; +import { formatPluginPrice, getFullPrice, getRebatePrice } from '../utils/priceFormatter'; + +export default function ProductDetail({ plugin, onClose, usePortal = true, loading = false }) { + const { + assetsBaseUrl, + useWPHandlers, + pluginInAction, + uiI18n, + subscriptionStatus, + isCheckingSubscription, + setNoticeState, + setErrorState, + } = useMarketplace(); + + const assetBase = + assetsBaseUrl || + (typeof window.marketplaceConfig !== 'undefined' && window.marketplaceConfig?.assetsBaseUrl) || + ''; + const iconBase = assetBase ? `${assetBase}assets/icons/` : ''; + + // Scroll to top when component mounts or plugin changes + useEffect(() => { + if (plugin) { + window.scrollTo(0, 0); + } + }, [plugin]); + + // Clear banners when component mounts (handles case when user returns via browser back button) + useEffect(() => { + if (plugin) { + // Clear any existing banners when ProductDetail mounts + // BUT don't clear them if they are for the current plugin (e.g. just activated and reloaded) + setNoticeState((prev) => { + return prev.visible && prev.pluginSlug === plugin.slug + ? prev + : { visible: false, type: null, pluginSlug: null }; + }); + setErrorState((prev) => { + return prev.visible && prev.pluginSlug === plugin.slug + ? prev + : { visible: false, type: null, pluginSlug: null }; + }); + } + }, [plugin, setNoticeState, setErrorState]); + + // Hide banners when user navigates back and returns to the product detail page + useEffect(() => { + const handlePopState = () => { + // Clear notice and error state when navigating via browser back/forward + setNoticeState({ visible: false, type: null, pluginSlug: null }); + setErrorState({ visible: false, type: null, pluginSlug: null }); + }; - {/* Key features skeleton */} -
-
-
-
-
-
- {[...Array(3)].map((_, i) => ( -
-
-
-
-
- ))} -
-
+ window.addEventListener('popstate', handlePopState); + return () => window.removeEventListener('popstate', handlePopState); + }, [setNoticeState, setErrorState]); + + // Show skeleton loaders while loading (even if plugin is null) + if (loading) { + const skeletonContent = ( +
+
+ {/* Breadcrumbs skeleton */} + + + {/* Header skeleton */} +
+
+
+
+
+
+
+
+
+
+
+
+
+ + {/* Pricing / Action Section skeleton */} +
+
+
+
+
+
+
+
+
+
+
+
+
-
- - {/* Benefits skeleton */} -
-
-
-
    - {[...Array(3)].map((_, i) => ( -
  • -
    -
  • - ))} -
-
+
+
+
+
- {/* Core Features skeleton */} -
-
-
-
- {[...Array(3)].map((_, i) => ( -
-
-
-
-
- ))} -
-
+ {/* Key features skeleton */} +
+
+
+
+
+
+ {[...Array(3)].map((_, i) => ( +
+
+
+
- + ))} +
+
- ); - return usePortal ? createPortal(skeletonContent, document.body) : skeletonContent; + + + {/* Benefits skeleton */} +
+
+
+
    + {[...Array(3)].map((_, i) => ( +
  • +
    +
  • + ))} +
+
+
+ + {/* Core Features skeleton */} +
+
+
+
+ {[...Array(3)].map((_, i) => ( +
+
+
+
+
+ ))} +
+
+
+ + + ); + return usePortal ? createPortal(skeletonContent, document.body) : skeletonContent; + } + + // If not loading and plugin is null, return null + if (!plugin) return null; + + const imageURL = + (typeof window.onecomWpVars !== 'undefined' && window.onecomWpVars?.imageURL) || assetBase; + const iconSrc = plugin.thumbnail || `${assetBase}assets/icons/placeholder.svg`; + const mainImage = + plugin.bannerUrl || + plugin.image || + plugin.thumbnail || + 'https://gravity.group.one/guide-images/product-image@2x.png'; + + // Extract data with fallbacks + const title = plugin.name || 'Product'; + const description = + plugin.i18n?.description || + plugin.i18n?.subtitle || + plugin.description || + plugin.shortDescription || + 'No description available.'; + const subTitle = plugin.i18n?.subtitle; + const isFree = plugin.licenseType === 'free'; + const freeTrialText = plugin.i18n?.freeTrialText || ''; + const hasFreeTrialText = freeTrialText && freeTrialText.trim() !== ''; + const freeTrialPeriod = plugin.i18n?.freeTrialPeriod || ''; + const hasFreeTrialPeriod = freeTrialPeriod && freeTrialPeriod.trim() !== ''; + + const price = + hasFreeTrialPeriod || hasFreeTrialText + ? uiI18n?.headings?.freeTrial || 'Free trial*' + : formatPluginPrice(plugin, uiI18n?.labels?.free || 'Free', uiI18n); + + // Check if price is "Free until renewal" (rebate amount is 0) + const isFreeUntilRenewal = price === (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal'); + + // Extract full and rebate prices using common utility functions + const fullPriceAmount = getFullPrice(plugin); + const rebatePriceAmount = getRebatePrice(plugin); + + // Helper function to extract numbered properties dynamically from i18n object + const extractNumberedProps = (obj, baseName) => { + if (!obj || typeof obj !== 'object') return []; + const results = []; + let i = 1; + while (obj[`${baseName}${i}`]) { + const value = obj[`${baseName}${i}`]; + if (value && value.trim() !== '') { + results.push(value); + } + i++; } - - // If not loading and plugin is null, return null - if (!plugin) return null; - - // Scroll to top when component mounts or plugin changes - useEffect(() => { - window.scrollTo(0, 0); - }, [plugin]); - - // Clear banners when component mounts (handles case when user returns via browser back button) - useEffect(() => { - // Clear any existing banners when ProductDetail mounts - // BUT don't clear them if they are for the current plugin (e.g. just activated and reloaded) - setNoticeState(prev => (prev.visible && prev.pluginSlug === plugin.slug) ? prev : { visible: false, type: null, pluginSlug: null }); - setErrorState(prev => (prev.visible && prev.pluginSlug === plugin.slug) ? prev : { visible: false, type: null, pluginSlug: null }); - }, [plugin.slug, setNoticeState, setErrorState]); - - // Hide banners when user navigates back and returns to the product detail page - useEffect(() => { - const handlePopState = () => { - // Clear notice and error state when navigating via browser back/forward - setNoticeState({ visible: false, type: null, pluginSlug: null }); - setErrorState({ visible: false, type: null, pluginSlug: null }); - }; - - window.addEventListener('popstate', handlePopState); - return () => window.removeEventListener('popstate', handlePopState); - }, [setNoticeState, setErrorState]); - - const imageURL = (typeof window.onecomWpVars !== "undefined" && window.onecomWpVars?.imageURL) || assetBase; - const iconSrc = plugin.thumbnail || `${assetBase}assets/icons/placeholder.svg`; - const mainImage = plugin.bannerUrl || plugin.image || plugin.thumbnail || 'https://gravity.group.one/guide-images/product-image@2x.png'; - - // Extract data with fallbacks - const title = plugin.name || 'Product'; - const description = plugin.i18n?.description || plugin.i18n?.subtitle || plugin.description || plugin.shortDescription || 'No description available.'; - const subTitle = plugin.i18n?.subtitle; - const isFree = plugin.licenseType === "free"; - const freeTrialText = plugin.i18n?.freeTrialText || ''; - const hasFreeTrialText = freeTrialText && freeTrialText.trim() !== ''; - const freeTrialPeriod = plugin.i18n?.freeTrialPeriod || ''; - const hasFreeTrialPeriod = freeTrialPeriod && freeTrialPeriod.trim() !== ''; - - const price = (hasFreeTrialPeriod || hasFreeTrialText) - ? (uiI18n?.headings?.freeTrial || 'Free trial*') - : formatPluginPrice(plugin, uiI18n?.labels?.free || 'Free', uiI18n); - - // Check if price is "Free until renewal" (rebate amount is 0) - const isFreeUntilRenewal = price === (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal'); - - // Extract full and rebate prices using common utility functions - const fullPriceAmount = getFullPrice(plugin); - const rebatePriceAmount = getRebatePrice(plugin); - - // Helper function to extract numbered properties dynamically from i18n object - const extractNumberedProps = (obj, baseName) => { - if (!obj || typeof obj !== 'object') return []; - const results = []; - let i = 1; - while (obj[`${baseName}${i}`]) { - const value = obj[`${baseName}${i}`]; - if (value && value.trim() !== '') { - results.push(value); - } - i++; - } - return results; - }; - - // Extract key benefits from i18n (keyBenefitContent1, keyBenefitContent2, etc.) - const benefitsFromI18n = extractNumberedProps(plugin.i18n, 'keyBenefitContent'); - - // Extract key features from i18n (keyFeatureContent1 through keyFeatureContent6) - const keyFeaturesFromI18n = extractNumberedProps(plugin.i18n, 'keyFeatureContent'); - - // Extract core features (title/content pairs) from i18n - const coreFeaturesFromI18n = []; - if (plugin.i18n && typeof plugin.i18n === 'object') { - let i = 1; - while (plugin.i18n[`coreFeatureTitle${i}`] || plugin.i18n[`coreFeatureContent${i}`]) { - const featureTitle = plugin.i18n[`coreFeatureTitle${i}`]; - const content = plugin.i18n[`coreFeatureContent${i}`]; - if (featureTitle && featureTitle.trim() !== '' && content && content.trim() !== '') { - coreFeaturesFromI18n.push({ name: featureTitle, desc: content }); - } - i++; - } + return results; + }; + + // Extract key benefits from i18n (keyBenefitContent1, keyBenefitContent2, etc.) + const benefitsFromI18n = extractNumberedProps(plugin.i18n, 'keyBenefitContent'); + + // Extract key features from i18n (keyFeatureContent1 through keyFeatureContent6) + const keyFeaturesFromI18n = extractNumberedProps(plugin.i18n, 'keyFeatureContent'); + + // Extract core features (title/content pairs) from i18n + const coreFeaturesFromI18n = []; + if (plugin.i18n && typeof plugin.i18n === 'object') { + let i = 1; + while (plugin.i18n[`coreFeatureTitle${i}`] || plugin.i18n[`coreFeatureContent${i}`]) { + const featureTitle = plugin.i18n[`coreFeatureTitle${i}`]; + const content = plugin.i18n[`coreFeatureContent${i}`]; + if (featureTitle && featureTitle.trim() !== '' && content && content.trim() !== '') { + coreFeaturesFromI18n.push({ name: featureTitle, desc: content }); + } + i++; } - - // Use only i18n data - no fallbacks - const keyFeatures = keyFeaturesFromI18n; - const benefits = benefitsFromI18n; - const coreFeatures = coreFeaturesFromI18n; - - const content = ( -
-
- - - - -
-
-

{title}

-

{description}

- {/*{plugin.author && (*/} - {/*

*/} - {/* Author: {plugin.authorUrl ? {plugin.author} : plugin.author}*/} - {/*

*/} - {/*)}*/} -
-
- - - {`${title} - + } + + // Use only i18n data - no fallbacks + const keyFeatures = keyFeaturesFromI18n; + const benefits = benefitsFromI18n; + const coreFeatures = coreFeaturesFromI18n; + + const content = ( +
+
+ + +
+
+

{title}

+

{description}

+ {/*{plugin.author && (*/} + {/*

*/} + {/* Author: {plugin.authorUrl ? {plugin.author} : plugin.author}*/} + {/*

*/} + {/*)}*/} +
+
+ + + {title} + +
+
+ + {/* Pricing / Action Section */} +
+
+
+
+
+
+
+

{title}

+

{subTitle}

-
- - {/* Pricing / Action Section */} -
-
-
-
-
-
-
-

{title}

-

{subTitle}

-
-
-
-
- {(hasFreeTrialPeriod || hasFreeTrialText) ? ( - {price} - ) : ( - <> - - {plugin.licenseType === "premium" && rebatePriceAmount !== null - ? (rebatePriceAmount !== null ? rebatePriceAmount : fullPriceAmount) - : price} - - {!isFree && !isFreeUntilRenewal && price && ( - /{uiI18n?.labels?.timeMonth} - )} - - )} -
- {(hasFreeTrialPeriod || hasFreeTrialText) ? ( -
-
{freeTrialText}
-
- ) : ( - !isFree && price && fullPriceAmount && rebatePriceAmount !== null && -
-
{uiI18n.labels.untilRenewal} [{rebatePriceAmount}]/{uiI18n?.labels?.timeMonth}
-
{uiI18n.labels.afterThat} [{fullPriceAmount}]/{uiI18n?.labels?.timeMonth}
-
- )} -
- {useWPHandlers ? ( - - ) : ( - plugin.download && ( - - Download - - ) - )} -
-
-
-
- - {keyFeatures.length > 0 && ( -
-
-
-

{uiI18n?.keyFeatureHeading || plugin.i18n?.keyFeatureHeading}

-
-
- {keyFeatures.map((f, i) => ( -
-
- {f} -
-
- ))} -
- )} +
+
+
+ {hasFreeTrialPeriod || hasFreeTrialText ? ( + {price} + ) : ( + <> + + {plugin.licenseType === 'premium' && rebatePriceAmount !== null + ? rebatePriceAmount !== null + ? rebatePriceAmount + : fullPriceAmount + : price} + + {!isFree && !isFreeUntilRenewal && price && ( + /{uiI18n?.labels?.timeMonth} + )} + + )}
+ {hasFreeTrialPeriod || hasFreeTrialText ? ( +
+
{freeTrialText}
+
+ ) : ( + !isFree && + price && + fullPriceAmount && + rebatePriceAmount !== null && ( +
+
+ {uiI18n.labels.untilRenewal} [{rebatePriceAmount}]/ + {uiI18n?.labels?.timeMonth} +
+
+ {uiI18n.labels.afterThat} [{fullPriceAmount}]/ + {uiI18n?.labels?.timeMonth} +
+
+ ) + )} +
+ {useWPHandlers ? ( + + ) : ( + plugin.download && ( + + Download + + ) + )}
-
- - {/* Details / Benefits */} -
- {benefits.length > 0 && ( -
-

{uiI18n?.benefitHeading || plugin.i18n?.benefitHeading || 'Key benefits'}

-
    - {benefits.map((b, i) =>
  • {b}
  • )} -
-
- )} +
- - {/* Core Features Overview */} - {coreFeatures.length > 0 && ( -
-
-

{uiI18n?.featureOverviewHeading || plugin.i18n?.featureOverviewHeading || 'Core features overview'}

-
- {coreFeatures.map((cf, i) => ( -
-

{cf.name}

-

{cf.desc}

-
- ))} -
-
+
+ + {keyFeatures.length > 0 && ( +
+
+
+

+ {uiI18n?.keyFeatureHeading || plugin.i18n?.keyFeatureHeading} +

+
+
+ {keyFeatures.map((f, i) => ( +
+
+ {f} +
- )} - + ))} +
+ )} + + + + + {/* Details / Benefits */} +
+ {benefits.length > 0 && ( +
+

+ {uiI18n?.benefitHeading || plugin.i18n?.benefitHeading || 'Key benefits'} +

+
    + {benefits.map((b, i) => ( +
  • {b}
  • + ))} +
+
+ )}
- ); - return usePortal ? createPortal(content, document.body) : content; + {/* Core Features Overview */} + {coreFeatures.length > 0 && ( +
+
+

+ {uiI18n?.featureOverviewHeading || + plugin.i18n?.featureOverviewHeading || + 'Core features overview'} +

+
+ {coreFeatures.map((cf, i) => ( +
+

{cf.name}

+

{cf.desc}

+
+ ))} +
+
+
+ )} + + + ); + + return usePortal ? createPortal(content, document.body) : content; } diff --git a/frontend/src/components/ProductDetailRankMath.jsx b/frontend/src/components/ProductDetailRankMath.jsx index 0eeadcc..d7ea08d 100644 --- a/frontend/src/components/ProductDetailRankMath.jsx +++ b/frontend/src/components/ProductDetailRankMath.jsx @@ -1,703 +1,768 @@ -import React, { useState, useEffect, useRef } from "react"; -import { createPortal } from "react-dom"; -import PluginActions from "./PluginActions"; -import SuccessNotice from "./SuccessNotice"; -import ErrorToast from "./ErrorToast"; -import { useMarketplace } from "../context/MarketplaceContext"; -import { formatPluginPrice, getFullPrice } from "../utils/priceFormatter"; +import React, { useState, useEffect, useRef } from 'react'; +import { createPortal } from 'react-dom'; +import PluginActions from './PluginActions'; +import SuccessNotice from './SuccessNotice'; +import ErrorToast from './ErrorToast'; +import { useMarketplace } from '../context/MarketplaceContext'; +import { formatPluginPrice, getFullPrice } from '../utils/priceFormatter'; export default function ProductDetailRankMath({ - plugin, - onClose, - usePortal = true, - loading = false + plugin, + onClose, + usePortal = true, + loading = false, }) { - const { - assetsBaseUrl, - useWPHandlers, - pluginInAction, - plugins, - uiI18n, - subscriptionStatus, - isCheckingSubscription, - noticeState, - setNoticeState, - setErrorState - } = useMarketplace(); - - // Always get both plugins from context - seo-by-rank-math for first column, rank-math-pro for second - const freePlugin = plugins.find(p => p.slug === "seo-by-rank-math") || null; - const proPlugin = plugins.find(p => p.slug === "seo-by-rank-math-pro") || null; - - const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== "undefined" && window.marketplaceConfig?.assetsBaseUrl) || ""; - const iconBase = assetBase ? `${assetBase}assets/icons/` : ""; - - // Show skeleton loaders while loading (even if plugin is null) - if (loading) { - const skeletonContent = ( -
-
- - - {/* Header skeleton - single skeleton loader */} -
-
-
-
-
-
-
+ const { + assetsBaseUrl, + useWPHandlers, + pluginInAction, + plugins, + uiI18n, + subscriptionStatus, + isCheckingSubscription, + noticeState, + setNoticeState, + setErrorState, + } = useMarketplace(); + + // Always get both plugins from context - seo-by-rank-math for first column, rank-math-pro for second + const freePlugin = plugins.find((p) => p.slug === 'seo-by-rank-math') || null; + const proPlugin = plugins.find((p) => p.slug === 'seo-by-rank-math-pro') || null; + + const assetBase = + assetsBaseUrl || + (typeof window.marketplaceConfig !== 'undefined' && window.marketplaceConfig?.assetsBaseUrl) || + ''; + const iconBase = assetBase ? `${assetBase}assets/icons/` : ''; + + const [activeSlide, setActiveSlide] = useState(0); + + // Refs for slider elements + const tableSliderRef = useRef(null); + const sliderNavRef = useRef(null); + const tableRef = useRef(null); + const tableHeaderRef = useRef(null); + const paginationRef = useRef(null); + const dotsRef = useRef([]); + + // Slider functionality + useEffect(() => { + const tableSlider = tableSliderRef.current; + const sliderNav = sliderNavRef.current; + const table = tableRef.current; + const tableHeader = tableHeaderRef.current; + const pagination = paginationRef.current; + + if (!tableSlider || !sliderNav || !table || !tableHeader || !pagination) return; + + const prevButton = sliderNav.querySelector('.gv-previous'); + const nextButton = sliderNav.querySelector('.gv-next'); + + // State tracking flags to prevent continuous class toggling + let navIsAtBottom = false; + let paginationState = 'top'; // 'top', 'overlay', or 'bottom' + let isPaginationScrolledPast = false; + let isTableBottomVisible = false; + let isUpdatingClasses = false; // Flag to prevent observer callbacks during class updates + + // Throttle timer for scroll events + let scrollThrottleTimer = null; + let isScrollThrottled = false; + + // Update active dot and button states based on scroll position + const updateSliderState = () => { + const scrollLeft = tableSlider.scrollLeft; + const slideWidth = tableSlider.offsetWidth; + const currentSlide = Math.round(scrollLeft / slideWidth); + + setActiveSlide(currentSlide); + + // Update button disabled states + if (prevButton) { + if (currentSlide === 0) { + prevButton.classList.add('gv-disabled'); + } else { + prevButton.classList.remove('gv-disabled'); + } + } + + if (nextButton) { + const maxSlide = Math.round(tableSlider.scrollWidth / slideWidth) - 1; + if (currentSlide >= maxSlide) { + nextButton.classList.add('gv-disabled'); + } else { + nextButton.classList.remove('gv-disabled'); + } + } + }; -
-
-
-
-
-
-
- {/* Benefits skeleton - keep structure, add skeletons */} -
-
-
-
    - {[...Array(3)].map((_, i) => ( -
  • -
    -
  • - ))} -
-
-
+ // Calculate and set dynamic positioning for sticky navigation (only when needed) + const calculateNavPosition = () => { + const tablePaddingTop = parseFloat(getComputedStyle(table).paddingTop) || 0; + const headerHeight = tableHeader.offsetHeight; + const halfHeaderHeight = headerHeight / 2; - {/* Core Features skeleton - keep structure, add skeletons */} -
-
-
-
- {[...Array(3)].map((_, i) => ( -
-
-
-
-
- ))} -
-
-
-
-
- ); - return usePortal ? createPortal(skeletonContent, document.body) : skeletonContent; - } + // [X] = half of table header height + padding-top of table + const translateY = halfHeaderHeight + tablePaddingTop; - // If not loading and plugin is null, return null - if (!plugin) return null; - - // Refs for slider elements - const tableSliderRef = useRef(null); - const sliderNavRef = useRef(null); - const tableRef = useRef(null); - const tableHeaderRef = useRef(null); - const paginationRef = useRef(null); - const dotsRef = useRef([]); - - // State for active slide - const [activeSlide, setActiveSlide] = useState(0); - - // Scroll to top when component mounts or plugin changes - useEffect(() => { - window.scrollTo(0, 0); - }, [plugin]); - - // Clear banners when component mounts (handles case when user returns via browser back button) - useEffect(() => { - // Clear any existing banners when ProductDetail mounts - // BUT don't clear them if they are for the current plugin (e.g. just activated and reloaded) - setNoticeState(prev => (prev.visible && (prev.pluginSlug === freePlugin?.slug || prev.pluginSlug === proPlugin?.slug)) ? prev : { visible: false, type: null, pluginSlug: null }); - setErrorState(prev => (prev.visible && (prev.pluginSlug === freePlugin?.slug || prev.pluginSlug === proPlugin?.slug)) ? prev : { visible: false, type: null, pluginSlug: null }); - }, [freePlugin?.slug, proPlugin?.slug, setNoticeState, setErrorState]); - - // Hide banners when user navigates back and returns to the product detail page - useEffect(() => { - const handlePopState = () => { - // Clear notice and error state when navigating via browser back/forward - setNoticeState({ visible: false, type: null, pluginSlug: null }); - setErrorState({ visible: false, type: null, pluginSlug: null }); - }; - - window.addEventListener('popstate', handlePopState); - return () => window.removeEventListener('popstate', handlePopState); - }, [setNoticeState, setErrorState]); - - // Navigation button click handlers - const handlePrevClick = () => { - const tableSlider = tableSliderRef.current; - if (!tableSlider) return; - - const slideWidth = tableSlider.offsetWidth; - tableSlider.scrollTo({ - left: tableSlider.scrollLeft - slideWidth, - behavior: 'smooth' - }); - }; + // [Y] = half viewport height - [X] + const topValue = window.innerHeight / 2 - translateY; - const handleNextClick = () => { - const tableSlider = tableSliderRef.current; - if (!tableSlider) return; + // [Z] = half of table header height (excluding padding) + const bottomValue = 2 * halfHeaderHeight; - const slideWidth = tableSlider.offsetWidth; - tableSlider.scrollTo({ - left: tableSlider.scrollLeft + slideWidth, - behavior: 'smooth' - }); + sliderNav.style.transform = `translateY(${translateY}px)`; + sliderNav.style.top = `${topValue}px`; + sliderNav.style.bottom = `${bottomValue}px`; + + return { bottomValue, halfHeaderHeight }; }; - // Dot click handler - const handleDotClick = (slideIndex) => { - const tableSlider = tableSliderRef.current; - if (!tableSlider) return; + // Check nav boundary and update class only when state changes + const checkNavBoundary = (bottomValue) => { + const tableRect = table.getBoundingClientRect(); + const viewportHeight = window.innerHeight; - const slideWidth = tableSlider.offsetWidth; - tableSlider.scrollTo({ - left: slideWidth * slideIndex, - behavior: 'smooth' - }); - }; + // Calculate the threshold where sticky bottom constraint activates + const stickyBottomThreshold = viewportHeight - bottomValue; - // Slider functionality - useEffect(() => { - const tableSlider = tableSliderRef.current; - const sliderNav = sliderNavRef.current; - const table = tableRef.current; - const tableHeader = tableHeaderRef.current; - const pagination = paginationRef.current; - - if (!tableSlider || !sliderNav || !table || !tableHeader || !pagination) return; - - const prevButton = sliderNav.querySelector('.gv-previous'); - const nextButton = sliderNav.querySelector('.gv-next'); - - // State tracking flags to prevent continuous class toggling - let navIsAtBottom = false; - let paginationState = 'top'; // 'top', 'overlay', or 'bottom' - let isPaginationScrolledPast = false; - let isTableBottomVisible = false; - let isUpdatingClasses = false; // Flag to prevent observer callbacks during class updates - - // Throttle timer for scroll events - let scrollThrottleTimer = null; - let isScrollThrottled = false; - - // Update active dot and button states based on scroll position - const updateSliderState = () => { - const scrollLeft = tableSlider.scrollLeft; - const slideWidth = tableSlider.offsetWidth; - const currentSlide = Math.round(scrollLeft / slideWidth); - - setActiveSlide(currentSlide); - - // Update button disabled states - if (prevButton) { - if (currentSlide === 0) { - prevButton.classList.add('gv-disabled'); - } else { - prevButton.classList.remove('gv-disabled'); - } - } - - if (nextButton) { - const maxSlide = Math.round(tableSlider.scrollWidth / slideWidth) - 1; - if (currentSlide >= maxSlide) { - nextButton.classList.add('gv-disabled'); - } else { - nextButton.classList.remove('gv-disabled'); - } - } - }; + // Only update class when boundary is crossed (state changes) + const shouldBeAtBottom = tableRect.bottom <= stickyBottomThreshold; - // Calculate and set dynamic positioning for sticky navigation (only when needed) - const calculateNavPosition = () => { - const tablePaddingTop = parseFloat(getComputedStyle(table).paddingTop) || 0; - const headerHeight = tableHeader.offsetHeight; - const halfHeaderHeight = headerHeight / 2; + if (shouldBeAtBottom !== navIsAtBottom) { + navIsAtBottom = shouldBeAtBottom; - // [X] = half of table header height + padding-top of table - const translateY = halfHeaderHeight + tablePaddingTop; + if (navIsAtBottom) { + sliderNav.classList.add('gv-state-bottom'); + } else { + sliderNav.classList.remove('gv-state-bottom'); + } + } + }; - // [Y] = half viewport height - [X] - const topValue = (window.innerHeight / 2) - translateY; + // Update pagination state based on intersection observer flags + const updatePaginationStateFromObservers = () => { + // If already updating classes, ignore this call to prevent infinite loop + if (isUpdatingClasses) { + return; + } + + // Determine the new state based on observer flags + let newState; + if (!isPaginationScrolledPast) { + newState = 'top'; + } else if (isPaginationScrolledPast && !isTableBottomVisible) { + newState = 'overlay'; + } else { + newState = 'bottom'; + } + + // Only update classes when state actually changes + if (newState !== paginationState) { + // Set flag to prevent observer callbacks during class updates + isUpdatingClasses = true; + paginationState = newState; + + if (paginationState === 'top') { + pagination.classList.add('gv-state-top'); + pagination.classList.remove('gv-state-overlay'); + } else if (paginationState === 'overlay') { + pagination.classList.remove('gv-state-top'); + pagination.classList.add('gv-state-overlay'); + } else { + pagination.classList.remove('gv-state-top'); + pagination.classList.remove('gv-state-overlay'); + } - // [Z] = half of table header height (excluding padding) - const bottomValue = 2 * halfHeaderHeight; + // Use requestAnimationFrame to clear flag after browser completes layout update + requestAnimationFrame(() => { + // Add a small delay to ensure layout is fully complete + setTimeout(() => { + isUpdatingClasses = false; + }, 50); + }); + } + }; - sliderNav.style.transform = `translateY(${translateY}px)`; - sliderNav.style.top = `${topValue}px`; - sliderNav.style.bottom = `${bottomValue}px`; + // Initial calculation of nav position + const { bottomValue } = calculateNavPosition(); + + // Scroll event listener for slider + tableSlider.addEventListener('scroll', updateSliderState); + + // Set up Intersection Observer for pagination element + // Observes when pagination scrolls past the top of viewport + const paginationObserver = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + // When pagination is NOT intersecting and is above viewport, it's scrolled past + if (!entry.isIntersecting && entry.boundingClientRect.top < 0) { + isPaginationScrolledPast = true; + } else if (entry.isIntersecting || entry.boundingClientRect.top >= 0) { + isPaginationScrolledPast = false; + } + updatePaginationStateFromObservers(); + }); + }, + { + threshold: [0, 1], + rootMargin: '0px', + } + ); - return { bottomValue, halfHeaderHeight }; - }; + // Set up Intersection Observer for table bottom + // Create a sentinel element at the bottom of the table to observe + const tableBottomSentinel = document.createElement('div'); + tableBottomSentinel.style.position = 'absolute'; + tableBottomSentinel.style.bottom = '0'; + tableBottomSentinel.style.left = '0'; + tableBottomSentinel.style.width = '1px'; + tableBottomSentinel.style.height = '1px'; + tableBottomSentinel.style.pointerEvents = 'none'; + table.style.position = 'relative'; + table.appendChild(tableBottomSentinel); + + const tableBottomObserver = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + isTableBottomVisible = entry.isIntersecting; + updatePaginationStateFromObservers(); + }); + }, + { + threshold: [0], + rootMargin: '-100px 0px 0px 0px', + } + ); - // Check nav boundary and update class only when state changes - const checkNavBoundary = (bottomValue) => { - const tableRect = table.getBoundingClientRect(); - const viewportHeight = window.innerHeight; + // Start observing + paginationObserver.observe(pagination); + tableBottomObserver.observe(tableBottomSentinel); - // Calculate the threshold where sticky bottom constraint activates - const stickyBottomThreshold = viewportHeight - bottomValue; + // Throttled scroll handler - only executes nav boundary check when not already throttled + const handleScroll = () => { + if (isScrollThrottled) return; - // Only update class when boundary is crossed (state changes) - const shouldBeAtBottom = tableRect.bottom <= stickyBottomThreshold; + isScrollThrottled = true; - if (shouldBeAtBottom !== navIsAtBottom) { - navIsAtBottom = shouldBeAtBottom; + // Use requestAnimationFrame for smooth updates + requestAnimationFrame(() => { + checkNavBoundary(bottomValue); + }); - if (navIsAtBottom) { - sliderNav.classList.add('gv-state-bottom'); - } else { - sliderNav.classList.remove('gv-state-bottom'); - } - } - }; + // Throttle for 100ms to reduce continuous execution + scrollThrottleTimer = setTimeout(() => { + isScrollThrottled = false; + }, 100); + }; - // Update pagination state based on intersection observer flags - const updatePaginationStateFromObservers = () => { - // If already updating classes, ignore this call to prevent infinite loop - if (isUpdatingClasses) { - return; - } - - // Determine the new state based on observer flags - let newState; - if (!isPaginationScrolledPast) { - newState = 'top'; - } else if (isPaginationScrolledPast && !isTableBottomVisible) { - newState = 'overlay'; - } else { - newState = 'bottom'; - } - - // Only update classes when state actually changes - if (newState !== paginationState) { - // Set flag to prevent observer callbacks during class updates - isUpdatingClasses = true; - paginationState = newState; - - if (paginationState === 'top') { - pagination.classList.add('gv-state-top'); - pagination.classList.remove('gv-state-overlay'); - } else if (paginationState === 'overlay') { - pagination.classList.remove('gv-state-top'); - pagination.classList.add('gv-state-overlay'); - } else { - pagination.classList.remove('gv-state-top'); - pagination.classList.remove('gv-state-overlay'); - } + // Resize handler - recalculate positions and check boundaries + const handleResize = () => { + const { bottomValue: newBottomValue } = calculateNavPosition(); + checkNavBoundary(newBottomValue); + }; - // Use requestAnimationFrame to clear flag after browser completes layout update - requestAnimationFrame(() => { - // Add a small delay to ensure layout is fully complete - setTimeout(() => { - isUpdatingClasses = false; - }, 50); - }); - } - }; - - // Initial calculation of nav position - const { bottomValue } = calculateNavPosition(); - - // Scroll event listener for slider - tableSlider.addEventListener('scroll', updateSliderState); - - // Set up Intersection Observer for pagination element - // Observes when pagination scrolls past the top of viewport - const paginationObserver = new IntersectionObserver( - (entries) => { - entries.forEach((entry) => { - // When pagination is NOT intersecting and is above viewport, it's scrolled past - if (!entry.isIntersecting && entry.boundingClientRect.top < 0) { - isPaginationScrolledPast = true; - } else if (entry.isIntersecting || entry.boundingClientRect.top >= 0) { - isPaginationScrolledPast = false; - } - updatePaginationStateFromObservers(); - }); - }, - { - threshold: [0, 1], - rootMargin: '0px' - } - ); - - // Set up Intersection Observer for table bottom - // Create a sentinel element at the bottom of the table to observe - const tableBottomSentinel = document.createElement('div'); - tableBottomSentinel.style.position = 'absolute'; - tableBottomSentinel.style.bottom = '0'; - tableBottomSentinel.style.left = '0'; - tableBottomSentinel.style.width = '1px'; - tableBottomSentinel.style.height = '1px'; - tableBottomSentinel.style.pointerEvents = 'none'; - table.style.position = 'relative'; - table.appendChild(tableBottomSentinel); - - const tableBottomObserver = new IntersectionObserver( - (entries) => { - entries.forEach((entry) => { - isTableBottomVisible = entry.isIntersecting; - updatePaginationStateFromObservers(); - }); - }, - { - threshold: [0], - rootMargin: '-100px 0px 0px 0px' - } - ); - - // Start observing - paginationObserver.observe(pagination); - tableBottomObserver.observe(tableBottomSentinel); - - // Throttled scroll handler - only executes nav boundary check when not already throttled - const handleScroll = () => { - if (isScrollThrottled) return; - - isScrollThrottled = true; - - // Use requestAnimationFrame for smooth updates - requestAnimationFrame(() => { - checkNavBoundary(bottomValue); - }); - - // Throttle for 100ms to reduce continuous execution - scrollThrottleTimer = setTimeout(() => { - isScrollThrottled = false; - }, 100); - }; - - // Resize handler - recalculate positions and check boundaries - const handleResize = () => { - const { bottomValue: newBottomValue } = calculateNavPosition(); - checkNavBoundary(newBottomValue); - }; - - window.addEventListener('scroll', handleScroll); - window.addEventListener('resize', handleResize); - - // Initial updates - updateSliderState(); - checkNavBoundary(bottomValue); - updatePaginationStateFromObservers(); - - // Cleanup - return () => { - if (scrollThrottleTimer) { - clearTimeout(scrollThrottleTimer); - } - tableSlider.removeEventListener('scroll', updateSliderState); - window.removeEventListener('scroll', handleScroll); - window.removeEventListener('resize', handleResize); - paginationObserver.disconnect(); - tableBottomObserver.disconnect(); - if (tableBottomSentinel && tableBottomSentinel.parentNode) { - tableBottomSentinel.parentNode.removeChild(tableBottomSentinel); - } - }; - }, []); - - // Use the clicked plugin for header/main content, but always use freePlugin for first column - const imageURL = (typeof window.onecomWpVars !== "undefined" && window.onecomWpVars?.imageURL) || assetBase; - const iconSrc = plugin.thumbnail || `${assetBase}assets/icons/placeholder.svg`; - const mainImage = plugin.bannerUrl || plugin.image || plugin.thumbnail || 'https://gravity.group.one/guide-images/product-image@2x.png'; - - // Extract data with fallbacks for free version (first column - always seo-by-rank-math) - const title = freePlugin?.name || plugin.name || 'Product'; - const description = freePlugin?.i18n?.description || freePlugin?.i18n?.subtitle; - const subtitle = freePlugin?.i18n?.subtitle; - - // Extract data for pro version (second column - always rank-math-pro) - const proTitle = proPlugin?.name || 'Rank Math Pro'; - const proDescription = proPlugin?.i18n?.subtitle || proPlugin?.i18n?.description; - const proPrice = proPlugin ? formatPluginPrice(proPlugin, uiI18n?.labels?.free || 'Free', uiI18n) : ''; - - // Check if proPrice is "Free until renewal" (rebate amount is 0) - const isProFreeUntilRenewal = proPrice === (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal'); - - // Extract full price for pro plugin using common utility function - const proFullPriceAmount = getFullPrice(proPlugin); - - // Helper function to extract numbered properties dynamically from i18n object - const extractNumberedProps = (obj, baseName) => { - if (!obj || typeof obj !== 'object') return []; - const results = []; - let i = 1; - while (obj[`${baseName}${i}`]) { - const value = obj[`${baseName}${i}`]; - if (value && value.trim() !== '') { - results.push(value); - } - i++; - } - return results; + window.addEventListener('scroll', handleScroll); + window.addEventListener('resize', handleResize); + + // Initial updates + updateSliderState(); + checkNavBoundary(bottomValue); + updatePaginationStateFromObservers(); + + // Cleanup + return () => { + if (scrollThrottleTimer) { + clearTimeout(scrollThrottleTimer); + } + tableSlider.removeEventListener('scroll', updateSliderState); + window.removeEventListener('scroll', handleScroll); + window.removeEventListener('resize', handleResize); + paginationObserver.disconnect(); + tableBottomObserver.disconnect(); + if (tableBottomSentinel && tableBottomSentinel.parentNode) { + tableBottomSentinel.parentNode.removeChild(tableBottomSentinel); + } }; + }, []); - // Extract key benefits from i18n (use freePlugin's i18n if available, otherwise plugin's i18n) - const i18nSource = freePlugin?.i18n || plugin.i18n; - const benefitsFromI18n = extractNumberedProps(i18nSource, 'keyBenefitContent'); - - // Extract key features separately for both free and pro plugins - const freeKeyFeatures = extractNumberedProps(freePlugin?.i18n, 'keyFeatureContent'); - const proKeyFeatures = extractNumberedProps(proPlugin?.i18n, 'keyFeatureContent'); - - // Determine the maximum number of features to display all from both plugins - const maxFeatures = Math.max(freeKeyFeatures.length, proKeyFeatures.length); - - // Extract core features (title/content pairs) from i18n - const coreFeaturesFromI18n = []; - if (i18nSource && typeof i18nSource === 'object') { - let i = 1; - while (i18nSource[`coreFeatureTitle${i}`] || i18nSource[`coreFeatureContent${i}`]) { - const title = i18nSource[`coreFeatureTitle${i}`]; - const content = i18nSource[`coreFeatureContent${i}`]; - if (title && title.trim() !== '' && content && content.trim() !== '') { - coreFeaturesFromI18n.push({ name: title, desc: content }); - } - i++; - } + // Scroll to top when component mounts or plugin changes + useEffect(() => { + if (plugin) { + window.scrollTo(0, 0); + } + }, [plugin]); + + // Clear banners when component mounts (handles case when user returns via browser back button) + useEffect(() => { + if (freePlugin || proPlugin) { + // Clear any existing banners when ProductDetail mounts + // BUT don't clear them if they are for the current plugin (e.g. just activated and reloaded) + setNoticeState((prev) => { + return prev.visible && + (prev.pluginSlug === freePlugin?.slug || prev.pluginSlug === proPlugin?.slug) + ? prev + : { visible: false, type: null, pluginSlug: null }; + }); + setErrorState((prev) => { + return prev.visible && + (prev.pluginSlug === freePlugin?.slug || prev.pluginSlug === proPlugin?.slug) + ? prev + : { visible: false, type: null, pluginSlug: null }; + }); } + }, [freePlugin, proPlugin, setNoticeState, setErrorState]); + + // Hide banners when user navigates back and returns to the product detail page + useEffect(() => { + const handlePopState = () => { + // Clear notice and error state when navigating via browser back/forward + setNoticeState({ visible: false, type: null, pluginSlug: null }); + setErrorState({ visible: false, type: null, pluginSlug: null }); + }; - // Use only i18n data - no fallbacks - const benefits = benefitsFromI18n; - const coreFeatures = coreFeaturesFromI18n; - - const content = ( -
-
- - - -
-
-

Rank Math

-

{description}

-
-
- - - Product image - -
-
- -
-
-
-
- - -
-
-
-
-
-
-
-

{`${title} free`}

-

{subtitle}

-
-
-
-
- {uiI18n?.labels?.free || 'Free'} -
-
- {useWPHandlers && freePlugin ? ( - - ) : ( - freePlugin?.download && ( - - ) - )} -
-
-
-
Recommended
-
-

{proTitle}

-

{proDescription.substring(0, 120)}{proDescription.length > 120 ? '…' : ''}

-
-
-
-
- {proPrice}{proPrice && !isProFreeUntilRenewal && `,-`} - {proPrice && !isProFreeUntilRenewal && /{uiI18n?.labels?.timeMonth}} -
- {proPrice && -
-
{uiI18n.labels.afterThat} [{proFullPriceAmount}]/{uiI18n?.labels?.timeMonth}
-
} -
- {useWPHandlers && proPlugin ? ( - - ) : ( - - )} -
-
-
-
- {maxFeatures > 0 && ( -
-
-
-

{uiI18n?.keyFeatureHeading || freePlugin?.i18n?.keyFeatureHeading || 'Key features'}

-
-
-

{uiI18n?.keyFeatureHeading || proPlugin?.i18n?.keyFeatureHeading || 'Key features'}

-
-
- {Array.from({ length: maxFeatures }).map((_, i) => ( -
-
- {freeKeyFeatures[i] || ''} -
-
- {proKeyFeatures[i] || ''} -
-
- ))} -
- )} -
+ window.addEventListener('popstate', handlePopState); + return () => window.removeEventListener('popstate', handlePopState); + }, [setNoticeState, setErrorState]); + + // Show skeleton loaders while loading (even if plugin is null) + if (loading) { + const skeletonContent = ( +
+
+ + + {/* Header skeleton - single skeleton loader */} +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ {/* Benefits skeleton - keep structure, add skeletons */} +
+
+
+
    + {[...Array(3)].map((_, i) => ( +
  • +
    +
  • + ))} +
+
+
+ + {/* Core Features skeleton - keep structure, add skeletons */} +
+
+
+
+ {[...Array(3)].map((_, i) => ( +
+
+
+
+
+ ))} +
+
+
+
+
+ ); + return usePortal ? createPortal(skeletonContent, document.body) : skeletonContent; + } + + // If not loading and plugin is null, return null + if (!plugin) return null; + + // Navigation button click handlers + const handlePrevClick = () => { + const tableSlider = tableSliderRef.current; + if (!tableSlider) return; + + const slideWidth = tableSlider.offsetWidth; + tableSlider.scrollTo({ + left: tableSlider.scrollLeft - slideWidth, + behavior: 'smooth', + }); + }; + + const handleNextClick = () => { + const tableSlider = tableSliderRef.current; + if (!tableSlider) return; + + const slideWidth = tableSlider.offsetWidth; + tableSlider.scrollTo({ + left: tableSlider.scrollLeft + slideWidth, + behavior: 'smooth', + }); + }; + + // Dot click handler + const handleDotClick = (slideIndex) => { + const tableSlider = tableSliderRef.current; + if (!tableSlider) return; + + const slideWidth = tableSlider.offsetWidth; + tableSlider.scrollTo({ + left: slideWidth * slideIndex, + behavior: 'smooth', + }); + }; + + // Use the clicked plugin for header/main content, but always use freePlugin for first column + const imageURL = + (typeof window.onecomWpVars !== 'undefined' && window.onecomWpVars?.imageURL) || assetBase; + const iconSrc = plugin.thumbnail || `${assetBase}assets/icons/placeholder.svg`; + const mainImage = + plugin.bannerUrl || + plugin.image || + plugin.thumbnail || + 'https://gravity.group.one/guide-images/product-image@2x.png'; + + // Extract data with fallbacks for free version (first column - always seo-by-rank-math) + const title = freePlugin?.name || plugin.name || 'Product'; + const description = freePlugin?.i18n?.description || freePlugin?.i18n?.subtitle; + const subtitle = freePlugin?.i18n?.subtitle; + + // Extract data for pro version (second column - always rank-math-pro) + const proTitle = proPlugin?.name || 'Rank Math Pro'; + const proDescription = proPlugin?.i18n?.subtitle || proPlugin?.i18n?.description; + const proPrice = proPlugin + ? formatPluginPrice(proPlugin, uiI18n?.labels?.free || 'Free', uiI18n) + : ''; + + // Check if proPrice is "Free until renewal" (rebate amount is 0) + const isProFreeUntilRenewal = + proPrice === (uiI18n?.labels?.freeUntilRenewal || 'Free until renewal'); + + // Extract full price for pro plugin using common utility function + const proFullPriceAmount = getFullPrice(proPlugin); + + // Helper function to extract numbered properties dynamically from i18n object + const extractNumberedProps = (obj, baseName) => { + if (!obj || typeof obj !== 'object') return []; + const results = []; + let i = 1; + while (obj[`${baseName}${i}`]) { + const value = obj[`${baseName}${i}`]; + if (value && value.trim() !== '') { + results.push(value); + } + i++; + } + return results; + }; + + // Extract key benefits from i18n (use freePlugin's i18n if available, otherwise plugin's i18n) + const i18nSource = freePlugin?.i18n || plugin.i18n; + const benefitsFromI18n = extractNumberedProps(i18nSource, 'keyBenefitContent'); + + // Extract key features separately for both free and pro plugins + const freeKeyFeatures = extractNumberedProps(freePlugin?.i18n, 'keyFeatureContent'); + const proKeyFeatures = extractNumberedProps(proPlugin?.i18n, 'keyFeatureContent'); + + // Determine the maximum number of features to display all from both plugins + const maxFeatures = Math.max(freeKeyFeatures.length, proKeyFeatures.length); + + // Extract core features (title/content pairs) from i18n + const coreFeaturesFromI18n = []; + if (i18nSource && typeof i18nSource === 'object') { + let i = 1; + while (i18nSource[`coreFeatureTitle${i}`] || i18nSource[`coreFeatureContent${i}`]) { + const title = i18nSource[`coreFeatureTitle${i}`]; + const content = i18nSource[`coreFeatureContent${i}`]; + if (title && title.trim() !== '' && content && content.trim() !== '') { + coreFeaturesFromI18n.push({ name: title, desc: content }); + } + i++; + } + } + + // Use only i18n data - no fallbacks + const benefits = benefitsFromI18n; + const coreFeatures = coreFeaturesFromI18n; + + const content = ( +
+
+ + +
+
+

Rank Math

+

{description}

+
+
+ + + Rank Math + +
+
+ +
+
+
+
+ + +
+
+
+
+
+
+
+

{`${title} free`}

+

{subtitle}

+
+
+
+
+ + {uiI18n?.labels?.free || 'Free'} +
+
+ {useWPHandlers && freePlugin ? ( + + ) : ( + freePlugin?.download && ( + + ) + )}
-
-
- {[0, 1].map((slideIndex) => ( - handleDotClick(slideIndex)} - style={{ cursor: 'pointer' }} - > - ))} +
+
+
Recommended
+
+

{proTitle}

+

+ {proDescription.substring(0, 120)} + {proDescription.length > 120 ? '…' : ''} +

+
+
+
+
+ + {proPrice} + {proPrice && !isProFreeUntilRenewal && `,-`} + + {proPrice && !isProFreeUntilRenewal && ( + /{uiI18n?.labels?.timeMonth} + )}
+ {proPrice && ( +
+
+ {uiI18n.labels.afterThat} [{proFullPriceAmount}]/ + {uiI18n?.labels?.timeMonth} +
+
+ )} +
+ {useWPHandlers && proPlugin ? ( + + ) : ( + + )}
+
-
- -
- {benefits.length > 0 && ( -
-

{uiI18n?.benefitHeading || plugin.i18n?.benefitHeading || 'Key benefits'}

-
    - {benefits.map((b, i) =>
  • {b}
  • )} -
-
- )} -
- - {coreFeatures.length > 0 && ( -
-
-

{uiI18n?.featureOverviewHeading || plugin.i18n?.featureOverviewHeading || 'Core features overview'}

-
- {coreFeatures.map((cf, i) => ( -
-

{cf.name}

-

{cf.desc}

-
- ))} -
-
+
+ {maxFeatures > 0 && ( +
+
+
+

+ {uiI18n?.keyFeatureHeading || + freePlugin?.i18n?.keyFeatureHeading || + 'Key features'} +

+
+
+

+ {uiI18n?.keyFeatureHeading || + proPlugin?.i18n?.keyFeatureHeading || + 'Key features'} +

+
+
+ {Array.from({ length: maxFeatures }).map((_, i) => ( +
+
+ {freeKeyFeatures[i] || ''} +
+
+ {proKeyFeatures[i] || ''} +
+
+ ))}
- )} -
+ )} +
+
+
+
+
+ {[0, 1].map((slideIndex) => ( + + ))} +
+
+
+
+ +
+ {benefits.length > 0 && ( +
+

+ {uiI18n?.benefitHeading || plugin.i18n?.benefitHeading || 'Key benefits'} +

+
    + {benefits.map((b, i) => ( +
  • {b}
  • + ))} +
+
+ )}
- ); - return usePortal ? createPortal(content, document.body) : content; + {coreFeatures.length > 0 && ( +
+
+

+ {uiI18n?.featureOverviewHeading || + plugin.i18n?.featureOverviewHeading || + 'Core features overview'} +

+
+ {coreFeatures.map((cf, i) => ( +
+

{cf.name}

+

{cf.desc}

+
+ ))} +
+
+
+ )} +
+
+ ); + + return usePortal ? createPortal(content, document.body) : content; } diff --git a/frontend/src/components/SuccessNotice.jsx b/frontend/src/components/SuccessNotice.jsx index fab657e..a4d4235 100644 --- a/frontend/src/components/SuccessNotice.jsx +++ b/frontend/src/components/SuccessNotice.jsx @@ -1,106 +1,115 @@ -import React from "react"; -import { useMarketplace } from "../context/MarketplaceContext"; -import { trackButtonClick } from "../utils/mixpanelTracking"; -import { getPluginRedirectUrl, navigateToPluginUrl } from "../utils/redirectUrlHelper"; +import React from 'react'; +import { useMarketplace } from '../context/MarketplaceContext'; +import { trackButtonClick } from '../utils/mixpanelTracking'; +import { getPluginRedirectUrl, navigateToPluginUrl } from '../utils/redirectUrlHelper'; export default function SuccessNotice({ plugin }) { - const { - assetsBaseUrl, - noticeState, - setNoticeState, - handlePluginAction, - cancelReload, - uiI18n - } = useMarketplace(); + const { assetsBaseUrl, noticeState, setNoticeState, handlePluginAction, cancelReload, uiI18n } = + useMarketplace(); - if (!noticeState || !noticeState.visible || noticeState.pluginSlug !== plugin?.slug) { - return null; - } + if (!noticeState || !noticeState.visible || noticeState.pluginSlug !== plugin?.slug) { + return null; + } - const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== "undefined" && window.marketplaceConfig?.assetsBaseUrl) || ""; - const iconBase = assetBase ? `${assetBase}assets/` : ""; + const assetBase = + assetsBaseUrl || + (typeof window.marketplaceConfig !== 'undefined' && window.marketplaceConfig?.assetsBaseUrl) || + ''; + const iconBase = assetBase ? `${assetBase}assets/` : ''; - const handleClose = () => { - setNoticeState({ visible: false, type: null, pluginSlug: null }); - sessionStorage.removeItem('mp_success_notice'); - }; + const handleClose = () => { + setNoticeState({ visible: false, type: null, pluginSlug: null }); + sessionStorage.removeItem('mp_success_notice'); + }; - const handleActivate = () => { - handlePluginAction("activate", plugin, 'product_detail'); - }; + const handleActivate = () => { + handlePluginAction('activate', plugin, 'product_detail'); + }; - const handleManage = () => { - // Track the Get Started button click - trackButtonClick({ - buttonName: 'Get started', - buttonAction: 'manage_product', - plugin: plugin, - context: { - product_slug: plugin.slug, - product_name: plugin.name, - has_redirect_url: !!(plugin.redirectUrl && plugin.redirectUrl.trim() !== ''), - has_onboarding_url: !!(plugin.onboardingUrl && plugin.onboardingUrl.trim() !== ''), - } - }); + const handleManage = () => { + // Track the Get Started button click + trackButtonClick({ + buttonName: 'Get started', + buttonAction: 'manage_product', + plugin: plugin, + context: { + product_slug: plugin.slug, + product_name: plugin.name, + has_redirect_url: !!(plugin.redirectUrl && plugin.redirectUrl.trim() !== ''), + has_onboarding_url: !!(plugin.onboardingUrl && plugin.onboardingUrl.trim() !== ''), + }, + }); - // Cancel the scheduled reload since user is navigating manually - cancelReload(); + // Cancel the scheduled reload since user is navigating manually + cancelReload(); - const redirectUrl = getPluginRedirectUrl(plugin, true); - navigateToPluginUrl(redirectUrl); - }; + const redirectUrl = getPluginRedirectUrl(plugin, true); + navigateToPluginUrl(redirectUrl); + }; - const isInstalled = noticeState.type === 'installed'; - const isActivated = noticeState.type === 'activated'; + const isInstalled = noticeState.type === 'installed'; + const isActivated = noticeState.type === 'activated'; - // Helper function to replace {0} with plugin name - const formatMessage = (message, pluginName) => { - if (!message) return ''; - return message.replace('{0}', pluginName || ''); - }; + // Helper function to replace {0} with plugin name + const formatMessage = (message, pluginName) => { + if (!message) return ''; + return message.replace('{0}', pluginName || ''); + }; - const pluginName = plugin?.name || ''; + const pluginName = plugin?.name || ''; - return ( -
- Success -
-
- {isInstalled && formatMessage(uiI18n?.notifications?.pluginInstalled || 'Plugin was installed.', pluginName)} - {isActivated && formatMessage(uiI18n?.notifications?.pluginActivated || 'Plugin was activated.', pluginName)} -
-

- {isInstalled && (uiI18n?.notifications?.activateNow || 'Activate it now to start using it.')} - {isActivated && formatMessage(uiI18n?.notifications?.manageInMyProducts || '{0} plugin was activated for this site. You can manage it on the My products page.', pluginName)} -

-
- {isInstalled && ( - + return ( +
+ Success +
+
+ {isInstalled && + formatMessage( + uiI18n?.notifications?.pluginInstalled || 'Plugin was installed.', + pluginName )} - {isActivated && ( - + {isActivated && + formatMessage( + uiI18n?.notifications?.pluginActivated || 'Plugin was activated.', + pluginName )} -
- ); +

+ {isInstalled && + (uiI18n?.notifications?.activateNow || 'Activate it now to start using it.')} + {isActivated && + formatMessage( + uiI18n?.notifications?.manageInMyProducts || + '{0} plugin was activated for this site. You can manage it on the My products page.', + pluginName + )} +

+
+ {isInstalled && ( + + )} + {isActivated && ( + + )} + +
+ ); } diff --git a/frontend/src/components/SuccessToast.jsx b/frontend/src/components/SuccessToast.jsx index af8519b..a03596f 100644 --- a/frontend/src/components/SuccessToast.jsx +++ b/frontend/src/components/SuccessToast.jsx @@ -1,68 +1,74 @@ -import React, { useEffect } from "react"; -import { useMarketplace } from "../context/MarketplaceContext"; +import React, { useEffect } from 'react'; +import { useMarketplace } from '../context/MarketplaceContext'; export default function SuccessToast({ plugin: propPlugin }) { - const { - assetsBaseUrl, - successState, - setSuccessState, - uiI18n, - plugins - } = useMarketplace(); + const { assetsBaseUrl, successState, setSuccessState, uiI18n, plugins } = useMarketplace(); - const plugin = propPlugin || plugins.find(p => p.slug === successState.pluginSlug); - const isVisible = successState && successState.visible && successState.pluginSlug === plugin?.slug; + const plugin = propPlugin || plugins.find((p) => p.slug === successState.pluginSlug); + const isVisible = + successState && successState.visible && successState.pluginSlug === plugin?.slug; - useEffect(() => { - if (isVisible) { - const timer = setTimeout(() => { - handleClose(); - }, 5000); + const handleClose = React.useCallback(() => { + setSuccessState({ visible: false, type: null, pluginSlug: null }); + }, [setSuccessState]); - return () => clearTimeout(timer); - } - }, [isVisible]); + useEffect(() => { + if (isVisible) { + const timer = setTimeout(() => { + handleClose(); + }, 5000); - if (!isVisible) { - return null; + return () => clearTimeout(timer); } + }, [isVisible, handleClose]); - const assetBase = assetsBaseUrl || (typeof window.marketplaceConfig !== "undefined" && window.marketplaceConfig?.assetsBaseUrl) || ""; - const iconBase = assetBase ? `${assetBase}assets/` : ""; + const isActivated = successState.type === 'activate'; + const isDeactivated = successState.type === 'deactivate'; + const isDeleted = successState.type === 'delete'; - const handleClose = () => { - setSuccessState({ visible: false, type: null, pluginSlug: null }); - }; + // Helper function to replace {0} with plugin name + const formatMessage = (message, pluginName) => { + if (!message) return ''; + return message.replace('{0}', pluginName || ''); + }; - const isActivated = successState.type === 'activate'; - const isDeactivated = successState.type === 'deactivate'; - const isDeleted = successState.type === 'delete'; + const pluginName = plugin?.name || ''; - // Helper function to replace {0} with plugin name - const formatMessage = (message, pluginName) => { - if (!message) return ''; - return message.replace('{0}', pluginName || ''); - }; + const assetBase = + assetsBaseUrl || + (typeof window.marketplaceConfig !== 'undefined' && window.marketplaceConfig?.assetsBaseUrl) || + ''; + const iconBase = assetBase ? `${assetBase}assets/` : ''; - const pluginName = plugin?.name || ''; - - return ( -
-
- -
- {isActivated && formatMessage(uiI18n?.notifications?.pluginActivatedShort || "Plugin activated.", pluginName)} - {isDeactivated && formatMessage(uiI18n?.notifications?.pluginDeactivated || "Plugin deactivated.", pluginName)} - {isDeleted && formatMessage(uiI18n?.notifications?.pluginDeleted || "Plugin deleted successfully.", pluginName)} -
- -
+ return ( +
+
+ +
+ {isActivated && + formatMessage( + uiI18n?.notifications?.pluginActivatedShort || 'Plugin activated.', + pluginName + )} + {isDeactivated && + formatMessage( + uiI18n?.notifications?.pluginDeactivated || 'Plugin deactivated.', + pluginName + )} + {isDeleted && + formatMessage( + uiI18n?.notifications?.pluginDeleted || 'Plugin deleted successfully.', + pluginName + )}
- ); + +
+
+ ); } diff --git a/frontend/src/components/WpVersionErrorState.jsx b/frontend/src/components/WpVersionErrorState.jsx index 72ca2b7..8ef517a 100644 --- a/frontend/src/components/WpVersionErrorState.jsx +++ b/frontend/src/components/WpVersionErrorState.jsx @@ -1,34 +1,31 @@ -import React from "react"; -import { useMarketplace } from "../context/MarketplaceContext"; +import React from 'react'; +import { useMarketplace } from '../context/MarketplaceContext'; export default function WpVersionErrorState() { - const { uiI18n } = useMarketplace(); + const { uiI18n } = useMarketplace(); - const handleUpdateClick = () => { - window.location.href = typeof window !== "undefined" && window.marketplaceConfig?.wpConfig?.adminUrl - ? `${window.marketplaceConfig.wpConfig.adminUrl}update-core.php` - : "/wp-admin/update-core.php"; - }; + const handleUpdateClick = () => { + window.location.href = + typeof window !== 'undefined' && window.marketplaceConfig?.wpConfig?.adminUrl + ? `${window.marketplaceConfig.wpConfig.adminUrl}update-core.php` + : '/wp-admin/update-core.php'; + }; - const updateText = (uiI18n?.notifications?.updateWPText)?.replace("{0}", "6.2"); + const updateText = uiI18n?.notifications?.updateWPText?.replace('{0}', '6.2'); - return ( -
-
-
- {uiI18n?.notifications?.updateWPTitle} -
-

- {updateText} -

- -
-
- ); + return ( +
+
+
{uiI18n?.notifications?.updateWPTitle}
+

{updateText}

+ +
+
+ ); } diff --git a/frontend/src/components/normalised-plugins.jsx b/frontend/src/components/normalised-plugins.jsx index 6d058eb..56d940d 100644 --- a/frontend/src/components/normalised-plugins.jsx +++ b/frontend/src/components/normalised-plugins.jsx @@ -5,7 +5,10 @@ export function normalizePlugins(rawResponse) { if (!rawResponse || !rawResponse.data || !Array.isArray(rawResponse.data.catalog)) { // Log a clear error when the response is not supported // Keeping a minimal, non-crashing fallback of returning an empty object - console.error("Unsupported marketplace response shape. Expected { data: { catalog: [...] } }.", rawResponse); + console.error( + 'Unsupported marketplace response shape. Expected { data: { catalog: [...] } }.', + rawResponse + ); return { plugins: [], uiI18n: {}, locale: null }; } @@ -20,35 +23,34 @@ export function normalizePlugins(rawResponse) { // Prefer description coming from i18n.description, then fallback to description field const descriptionFromTextKeys = plugin?.i18n?.description; const description = - (typeof descriptionFromTextKeys === "string" && descriptionFromTextKeys) + typeof descriptionFromTextKeys === 'string' && descriptionFromTextKeys ? descriptionFromTextKeys - : (typeof plugin?.description === "object" && plugin.description !== null - ? (plugin.description["en-gb"] || Object.values(plugin.description)[0] || "") - : (plugin?.description || "") - ); + : typeof plugin?.description === 'object' && plugin.description !== null + ? plugin.description['en-gb'] || Object.values(plugin.description)[0] || '' + : plugin?.description || ''; - const download = plugin?.download || plugin?.download_url || plugin?.downloadUrl || ""; + const download = plugin?.download || plugin?.download_url || plugin?.downloadUrl || ''; // Author may be a string or an object { name, url } - const authorName = typeof plugin?.author === "object" && plugin.author !== null - ? (plugin.author.name || "") - : (plugin?.author || ""); - const authorUrl = typeof plugin?.author === "object" && plugin.author !== null - ? (plugin.author.url || "") - : ""; + const authorName = + typeof plugin?.author === 'object' && plugin.author !== null + ? plugin.author.name || '' + : plugin?.author || ''; + const authorUrl = + typeof plugin?.author === 'object' && plugin.author !== null ? plugin.author.url || '' : ''; - const priceAmount = typeof plugin?.price === "object" && plugin.price !== null - ? plugin.price.amount - : undefined; - const priceCurrency = typeof plugin?.price === "object" && plugin.price !== null - ? plugin.price.currency - : undefined; + const priceAmount = + typeof plugin?.price === 'object' && plugin.price !== null ? plugin.price.amount : undefined; + const priceCurrency = + typeof plugin?.price === 'object' && plugin.price !== null + ? plugin.price.currency + : undefined; return { ...plugin, - name: plugin?.name || "Unknown", - slug: plugin?.slug || "", - thumbnail: plugin?.thumbnail || "", + name: plugin?.name || 'Unknown', + slug: plugin?.slug || '', + thumbnail: plugin?.thumbnail || '', description, download, author: authorName, diff --git a/frontend/src/context/MarketplaceContext.jsx b/frontend/src/context/MarketplaceContext.jsx index 1b24d86..ed980bf 100644 --- a/frontend/src/context/MarketplaceContext.jsx +++ b/frontend/src/context/MarketplaceContext.jsx @@ -1,676 +1,745 @@ import React, { createContext, useContext, useState, useEffect, useCallback, useRef } from 'react'; -import { trackButtonClick, initializeMixpanel, enableMixpanel, disableMixpanel } from '../utils/mixpanelTracking'; +import { + trackButtonClick, + initializeMixpanel, + enableMixpanel, + disableMixpanel, +} from '../utils/mixpanelTracking'; import { isWpVersionSupported as isWpVersionSupportedHelper } from '../utils/wpVersionHelper'; const MarketplaceContext = createContext(null); export const MarketplaceProvider = ({ - children, - apiBaseUrl, - useWPHandlers, - wpConfig, - enableDefaultStyles, - assetsBaseUrl + children, + apiBaseUrl, + useWPHandlers, + wpConfig, + enableDefaultStyles, + assetsBaseUrl, }) => { - const [pluginInAction, setPluginInAction] = useState({}); - const [subscriptionStatus, setSubscriptionStatus] = useState({}); - const [isCheckingSubscription, setIsCheckingSubscription] = useState({}); - const [plugins, setPlugins] = useState([]); - const [uiI18n, setUiI18n] = useState({}); - const [loadingAction, setLoadingAction] = useState(''); - const [loadingPlugin, setLoadingPlugin] = useState(''); - const [noticeState, setNoticeState] = useState({ visible: false, type: null, pluginSlug: null }); - const [errorState, setErrorState] = useState({ visible: false, type: null, pluginSlug: null }); - const [successState, setSuccessState] = useState({ visible: false, type: null, pluginSlug: null }); - const [allPluginsActivated, setAllPluginsActivated] = useState(false); - const [catalogError, setCatalogError] = useState(false); - const [catalogLoading, setCatalogLoading] = useState(true); - - // State for tracking consent status - const [consentStatus, setConsentStatus] = useState(() => { - const initialConsent = typeof window !== "undefined" && window.marketplaceConfig?.data_consent_status; - // Convert to boolean: handle true, 'true', '1', 1 as true - return initialConsent === true || initialConsent === 'true' || initialConsent === '1' || initialConsent === 1; - }); - - // Use ref to track which subscriptions have been checked to avoid recreation of fetchSubscriptionStatus - const checkedSubscriptionsRef = useRef({}); - - // Use ref to track reload timeout so it can be cancelled if user navigates - const reloadTimeoutRef = useRef(null); - - const brand = typeof window !== "undefined" && window.marketplaceConfig?.brand; - const isOnecomBrand = brand === "onecom"; - - // Get active plugin slugs from WordPress config - const activePlugins = typeof window !== "undefined" && window.marketplaceConfig?.activePlugins - ? window.marketplaceConfig.activePlugins - : []; - - // Get active theme author from WordPress config - const activeThemeAuthor = typeof window !== "undefined" && window.marketplaceConfig?.activeThemeAuthor - ? window.marketplaceConfig.activeThemeAuthor - : ""; - - // Get WP version from WordPress config - const wpVersion = typeof window !== "undefined" && window.marketplaceConfig?.wpVersion - ? window.marketplaceConfig.wpVersion - : ""; - - useEffect(() => { - const persistedNotice = sessionStorage.getItem('mp_success_notice'); - if (persistedNotice) { - try { - const noticeData = JSON.parse(persistedNotice); - setNoticeState({ - visible: noticeData.visible, - type: noticeData.type, - pluginSlug: noticeData.pluginSlug - }); - setSuccessState({ - visible: noticeData.visible, - type: noticeData.successType, - pluginSlug: noticeData.pluginSlug - }); + const [pluginInAction, setPluginInAction] = useState({}); + const [subscriptionStatus, setSubscriptionStatus] = useState({}); + const [isCheckingSubscription, setIsCheckingSubscription] = useState({}); + const [plugins, setPlugins] = useState([]); + const [uiI18n, setUiI18n] = useState({}); + const [loadingAction, setLoadingAction] = useState(''); + const [loadingPlugin, setLoadingPlugin] = useState(''); + const [noticeState, setNoticeState] = useState({ visible: false, type: null, pluginSlug: null }); + const [errorState, setErrorState] = useState({ visible: false, type: null, pluginSlug: null }); + const [successState, setSuccessState] = useState({ + visible: false, + type: null, + pluginSlug: null, + }); + const [allPluginsActivated, setAllPluginsActivated] = useState(false); + const [catalogError, setCatalogError] = useState(false); + const [catalogLoading, setCatalogLoading] = useState(true); + + // State for tracking consent status + const [consentStatus, setConsentStatus] = useState(() => { + const initialConsent = + typeof window !== 'undefined' && window.marketplaceConfig?.data_consent_status; + // Convert to boolean: handle true, 'true', '1', 1 as true + return ( + initialConsent === true || + initialConsent === 'true' || + initialConsent === '1' || + initialConsent === 1 + ); + }); + + // Use ref to track which subscriptions have been checked to avoid recreation of fetchSubscriptionStatus + const checkedSubscriptionsRef = useRef({}); + + // Use ref to track reload timeout so it can be cancelled if user navigates + const reloadTimeoutRef = useRef(null); + + const brand = typeof window !== 'undefined' && window.marketplaceConfig?.brand; + const isOnecomBrand = brand === 'onecom'; + + // Get active plugin slugs from WordPress config + const activePlugins = React.useMemo(() => { + return typeof window !== 'undefined' && window.marketplaceConfig?.activePlugins + ? window.marketplaceConfig.activePlugins + : []; + }, []); + + // Get active theme author from WordPress config + const activeThemeAuthor = + typeof window !== 'undefined' && window.marketplaceConfig?.activeThemeAuthor + ? window.marketplaceConfig.activeThemeAuthor + : ''; + + // Get WP version from WordPress config + const wpVersion = + typeof window !== 'undefined' && window.marketplaceConfig?.wpVersion + ? window.marketplaceConfig.wpVersion + : ''; + + useEffect(() => { + const persistedNotice = sessionStorage.getItem('mp_success_notice'); + if (persistedNotice) { + try { + const noticeData = JSON.parse(persistedNotice); + setNoticeState({ + visible: noticeData.visible, + type: noticeData.type, + pluginSlug: noticeData.pluginSlug, + }); + setSuccessState({ + visible: noticeData.visible, + type: noticeData.successType, + pluginSlug: noticeData.pluginSlug, + }); + + // Schedule clearing from sessionStorage AFTER the notice is set in state + // and the components have had a chance to mount and check it. + // We use a small timeout to ensure it stays in sessionStorage long enough + // for ProductDetail.jsx mount effect to see it. + setTimeout(() => { + sessionStorage.removeItem('mp_success_notice'); + }, 100); + } catch (e) { + console.error('Error parsing persisted success notice', e); + } + } + }, []); + + // Initialize Mixpanel on mount and monitor consent changes + // Uses useEffect to ensure Mixpanel only initializes when consent is given + useEffect(() => { + // Initialize Mixpanel on component mount based on initial consent status + if (consentStatus === true) { + initializeMixpanel(); + } - // Schedule clearing from sessionStorage AFTER the notice is set in state - // and the components have had a chance to mount and check it. - // We use a small timeout to ensure it stays in sessionStorage long enough - // for ProductDetail.jsx mount effect to see it. - setTimeout(() => { - sessionStorage.removeItem('mp_success_notice'); - }, 100); - } catch (e) { - console.error('Error parsing persisted success notice', e); - } - } - }, []); - - // Initialize Mixpanel on mount and monitor consent changes - // Uses useEffect to ensure Mixpanel only initializes when consent is given - useEffect(() => { - // Initialize Mixpanel on component mount based on initial consent status - if (consentStatus === true) { - initializeMixpanel(); + // Set up listener for consent changes from plugin + const handleConsentChange = (e) => { + const newConsentStatus = + e.detail?.data_consent_status !== undefined ? e.detail.data_consent_status : false; + + // Update state + setConsentStatus(newConsentStatus); + + // Handle Mixpanel based on new consent status + if (newConsentStatus === true) { + // Consent granted - enable Mixpanel + // Update window.marketplaceConfig consent status + // Note: mixpanel config (token, globalProperties, distinctId) is always sent by PHP + // regardless of consent status, so we can use it directly + if (typeof window !== 'undefined' && window.marketplaceConfig) { + window.marketplaceConfig.data_consent_status = true; } - // Set up listener for consent changes from plugin - const handleConsentChange = (e) => { - const newConsentStatus = e.detail?.data_consent_status !== undefined ? e.detail.data_consent_status : false; - - // Update state - setConsentStatus(newConsentStatus); - - // Handle Mixpanel based on new consent status - if (newConsentStatus === true) { - // Consent granted - enable Mixpanel - // Update window.marketplaceConfig consent status - // Note: mixpanel config (token, globalProperties, distinctId) is always sent by PHP - // regardless of consent status, so we can use it directly - if (typeof window !== "undefined" && window.marketplaceConfig) { - window.marketplaceConfig.data_consent_status = true; - } - - // Enable Mixpanel - it will read the config from window.marketplaceConfig - enableMixpanel(); - } else { - - // Update window.marketplaceConfig - if (typeof window !== "undefined" && window.marketplaceConfig) { - window.marketplaceConfig.data_consent_status = false; - // Keep mixpanel config available for when consent is granted again - } - - disableMixpanel(); - } - }; - - // Listen for custom consent change event from plugin (same page) - window.addEventListener('onConsentStatusChanged', handleConsentChange); - - // Listen for localStorage changes (cross-page communication) - const handleStorageChange = (e) => { - // Only handle changes to our consent key - if (e.key === 'onecom_data_consent_status') { - const newConsentStatus = e.newValue === '1'; + // Enable Mixpanel - it will read the config from window.marketplaceConfig + enableMixpanel(); + } else { + // Update window.marketplaceConfig + if (typeof window !== 'undefined' && window.marketplaceConfig) { + window.marketplaceConfig.data_consent_status = false; + // Keep mixpanel config available for when consent is granted again + } - // Trigger the same handler with the new consent status - handleConsentChange({ detail: { data_consent_status: newConsentStatus } }); - } - }; + disableMixpanel(); + } + }; - window.addEventListener('storage', handleStorageChange); + // Listen for custom consent change event from plugin (same page) + window.addEventListener('onConsentStatusChanged', handleConsentChange); - // Cleanup on unmount - return () => { - window.removeEventListener('onConsentStatusChanged', handleConsentChange); - window.removeEventListener('storage', handleStorageChange); - }; - }, []); // Empty dependency array - only run on mount/unmount + // Listen for localStorage changes (cross-page communication) + const handleStorageChange = (e) => { + // Only handle changes to our consent key + if (e.key === 'onecom_data_consent_status') { + const newConsentStatus = e.newValue === '1'; - // Fetch subscription status for special plugins (wp-rocket, rank-math-pro) - const fetchSubscriptionStatus = useCallback(async (pluginSlug) => { - if (!isOnecomBrand) return; + // Trigger the same handler with the new consent status + handleConsentChange({ detail: { data_consent_status: newConsentStatus } }); + } + }; - if (!isSpecialPlugin(pluginSlug)) return; + window.addEventListener('storage', handleStorageChange); - // Mark as being checked - setIsCheckingSubscription(prev => ({ ...prev, [pluginSlug]: true })); + // Cleanup on unmount + return () => { + window.removeEventListener('onConsentStatusChanged', handleConsentChange); + window.removeEventListener('storage', handleStorageChange); + }; + }, [consentStatus]); // Re-run if consentStatus changes to properly update listeners - try { - const ajaxUrl = typeof window.marketplaceConfig !== "undefined" && window.marketplaceConfig?.wpConfig?.ajaxUrl; - if (!ajaxUrl) { - setIsCheckingSubscription(prev => ({ ...prev, [pluginSlug]: false })); - return; - } + // Fetch subscription status for special plugins (wp-rocket, rank-math-pro) + const isSpecialPlugin = useCallback((pluginSlug) => { + return pluginSlug === 'wp-rocket' || pluginSlug === 'seo-by-rank-math-pro'; + }, []); - const formData = new FormData(); - formData.append('action', 'get_addon_purchase_status'); - formData.append('addon_purchase_check', 'true'); - formData.append('addon_slug', pluginSlug); + const fetchSubscriptionStatus = useCallback( + async (pluginSlug) => { + if (!isOnecomBrand) return; - const res = await fetch(ajaxUrl, { - method: 'POST', - body: formData - }); + if (!isSpecialPlugin(pluginSlug)) return; - const json = await res.json(); + // Mark as being checked + setIsCheckingSubscription((prev) => ({ ...prev, [pluginSlug]: true })); - setSubscriptionStatus(prev => ({ ...prev, [pluginSlug]: json.is_purchased })); - } catch (e) { - setSubscriptionStatus(prev => ({ ...prev, [pluginSlug]: false })); - } finally { - setIsCheckingSubscription(prev => ({ ...prev, [pluginSlug]: false })); + try { + const ajaxUrl = + typeof window.marketplaceConfig !== 'undefined' && + window.marketplaceConfig?.wpConfig?.ajaxUrl; + if (!ajaxUrl) { + setIsCheckingSubscription((prev) => ({ ...prev, [pluginSlug]: false })); + return; } - }, [isOnecomBrand]); - // Function to cancel scheduled reload (called when user clicks "Get Started") - const cancelReload = useCallback(() => { - if (reloadTimeoutRef.current) { - clearTimeout(reloadTimeoutRef.current); - reloadTimeoutRef.current = null; - } - sessionStorage.removeItem('mp_success_notice'); - }, []); - - const isSpecialPlugin = useCallback((pluginSlug) => { - return pluginSlug === "wp-rocket" || pluginSlug === "seo-by-rank-math-pro"; - }, []); - - const isWpVersionSupported = useCallback((minVersion) => { - return isWpVersionSupportedHelper(wpVersion, minVersion); - }, [wpVersion]); - - const shouldShowProvision = useCallback((plugin) => { - if (!plugin || !isOnecomBrand) return false; - return isSpecialPlugin(plugin.slug) && !plugin.installed && subscriptionStatus[plugin.slug] === true; - }, [isOnecomBrand, subscriptionStatus, isSpecialPlugin]); - - // Helper function to check if a plugin should be visible based on its rules - const shouldShowPlugin = useCallback((plugin) => { - // If plugin has no rules, show it by default - if (!plugin.rules) { - return true; - } + const formData = new FormData(); + formData.append('action', 'get_addon_purchase_status'); + formData.append('addon_purchase_check', 'true'); + formData.append('addon_slug', pluginSlug); + + const res = await fetch(ajaxUrl, { + method: 'POST', + body: formData, + }); + + const json = await res.json(); + + setSubscriptionStatus((prev) => ({ ...prev, [pluginSlug]: json.is_purchased })); + } catch (e) { + setSubscriptionStatus((prev) => ({ ...prev, [pluginSlug]: false })); + } finally { + setIsCheckingSubscription((prev) => ({ ...prev, [pluginSlug]: false })); + } + }, + [isOnecomBrand, isSpecialPlugin] + ); + + const isWpVersionSupported = useCallback( + (minVersion) => { + return isWpVersionSupportedHelper(wpVersion, minVersion); + }, + [wpVersion] + ); + + const shouldShowProvision = useCallback( + (plugin) => { + if (!plugin || !isOnecomBrand) return false; + return ( + isSpecialPlugin(plugin.slug) && + !plugin.installed && + subscriptionStatus[plugin.slug] === true + ); + }, + [isOnecomBrand, subscriptionStatus, isSpecialPlugin] + ); + + // Helper function to check if a plugin should be visible based on its rules + const shouldShowPlugin = useCallback( + (plugin) => { + // If plugin has no rules, show it by default + if (!plugin.rules) { + return true; + } - // Check mustHavePlugins rule - if (plugin.rules.mustHavePlugins && Array.isArray(plugin.rules.mustHavePlugins)) { - // If the array is empty, no requirements exist, so show the plugin - if (plugin.rules.mustHavePlugins.length === 0) { - return true; - } + // Check mustHavePlugins rule + if (plugin.rules.mustHavePlugins && Array.isArray(plugin.rules.mustHavePlugins)) { + // If the array is empty, no requirements exist, so show the plugin + if (plugin.rules.mustHavePlugins.length === 0) { + return true; + } - // Plugin should be visible if ANY of the required plugins is active - const hasRequiredPlugin = plugin.rules.mustHavePlugins.some(requiredSlug => - activePlugins.includes(requiredSlug) - ); + // Plugin should be visible if ANY of the required plugins is active + const hasRequiredPlugin = plugin.rules.mustHavePlugins.some((requiredSlug) => + activePlugins.includes(requiredSlug) + ); - // If mustHavePlugins rule exists but no required plugin is active, hide the plugin - if (!hasRequiredPlugin) { - return false; - } + // If mustHavePlugins rule exists but no required plugin is active, hide the plugin + if (!hasRequiredPlugin) { + return false; } - - // Check mustHaveThemesByAuthor rule - if (plugin.rules.mustHaveThemesByAuthor && typeof plugin.rules.mustHaveThemesByAuthor === 'string') { - // Plugin should be visible only if the active theme author matches the required author - const requiredAuthor = plugin.rules.mustHaveThemesByAuthor; - if (activeThemeAuthor !== requiredAuthor) { - return false; - } + } + + // Check mustHaveThemesByAuthor rule + if ( + plugin.rules.mustHaveThemesByAuthor && + typeof plugin.rules.mustHaveThemesByAuthor === 'string' + ) { + // Plugin should be visible only if the active theme author matches the required author + const requiredAuthor = plugin.rules.mustHaveThemesByAuthor; + if (activeThemeAuthor !== requiredAuthor) { + return false; } - - // Add support for other rule types here in the future - // For now, if all rules pass (or don't exist), show the plugin - return true; - }, [activePlugins, activeThemeAuthor]); - - // Handle plugin actions (install, activate, deactivate) - const handlePluginAction = useCallback(async (action, plugin, source = '') => { - // Check if this is Imagify plugin activation (handles 302 redirect case) - const isImagifyActivation = action === 'activate' && plugin.slug === 'imagify'; - - setPluginInAction(prev => ({ ...prev, [plugin.slug]: true })); - - // Use ref to track if action was successful (to prevent finally block from clearing pluginInAction) - let actionSuccessful = false; - - // Set loading state for overlay using API response keys - const pluginName = plugin.name || plugin.slug; - let loadingMessage = ''; - - if (action === 'activate') { - const activatingMsg = uiI18n?.notifications?.activating || 'Activating {0}'; - loadingMessage = activatingMsg.replace('{0}', pluginName) + '...'; - } else if (action === 'deactivate') { - const deactivatingMsg = uiI18n?.notifications?.deactivating || 'Deactivating {0}'; - loadingMessage = deactivatingMsg.replace('{0}', pluginName) + '...'; - } else if (action === 'install') { - const installingMsg = uiI18n?.notifications?.installing || 'Installing {0}'; - loadingMessage = installingMsg.replace('{0}', pluginName) + '...'; - } else if (action === 'delete') { - const deletingMsg = uiI18n?.notifications?.deleting || 'Deleting {0}'; - loadingMessage = deletingMsg.replace('{0}', pluginName) + '...'; + } + + // Add support for other rule types here in the future + // For now, if all rules pass (or don't exist), show the plugin + return true; + }, + [activePlugins, activeThemeAuthor] + ); + + // Handle plugin actions (install, activate, deactivate) + const handlePluginAction = useCallback( + async (action, plugin, source = '') => { + // Check if this is Imagify plugin activation (handles 302 redirect case) + const isImagifyActivation = action === 'activate' && plugin.slug === 'imagify'; + + setPluginInAction((prev) => ({ ...prev, [plugin.slug]: true })); + + // Use ref to track if action was successful (to prevent finally block from clearing pluginInAction) + let actionSuccessful = false; + + // Set loading state for overlay using API response keys + const pluginName = plugin.name || plugin.slug; + let loadingMessage = ''; + + if (action === 'activate') { + const activatingMsg = uiI18n?.notifications?.activating || 'Activating {0}'; + loadingMessage = activatingMsg.replace('{0}', pluginName) + '...'; + } else if (action === 'deactivate') { + const deactivatingMsg = uiI18n?.notifications?.deactivating || 'Deactivating {0}'; + loadingMessage = deactivatingMsg.replace('{0}', pluginName) + '...'; + } else if (action === 'install') { + const installingMsg = uiI18n?.notifications?.installing || 'Installing {0}'; + loadingMessage = installingMsg.replace('{0}', pluginName) + '...'; + } else if (action === 'delete') { + const deletingMsg = uiI18n?.notifications?.deleting || 'Deleting {0}'; + loadingMessage = deletingMsg.replace('{0}', pluginName) + '...'; + } else { + // Fallback for other actions + const actionText = + action.charAt(0).toUpperCase() + + (action.endsWith('e') ? action.slice(1, -1) : action.slice(1)) + + 'ing'; + loadingMessage = `${actionText} ${pluginName}`; + } + + setLoadingAction(loadingMessage); + setLoadingPlugin(''); + + // For Imagify, use setTimeout to allow React to render the loading overlay first + if (isImagifyActivation) { + // Build URL for activation + let url = `${apiBaseUrl}${action}/${plugin.slug}`; + const downloadParam = `download_url=${encodeURIComponent(plugin.download || '')}`; + + if (useWPHandlers) { + url = `${wpConfig.ajaxUrl}?action=marketplace_${action}_plugin&_wpnonce=${wpConfig.nonce}&nonce=${wpConfig.nonce}&slug=${plugin.slug}&${downloadParam}`; } else { - // Fallback for other actions - const actionText = action.charAt(0).toUpperCase() + (action.endsWith('e') ? action.slice(1, -1) : action.slice(1)) + 'ing'; - loadingMessage = `${actionText} ${pluginName}`; + url = url + (url.includes('?') ? '&' : '?') + downloadParam; } - setLoadingAction(loadingMessage); - setLoadingPlugin(''); + // Allow React to render loading overlay, then execute Imagify flow + setTimeout(async () => { + // Initiate the activation request (don't wait for response due to 302 redirect) + try { + await fetch(url, { method: 'POST' }); + } catch (err) { + console.log('Imagify activation request initiated'); + } + + // Poll for activation status + let attempts = 0; + const maxAttempts = 6; + const checkActivation = async () => { + try { + const checkUrl = `${apiBaseUrl}active/${plugin.slug}`; + const response = await fetch(checkUrl); + const data = await response.json(); - // For Imagify, use setTimeout to allow React to render the loading overlay first - if (isImagifyActivation) { - // Build URL for activation - let url = `${apiBaseUrl}${action}/${plugin.slug}`; - const downloadParam = `download_url=${encodeURIComponent(plugin.download || '')}`; + if (data && data.activated) { + // Track successful Imagify activation + trackButtonClick({ + buttonName: 'Activate', + buttonAction: 'product_activate', + plugin: plugin, + context: { + action: action, + result: 'success', + special_case: 'imagify_redirect', + }, + }); - if (useWPHandlers) { - url = `${wpConfig.ajaxUrl}?action=marketplace_${action}_plugin&_wpnonce=${wpConfig.nonce}&nonce=${wpConfig.nonce}&slug=${plugin.slug}&${downloadParam}`; - } else { - url = url + (url.includes('?') ? '&' : '?') + downloadParam; - } + if (source === 'product_detail') { + // Set flag to skip page view tracking on reload + sessionStorage.setItem('mp_skip_page_view', 'true'); + sessionStorage.setItem( + 'mp_success_notice', + JSON.stringify({ + visible: true, + type: 'activated', + pluginSlug: plugin.slug, + successType: 'activate', + }) + ); - // Allow React to render loading overlay, then execute Imagify flow - setTimeout(async () => { - // Initiate the activation request (don't wait for response due to 302 redirect) - try { - await fetch(url, { method: "POST" }); - } catch (err) { - console.log("Imagify activation request initiated"); + // Schedule reload + reloadTimeoutRef.current = setTimeout(() => { + window.location.reload(); + }, 500); + } else { + // Old flow for addons page + setSuccessState({ visible: true, type: 'activate', pluginSlug: plugin.slug }); + + // Schedule reload after a while + reloadTimeoutRef.current = setTimeout(() => { + sessionStorage.setItem('mp_skip_page_view', 'true'); + window.location.reload(); + }, 3000); + + // Clear loading state only + setLoadingAction(''); + setLoadingPlugin(''); + actionSuccessful = true; } + return; + } + } catch (e) { + console.error('Error checking activation status', e); + } - // Poll for activation status - let attempts = 0; - const maxAttempts = 6; - const checkActivation = async () => { - try { - const checkUrl = `${apiBaseUrl}active/${plugin.slug}`; - const response = await fetch(checkUrl); - const data = await response.json(); - - if (data && data.activated) { - // Track successful Imagify activation - trackButtonClick({ - buttonName: 'Activate', - buttonAction: 'product_activate', - plugin: plugin, - context: { - action: action, - result: 'success', - special_case: 'imagify_redirect', - } - }); - - if (source === 'product_detail') { - // Set flag to skip page view tracking on reload - sessionStorage.setItem('mp_skip_page_view', 'true'); - sessionStorage.setItem('mp_success_notice', JSON.stringify({ - visible: true, - type: 'activated', - pluginSlug: plugin.slug, - successType: 'activate' - })); - - // Schedule reload - reloadTimeoutRef.current = setTimeout(() => { - window.location.reload(); - }, 500); - } else { - // Old flow for addons page - setSuccessState({ visible: true, type: 'activate', pluginSlug: plugin.slug }); - - // Schedule reload after a while - reloadTimeoutRef.current = setTimeout(() => { - sessionStorage.setItem('mp_skip_page_view', 'true'); - window.location.reload(); - }, 3000); - - // Clear loading state only - setLoadingAction(''); - setLoadingPlugin(''); - actionSuccessful = true; - } - return; - } - } catch (e) { - console.error("Error checking activation status", e); - } - - attempts++; - if (attempts < maxAttempts) { - setTimeout(checkActivation, 1000); - } else { - // If we reached max attempts and still not activated, show error - setErrorState({ visible: true, type: 'activate', pluginSlug: plugin.slug }); - - // Track activation error - trackButtonClick({ - buttonName: 'Activate', - buttonAction: 'product_activate', - plugin: plugin, - context: { - action: action, - result: 'error', - error_message: 'Imagify activation timeout after polling', - } - }); - - // Clear loading state - setLoadingAction(''); - setLoadingPlugin(''); - setPluginInAction(prev => ({ ...prev, [plugin.slug]: false })); - } - }; - - // Start checking - setTimeout(checkActivation, 1000); - }, 100); - return; - } - - try { - let url = `${apiBaseUrl}/${action}/${plugin.slug}`; - - // prepare encoded download param (safe if plugin.download is undefined) - const downloadParam = `download_url=${encodeURIComponent(plugin.download || '')}`; - - if (useWPHandlers) { - // original WP-AJAX URL + download_url appended - url = `${wpConfig.ajaxUrl}?action=marketplace_${action}_plugin&_wpnonce=${wpConfig.nonce}&nonce=${wpConfig.nonce}&slug=${plugin.slug}&${downloadParam}`; + attempts++; + if (attempts < maxAttempts) { + setTimeout(checkActivation, 1000); } else { - // append download_url to non-WP URL (adds ? or & correctly) - url = url + (url.includes('?') ? '&' : '?') + downloadParam; + // If we reached max attempts and still not activated, show error + setErrorState({ visible: true, type: 'activate', pluginSlug: plugin.slug }); + + // Track activation error + trackButtonClick({ + buttonName: 'Activate', + buttonAction: 'product_activate', + plugin: plugin, + context: { + action: action, + result: 'error', + error_message: 'Imagify activation timeout after polling', + }, + }); + + // Clear loading state + setLoadingAction(''); + setLoadingPlugin(''); + setPluginInAction((prev) => ({ ...prev, [plugin.slug]: false })); } + }; - const res = await fetch(url, { method: "POST" }); - const result = await res.json(); + // Start checking + setTimeout(checkActivation, 1000); + }, 100); + return; + } - if (result.success) { - setPlugins(prev => - prev.map(p => { - if (p.slug === plugin.slug) { - return { ...p, installed: result.data.installed, activated: result.data.activated }; - } + try { + let url = `${apiBaseUrl}/${action}/${plugin.slug}`; - // Handle Rank Math dependency: if Free is deactivated, Pro is also deactivated - if (action === 'deactivate' && plugin.slug === 'seo-by-rank-math' && p.slug === 'seo-by-rank-math-pro') { - return { ...p, activated: false }; - } + // prepare encoded download param (safe if plugin.download is undefined) + const downloadParam = `download_url=${encodeURIComponent(plugin.download || '')}`; - // Handle Rank Math dependency: if Pro is activated, Free is also activated - if (action === 'activate' && plugin.slug === 'seo-by-rank-math-pro' && p.slug === 'seo-by-rank-math') { - return { ...p, activated: true }; - } + if (useWPHandlers) { + // original WP-AJAX URL + download_url appended + url = `${wpConfig.ajaxUrl}?action=marketplace_${action}_plugin&_wpnonce=${wpConfig.nonce}&nonce=${wpConfig.nonce}&slug=${plugin.slug}&${downloadParam}`; + } else { + // append download_url to non-WP URL (adds ? or & correctly) + url = url + (url.includes('?') ? '&' : '?') + downloadParam; + } - return p; - }) - ); - - // Show success notice for install, activate and delete actions - if (action === 'install' && result.data.installed) { - setNoticeState({ visible: true, type: 'installed', pluginSlug: plugin.slug }); - - // Track successful install - trackButtonClick({ - buttonName: 'Install', - buttonAction: 'product_install', - plugin: plugin, - context: { - action: action, - result: 'success', - } - }); - } else if (action === 'delete' && !result.data.installed) { - setNoticeState({ visible: true, type: 'deleted', pluginSlug: plugin.slug }); - setSuccessState({ visible: true, type: 'delete', pluginSlug: plugin.slug }); - - // Track successful delete - trackButtonClick({ - buttonName: 'Delete', - buttonAction: 'product_delete', - plugin: plugin, - context: { - action: action, - result: 'success', - } - }); - } else if (action === 'activate' && result.data.activated) { - actionSuccessful = true; // Mark action as successful to prevent finally block from clearing pluginInAction - - // Track successful activate - trackButtonClick({ - buttonName: 'Activate', - buttonAction: 'product_activate', - plugin: plugin, - context: { - action: action, - result: 'success', - } - }); - - if (source === 'product_detail') { - // Set flag to skip page view tracking on reload - sessionStorage.setItem('mp_skip_page_view', 'true'); - sessionStorage.setItem('mp_success_notice', JSON.stringify({ - visible: true, - type: 'activated', - pluginSlug: plugin.slug, - successType: 'activate' - })); - - // Schedule reload almost instantly - reloadTimeoutRef.current = setTimeout(() => { - window.location.reload(); - }, 500); - } else { - // Old flow for addons page - setSuccessState({ visible: true, type: 'activate', pluginSlug: plugin.slug }); - - // Schedule reload after a while - reloadTimeoutRef.current = setTimeout(() => { - // Set flag to skip page view tracking on reload - sessionStorage.setItem('mp_skip_page_view', 'true'); - window.location.reload(); - }, 3000); - - // Clear loading state only - setLoadingAction(''); - setLoadingPlugin(''); - } - - return; // Skip finally block (though finally will still execute, actionSuccessful flag prevents clearing) - } else if (action === 'deactivate' && !result.data.activated) { - actionSuccessful = true; // Mark action as successful to prevent finally block from clearing pluginInAction - setSuccessState({ visible: true, type: 'deactivate', pluginSlug: plugin.slug }); - - // Track successful deactivate - trackButtonClick({ - buttonName: 'Deactivate', - buttonAction: 'product_deactivate', - plugin: plugin, - context: { - action: action, - result: 'success', - } - }); - - // Schedule reload after deactivation to refresh plugin state - reloadTimeoutRef.current = setTimeout(() => { - // Set flag to skip page view tracking on reload - sessionStorage.setItem('mp_skip_page_view', 'true'); - window.location.reload(); - }, 3000); - - // Don't clear pluginInAction for successful deactivation - keep back button disabled until reload - // Clear loading state only - setLoadingAction(''); - setLoadingPlugin(''); - return; - } + const res = await fetch(url, { method: 'POST' }); + const result = await res.json(); + + if (result.success) { + setPlugins((prev) => + prev.map((p) => { + if (p.slug === plugin.slug) { + return { ...p, installed: result.data.installed, activated: result.data.activated }; + } + + // Handle Rank Math dependency: if Free is deactivated, Pro is also deactivated + if ( + action === 'deactivate' && + plugin.slug === 'seo-by-rank-math' && + p.slug === 'seo-by-rank-math-pro' + ) { + return { ...p, activated: false }; + } + + // Handle Rank Math dependency: if Pro is activated, Free is also activated + if ( + action === 'activate' && + plugin.slug === 'seo-by-rank-math-pro' && + p.slug === 'seo-by-rank-math' + ) { + return { ...p, activated: true }; + } + + return p; + }) + ); + + // Show success notice for install, activate and delete actions + if (action === 'install' && result.data.installed) { + setNoticeState({ visible: true, type: 'installed', pluginSlug: plugin.slug }); + + // Track successful install + trackButtonClick({ + buttonName: 'Install', + buttonAction: 'product_install', + plugin: plugin, + context: { + action: action, + result: 'success', + }, + }); + } else if (action === 'delete' && !result.data.installed) { + setNoticeState({ visible: true, type: 'deleted', pluginSlug: plugin.slug }); + setSuccessState({ visible: true, type: 'delete', pluginSlug: plugin.slug }); + + // Track successful delete + trackButtonClick({ + buttonName: 'Delete', + buttonAction: 'product_delete', + plugin: plugin, + context: { + action: action, + result: 'success', + }, + }); + } else if (action === 'activate' && result.data.activated) { + actionSuccessful = true; // Mark action as successful to prevent finally block from clearing pluginInAction + + // Track successful activate + trackButtonClick({ + buttonName: 'Activate', + buttonAction: 'product_activate', + plugin: plugin, + context: { + action: action, + result: 'success', + }, + }); + + if (source === 'product_detail') { + // Set flag to skip page view tracking on reload + sessionStorage.setItem('mp_skip_page_view', 'true'); + sessionStorage.setItem( + 'mp_success_notice', + JSON.stringify({ + visible: true, + type: 'activated', + pluginSlug: plugin.slug, + successType: 'activate', + }) + ); + + // Schedule reload almost instantly + reloadTimeoutRef.current = setTimeout(() => { + window.location.reload(); + }, 500); } else { - // Show error toast for activation and installation errors - if (action === 'activate') { - setErrorState({ visible: true, type: 'activate', pluginSlug: plugin.slug }); - - // Track activation error - trackButtonClick({ - buttonName: 'Activate', - buttonAction: 'product_activate', - plugin: plugin, - context: { - action: action, - result: 'error', - error_message: result.data?.message || uiI18n?.notifications?.pluginActivationFailed || 'Activation failed', - } - }); - } else if (action === 'deactivate') { - setErrorState({ visible: true, type: 'deactivate', pluginSlug: plugin.slug }); - - // Track deactivation error - trackButtonClick({ - buttonName: 'Deactivate', - buttonAction: 'product_deactivate', - plugin: plugin, - context: { - action: action, - result: 'error', - error_message: result.data?.message || uiI18n?.notifications?.pluginDeactivationFailed || 'Deactivation failed', - } - }); - } else if (action === 'install') { - setErrorState({ visible: true, type: 'install', pluginSlug: plugin.slug }); - - // Track installation error - trackButtonClick({ - buttonName: 'Install', - buttonAction: 'product_install', - plugin: plugin, - context: { - action: action, - result: 'error', - error_message: result.data?.message || 'Installation failed', - } - }); - } else if (action === 'delete') { - setErrorState({ visible: true, type: 'delete', pluginSlug: plugin.slug }); - - // Track deletion error - trackButtonClick({ - buttonName: 'Delete', - buttonAction: 'product_delete', - plugin: plugin, - context: { - action: action, - result: 'error', - error_message: result.data?.message || uiI18n?.notifications?.pluginDeletionFailed || 'Deletion failed', - } - }); - } else { - alert(result.data?.message || "Failed to perform action"); - } + // Old flow for addons page + setSuccessState({ visible: true, type: 'activate', pluginSlug: plugin.slug }); + + // Schedule reload after a while + reloadTimeoutRef.current = setTimeout(() => { + // Set flag to skip page view tracking on reload + sessionStorage.setItem('mp_skip_page_view', 'true'); + window.location.reload(); + }, 3000); + + // Clear loading state only + setLoadingAction(''); + setLoadingPlugin(''); } - } catch (err) { - console.error("Plugin action failed", err); - // Track network/exception errors for install and activate - if (action === 'activate' || action === 'install' || action === 'delete') { - trackButtonClick({ - buttonName: action === 'activate' ? 'Activate' : (action === 'install' ? 'Install' : 'Delete'), - buttonAction: action === 'activate' ? 'product_activate' : (action === 'install' ? 'product_install' : 'product_delete'), - plugin: plugin, - context: { - action: action, - result: 'error', - error_message: err.message || 'Network error', - } - }); - } - } finally { - // Only clear pluginInAction if action was not successful - // For successful actions (activate/deactivate), keep it true until page reload - if (!actionSuccessful) { - setPluginInAction(prev => ({ ...prev, [plugin.slug]: false })); - } - // Clear loading state + // Skip finally block (though finally will still execute, actionSuccessful flag prevents clearing) + } else if (action === 'deactivate' && !result.data.activated) { + actionSuccessful = true; // Mark action as successful to prevent finally block from clearing pluginInAction + setSuccessState({ visible: true, type: 'deactivate', pluginSlug: plugin.slug }); + + // Track successful deactivate + trackButtonClick({ + buttonName: 'Deactivate', + buttonAction: 'product_deactivate', + plugin: plugin, + context: { + action: action, + result: 'success', + }, + }); + + // Schedule reload after deactivation to refresh plugin state + reloadTimeoutRef.current = setTimeout(() => { + // Set flag to skip page view tracking on reload + sessionStorage.setItem('mp_skip_page_view', 'true'); + window.location.reload(); + }, 3000); + + // Don't clear pluginInAction for successful deactivation - keep back button disabled until reload + // Clear loading state only setLoadingAction(''); setLoadingPlugin(''); + } + } else { + // Show error toast for activation and installation errors + if (action === 'activate') { + setErrorState({ visible: true, type: 'activate', pluginSlug: plugin.slug }); + + // Track activation error + trackButtonClick({ + buttonName: 'Activate', + buttonAction: 'product_activate', + plugin: plugin, + context: { + action: action, + result: 'error', + error_message: + result.data?.message || + uiI18n?.notifications?.pluginActivationFailed || + 'Activation failed', + }, + }); + } else if (action === 'deactivate') { + setErrorState({ visible: true, type: 'deactivate', pluginSlug: plugin.slug }); + + // Track deactivation error + trackButtonClick({ + buttonName: 'Deactivate', + buttonAction: 'product_deactivate', + plugin: plugin, + context: { + action: action, + result: 'error', + error_message: + result.data?.message || + uiI18n?.notifications?.pluginDeactivationFailed || + 'Deactivation failed', + }, + }); + } else if (action === 'install') { + setErrorState({ visible: true, type: 'install', pluginSlug: plugin.slug }); + + // Track installation error + trackButtonClick({ + buttonName: 'Install', + buttonAction: 'product_install', + plugin: plugin, + context: { + action: action, + result: 'error', + error_message: result.data?.message || 'Installation failed', + }, + }); + } else if (action === 'delete') { + setErrorState({ visible: true, type: 'delete', pluginSlug: plugin.slug }); + + // Track deletion error + trackButtonClick({ + buttonName: 'Delete', + buttonAction: 'product_delete', + plugin: plugin, + context: { + action: action, + result: 'error', + error_message: + result.data?.message || + uiI18n?.notifications?.pluginDeletionFailed || + 'Deletion failed', + }, + }); + } else { + alert(result.data?.message || 'Failed to perform action'); + } } - }, [apiBaseUrl, useWPHandlers, wpConfig, uiI18n]); - - const value = { - apiBaseUrl, - useWPHandlers, - wpConfig, - enableDefaultStyles, - assetsBaseUrl, - pluginInAction, - setPluginInAction, - subscriptionStatus, - isCheckingSubscription, - fetchSubscriptionStatus, - isOnecomBrand, - plugins, - setPlugins, - uiI18n, - setUiI18n, - handlePluginAction, - cancelReload, - loadingAction, - loadingPlugin, - noticeState, - setNoticeState, - errorState, - setErrorState, - successState, - setSuccessState, - allPluginsActivated, - setAllPluginsActivated, - catalogError, - setCatalogError, - catalogLoading, - setCatalogLoading, - shouldShowProvision, - isSpecialPlugin, - shouldShowPlugin, - isWpVersionSupported, - wpVersion, - activePlugins, - activeThemeAuthor - }; + } catch (err) { + console.error('Plugin action failed', err); + + // Track network/exception errors for install and activate + if (action === 'activate' || action === 'install' || action === 'delete') { + trackButtonClick({ + buttonName: + action === 'activate' ? 'Activate' : action === 'install' ? 'Install' : 'Delete', + buttonAction: + action === 'activate' + ? 'product_activate' + : action === 'install' + ? 'product_install' + : 'product_delete', + plugin: plugin, + context: { + action: action, + result: 'error', + error_message: err.message || 'Network error', + }, + }); + } + } finally { + // Only clear pluginInAction if action was not successful + // For successful actions (activate/deactivate), keep it true until page reload + if (!actionSuccessful) { + setPluginInAction((prev) => ({ ...prev, [plugin.slug]: false })); + } + // Clear loading state + setLoadingAction(''); + setLoadingPlugin(''); + } + }, + [apiBaseUrl, useWPHandlers, wpConfig, uiI18n] + ); + + const cancelReload = useCallback(() => { + if (reloadTimeoutRef.current) { + clearTimeout(reloadTimeoutRef.current); + reloadTimeoutRef.current = null; + } + sessionStorage.removeItem('mp_success_notice'); + }, []); - return ( - - {children} - - ); + const value = { + apiBaseUrl, + useWPHandlers, + wpConfig, + enableDefaultStyles, + assetsBaseUrl, + pluginInAction, + setPluginInAction, + subscriptionStatus, + isCheckingSubscription, + fetchSubscriptionStatus, + isOnecomBrand, + plugins, + setPlugins, + uiI18n, + setUiI18n, + handlePluginAction, + cancelReload, + loadingAction, + loadingPlugin, + noticeState, + setNoticeState, + errorState, + setErrorState, + successState, + setSuccessState, + allPluginsActivated, + setAllPluginsActivated, + catalogError, + setCatalogError, + catalogLoading, + setCatalogLoading, + shouldShowProvision, + isSpecialPlugin, + shouldShowPlugin, + isWpVersionSupported, + wpVersion, + activePlugins, + activeThemeAuthor, + }; + + return {children}; }; export const useMarketplace = () => { - const context = useContext(MarketplaceContext); - if (!context) { - throw new Error('useMarketplace must be used within MarketplaceProvider'); - } - return context; + const context = useContext(MarketplaceContext); + if (!context) { + throw new Error('useMarketplace must be used within MarketplaceProvider'); + } + return context; }; diff --git a/frontend/src/i18n/index.js b/frontend/src/i18n/index.js index b25560f..1ca6915 100644 --- a/frontend/src/i18n/index.js +++ b/frontend/src/i18n/index.js @@ -1,40 +1,40 @@ -import i18n from "i18next"; -import { initReactI18next } from "react-i18next"; +import i18n from 'i18next'; +import { initReactI18next } from 'react-i18next'; // Import all translations -import en_GB from "./locales/en_GB.json"; -import da_DK from "./locales/da_DK.json"; -import de_DE from "./locales/de_DE.json"; -import es_ES from "./locales/es_ES.json"; -import fi_FI from "./locales/fi_FI.json"; -import fr_FR from "./locales/fr_FR.json"; -import it_IT from "./locales/it_IT.json"; -import nl_NL from "./locales/nl_NL.json"; -import no_NO from "./locales/no_NO.json"; -import pt_PT from "./locales/pt_PT.json"; -import sv_SE from "./locales/sv_SE.json"; +import en_GB from './locales/en_GB.json'; +import da_DK from './locales/da_DK.json'; +import de_DE from './locales/de_DE.json'; +import es_ES from './locales/es_ES.json'; +import fi_FI from './locales/fi_FI.json'; +import fr_FR from './locales/fr_FR.json'; +import it_IT from './locales/it_IT.json'; +import nl_NL from './locales/nl_NL.json'; +import no_NO from './locales/no_NO.json'; +import pt_PT from './locales/pt_PT.json'; +import sv_SE from './locales/sv_SE.json'; const resources = { - en_GB: { translation: en_GB }, - da_DK: { translation: da_DK }, - de_DE: { translation: de_DE }, - es_ES: { translation: es_ES }, - fi_FI: { translation: fi_FI }, - fr_FR: { translation: fr_FR }, - it_IT: { translation: it_IT }, - nl_NL: { translation: nl_NL }, - no_NO: { translation: no_NO }, - nb_NO: { translation: no_NO }, - pt_PT: { translation: pt_PT }, - sv_SE: { translation: sv_SE }, - fi: { translation: fi_FI }, + en_GB: { translation: en_GB }, + da_DK: { translation: da_DK }, + de_DE: { translation: de_DE }, + es_ES: { translation: es_ES }, + fi_FI: { translation: fi_FI }, + fr_FR: { translation: fr_FR }, + it_IT: { translation: it_IT }, + nl_NL: { translation: nl_NL }, + no_NO: { translation: no_NO }, + nb_NO: { translation: no_NO }, + pt_PT: { translation: pt_PT }, + sv_SE: { translation: sv_SE }, + fi: { translation: fi_FI }, }; i18n.use(initReactI18next).init({ - resources, - lng: "en_GB", // default fallback - fallbackLng: "en_GB", - interpolation: { escapeValue: false }, + resources, + lng: 'en_GB', // default fallback + fallbackLng: 'en_GB', + interpolation: { escapeValue: false }, }); export default i18n; diff --git a/frontend/src/index.esm.jsx b/frontend/src/index.esm.jsx index 3e797d9..d43a79d 100644 --- a/frontend/src/index.esm.jsx +++ b/frontend/src/index.esm.jsx @@ -1,5 +1,5 @@ -import MarketplaceApp from "./MarketplaceApp"; +import MarketplaceApp from './MarketplaceApp'; -import "@group.one/gravity/dist/css/brands/one.min.css"; +import '@dogado/gravity/dist/css/brands/one.min.css'; export default MarketplaceApp; diff --git a/frontend/src/index.jsx b/frontend/src/index.jsx index 48e242c..5efe05b 100644 --- a/frontend/src/index.jsx +++ b/frontend/src/index.jsx @@ -1,31 +1,32 @@ -import React from "react"; -import ReactDOM from "react-dom"; -import MarketplaceApp from "./MarketplaceApp"; -import './i18n' -import { isWpVersionSupported } from "./utils/wpVersionHelper"; +import React from 'react'; +import ReactDOM from 'react-dom'; +import MarketplaceApp from './MarketplaceApp'; +import './i18n'; +import { isWpVersionSupported } from './utils/wpVersionHelper'; // Inside-WP auto-mount -document.addEventListener("DOMContentLoaded", () => { - const el = document.getElementById("marketplace-root"); - if (el) { - const config = window.marketplaceConfig || {}; - if (config.locale) { - import("i18next").then(({ default: i18n }) => { - i18n.changeLanguage(config.locale); - }); - } +document.addEventListener('DOMContentLoaded', () => { + const el = document.getElementById('marketplace-root'); + if (el) { + const config = window.marketplaceConfig || {}; + if (config.locale) { + import('i18next').then(({ default: i18n }) => { + i18n.changeLanguage(config.locale); + }); + } - const isSupported = isWpVersionSupported(config.wpVersion, '6.2'); + const isSupported = isWpVersionSupported(config.wpVersion, '6.2'); - if (typeof ReactDOM.createRoot === 'function' && isSupported) { - // React 18+ - const root = ReactDOM.createRoot(el); - root.render(); - } else { - // React 17 or unsupported version - // For unsupported versions, MarketplaceApp will still render and show WpVersionErrorState - // We just need to use the compatible render method - ReactDOM.render(, el); - } + if (typeof ReactDOM.createRoot === 'function' && isSupported) { + // React 18+ + const root = ReactDOM.createRoot(el); + root.render(); + } else { + // React 17 or unsupported version + // For unsupported versions, MarketplaceApp will still render and show WpVersionErrorState + // We just need to use the compatible render method + /* eslint-disable-next-line react/no-deprecated */ + ReactDOM.render(, el); } + } }); diff --git a/frontend/src/utils/mixpanelTracking.js b/frontend/src/utils/mixpanelTracking.js index 7acced8..c86ce42 100644 --- a/frontend/src/utils/mixpanelTracking.js +++ b/frontend/src/utils/mixpanelTracking.js @@ -12,66 +12,66 @@ let isInitialized = false; // Initialize Mixpanel if token is provided and data consent is given const initializeMixpanel = () => { - try { - if (typeof window === 'undefined') { - return false; - } - - // Don't re-initialize if already done - if (isInitialized) { - return true; - } + try { + if (typeof window === 'undefined') { + return false; + } - const config = window.marketplaceConfig || {}; + // Don't re-initialize if already done + if (isInitialized) { + return true; + } - // Check if data consent is given - const dataConsentStatus = config.data_consent_status; - if (!dataConsentStatus) { - return false; - } + const config = window.marketplaceConfig || {}; - const mixpanelConfig = config.mixpanel || {}; - const token = mixpanelConfig.token; + // Check if data consent is given + const dataConsentStatus = config.data_consent_status; + if (!dataConsentStatus) { + return false; + } - // Only initialize if token is provided - if (!token || token === '') { - return false; - } + const mixpanelConfig = config.mixpanel || {}; + const token = mixpanelConfig.token; - mixpanel.init(token, { - debug: mixpanelConfig.debug || false, - track_pageview: false, // We'll handle page views manually - persistence: 'localStorage', - // Disable automatic collection of potentially sensitive properties for privacy - property_blacklist: [ - '$initial_referrer', - '$initial_referring_domain', - '$current_url', - '$referrer', - '$referring_domain', - 'mp_lib', - '$lib_version', - '$browser', - '$browser_version', - '$device', - '$screen_height', - '$screen_width', - '$os', - '$search_engine', - ], - }); - - // Set distinct_id if provided - const distinctId = mixpanelConfig.distinctId; - if (distinctId && distinctId !== '') { - mixpanel.identify(distinctId); - } + // Only initialize if token is provided + if (!token || token === '') { + return false; + } - isInitialized = true; - return true; - } catch (error) { - return false; + mixpanel.init(token, { + debug: mixpanelConfig.debug || false, + track_pageview: false, // We'll handle page views manually + persistence: 'localStorage', + // Disable automatic collection of potentially sensitive properties for privacy + property_blacklist: [ + '$initial_referrer', + '$initial_referring_domain', + '$current_url', + '$referrer', + '$referring_domain', + 'mp_lib', + '$lib_version', + '$browser', + '$browser_version', + '$device', + '$screen_height', + '$screen_width', + '$os', + '$search_engine', + ], + }); + + // Set distinct_id if provided + const distinctId = mixpanelConfig.distinctId; + if (distinctId && distinctId !== '') { + mixpanel.identify(distinctId); } + + isInitialized = true; + return true; + } catch (error) { + return false; + } }; // Export initializeMixpanel for manual initialization from React components @@ -79,11 +79,11 @@ export { initializeMixpanel }; // Check if Mixpanel is available const isMixpanelAvailable = () => { - try { - return isInitialized && typeof mixpanel !== 'undefined'; - } catch (error) { - return false; - } + try { + return isInitialized && typeof mixpanel !== 'undefined'; + } catch (error) { + return false; + } }; /** @@ -91,15 +91,15 @@ const isMixpanelAvailable = () => { * Resets the SDK and clears the initialization flag */ export const disableMixpanel = () => { - try { - if (isInitialized && typeof mixpanel !== 'undefined') { - // Reset Mixpanel instance to stop tracking - mixpanel.reset(); - isInitialized = false; - } - } catch (error) { - console.error('[MixpanelTracking] Error disabling Mixpanel:', error); + try { + if (isInitialized && typeof mixpanel !== 'undefined') { + // Reset Mixpanel instance to stop tracking + mixpanel.reset(); + isInitialized = false; } + } catch (error) { + console.error('[MixpanelTracking] Error disabling Mixpanel:', error); + } }; /** @@ -107,29 +107,29 @@ export const disableMixpanel = () => { * Reinitializes Mixpanel with current config from window.marketplaceConfig */ export const enableMixpanel = () => { - try { - if (typeof window === 'undefined') { - return false; - } + try { + if (typeof window === 'undefined') { + return false; + } - const config = window.marketplaceConfig || {}; - const mixpanelConfig = config.mixpanel || {}; - const token = mixpanelConfig.token; + const config = window.marketplaceConfig || {}; + const mixpanelConfig = config.mixpanel || {}; + const token = mixpanelConfig.token; - // Only initialize if token is provided - if (!token || token === '') { - return false; - } + // Only initialize if token is provided + if (!token || token === '') { + return false; + } - // Reset flag to allow re-initialization - isInitialized = false; + // Reset flag to allow re-initialization + isInitialized = false; - // Initialize Mixpanel - return initializeMixpanel(); - } catch (error) { - console.error('[MixpanelTracking] Error enabling Mixpanel:', error); - return false; - } + // Initialize Mixpanel + return initializeMixpanel(); + } catch (error) { + console.error('[MixpanelTracking] Error enabling Mixpanel:', error); + return false; + } }; /** @@ -137,43 +137,43 @@ export const enableMixpanel = () => { * @returns {Object} Global properties object */ export const getGlobalProperties = () => { - try { - if (typeof window === 'undefined') { - return {}; - } - - const config = window.marketplaceConfig || {}; - const mixpanelConfig = config.mixpanel || {}; - const globalProps = mixpanelConfig.globalProperties || {}; - - // Add hit_type and page/path properties to the global properties from PHP - // Extract base path from query params for 'page' property - const urlParams = new URLSearchParams(window.location.search); - const pageParam = urlParams.get('page') || ''; - - const enhancedProperties = { - ...globalProps, - hit_type: 'event', - page: pageParam || window.location.pathname, - path: window.location.pathname + window.location.search, - referrer: document.referrer.split('/').filter(Boolean).pop() || '', - }; - - // Filter out empty values to keep the payload clean - return Object.fromEntries( - Object.entries(enhancedProperties).filter(([_, value]) => { - if (value === '' || value === null || value === undefined) { - return false; - } - if (Array.isArray(value) && value.length === 0) { - return false; - } - return true; - }) - ); - } catch (error) { - return {}; + try { + if (typeof window === 'undefined') { + return {}; } + + const config = window.marketplaceConfig || {}; + const mixpanelConfig = config.mixpanel || {}; + const globalProps = mixpanelConfig.globalProperties || {}; + + // Add hit_type and page/path properties to the global properties from PHP + // Extract base path from query params for 'page' property + const urlParams = new URLSearchParams(window.location.search); + const pageParam = urlParams.get('page') || ''; + + const enhancedProperties = { + ...globalProps, + hit_type: 'event', + page: pageParam || window.location.pathname, + path: window.location.pathname + window.location.search, + referrer: document.referrer.split('/').filter(Boolean).pop() || '', + }; + + // Filter out empty values to keep the payload clean + return Object.fromEntries( + Object.entries(enhancedProperties).filter(([_, value]) => { + if (value === '' || value === null || value === undefined) { + return false; + } + if (Array.isArray(value) && value.length === 0) { + return false; + } + return true; + }) + ); + } catch (error) { + return {}; + } }; /** @@ -182,25 +182,24 @@ export const getGlobalProperties = () => { * @param {Object} eventProperties - Event-specific properties */ export const trackEvent = (eventName, eventProperties = {}) => { - try { - if (!isMixpanelAvailable()) { - // Silently skip tracking if Mixpanel is not available - // This is expected when data consent is not given or token is missing - return; - } - - // Merge global properties with event-specific properties - const properties = { - ...getGlobalProperties(), - ...eventProperties, - }; + try { + if (!isMixpanelAvailable()) { + // Silently skip tracking if Mixpanel is not available + // This is expected when data consent is not given or token is missing + return; + } - // Track the event - mixpanel.track(eventName, properties); + // Merge global properties with event-specific properties + const properties = { + ...getGlobalProperties(), + ...eventProperties, + }; - } catch (error) { - console.error('[MixpanelTracking] Error tracking event:', eventName, error); - } + // Track the event + mixpanel.track(eventName, properties); + } catch (error) { + console.error('[MixpanelTracking] Error tracking event:', eventName, error); + } }; /** @@ -215,44 +214,53 @@ export const trackEvent = (eventName, eventProperties = {}) => { * @param {number} options.contentRenderedAt - Timestamp when content was rendered to page * @param {boolean} options.isCached - Whether the response was served from cache (default: false) */ -export const trackPageView = ({ pluginSlug, pluginName, category, itemName, isContentRendered = true, contentReceivedAt = null, contentRenderedAt = null, isCached = false } = {}) => { - try { - const timestamp = Date.now(); - - const eventProperties = { - content_received_at: contentReceivedAt || timestamp, - is_content_rendered: isContentRendered, - is_cached: isCached, - }; - - // Only add content_rendered_at if content was successfully rendered - if (isContentRendered) { - eventProperties.content_rendered_at = contentRenderedAt || timestamp; - } +export const trackPageView = ({ + pluginSlug, + pluginName, + category, + itemName, + isContentRendered = true, + contentReceivedAt = null, + contentRenderedAt = null, + isCached = false, +} = {}) => { + try { + const timestamp = Date.now(); + + const eventProperties = { + content_received_at: contentReceivedAt || timestamp, + is_content_rendered: isContentRendered, + is_cached: isCached, + }; - // Use itemName if provided, otherwise use pluginSlug (for backward compatibility) - if (itemName) { - eventProperties.item_name = itemName; - } else if (pluginSlug) { - eventProperties.item_name = pluginSlug; - } + // Only add content_rendered_at if content was successfully rendered + if (isContentRendered) { + eventProperties.content_rendered_at = contentRenderedAt || timestamp; + } - if (pluginSlug) { - eventProperties.product_slug = pluginSlug; - } + // Use itemName if provided, otherwise use pluginSlug (for backward compatibility) + if (itemName) { + eventProperties.item_name = itemName; + } else if (pluginSlug) { + eventProperties.item_name = pluginSlug; + } - if (pluginName) { - eventProperties.product_name = pluginName; - } + if (pluginSlug) { + eventProperties.product_slug = pluginSlug; + } - if (category) { - eventProperties.item_category = category; - } + if (pluginName) { + eventProperties.product_name = pluginName; + } - trackEvent('Page Viewed', eventProperties); - } catch (error) { - console.error('[MixpanelTracking] Error tracking page view:', error); + if (category) { + eventProperties.item_category = category; } + + trackEvent('Page Viewed', eventProperties); + } catch (error) { + console.error('[MixpanelTracking] Error tracking page view:', error); + } }; /** @@ -263,86 +271,88 @@ export const trackPageView = ({ pluginSlug, pluginName, category, itemName, isCo * @param {string} options.result - Action result (e.g., 'success', 'error') */ export const trackPluginAction = ({ action, plugin, result = 'initiated' } = {}) => { - try { - if (!plugin) { - return; - } - - const eventName = `Plugin ${action.charAt(0).toUpperCase() + action.slice(1)}`; - - const eventProperties = { - action: action, - product_slug: plugin.slug || '', - product_name: plugin.name || '', - item_name: plugin.slug || '', - result: result, - timestamp: Date.now(), - }; - - // Add plugin-specific properties - if (plugin.categories && plugin.categories.length > 0) { - const category = typeof plugin.categories[0] === 'object' - ? plugin.categories[0].slug || plugin.categories[0].title - : plugin.categories[0]; - eventProperties.item_category = category; - } - - if (plugin.licenseType) { - eventProperties.license_type = plugin.licenseType; - } - - if (plugin.priceAmount !== undefined) { - eventProperties.price_amount = plugin.priceAmount; - } - - if (plugin.priceCurrency) { - eventProperties.price_currency = plugin.priceCurrency; - } - - trackEvent(eventName, eventProperties); - } catch (error) { - console.error('[MixpanelTracking] Error tracking plugin action:', error); + try { + if (!plugin) { + return; } -}; -/** - * Extract common properties from a plugin object - * @param {Object} plugin - Plugin object - * @returns {Object} Extracted properties - */ -const extractPluginProperties = (plugin) => { - if (!plugin) return {}; + const eventName = `Plugin ${action.charAt(0).toUpperCase() + action.slice(1)}`; - const properties = { - product_slug: plugin.slug || '', - product_name: plugin.name || '', - // Note: item_name is NOT included here by default - // It should be set contextually by the calling function + const eventProperties = { + action: action, + product_slug: plugin.slug || '', + product_name: plugin.name || '', + item_name: plugin.slug || '', + result: result, + timestamp: Date.now(), }; - // Extract category + // Add plugin-specific properties if (plugin.categories && plugin.categories.length > 0) { - const category = typeof plugin.categories[0] === 'object' - ? plugin.categories[0].slug || plugin.categories[0].title - : plugin.categories[0]; - properties.item_category = category; + const category = + typeof plugin.categories[0] === 'object' + ? plugin.categories[0].slug || plugin.categories[0].title + : plugin.categories[0]; + eventProperties.item_category = category; } - // Extract license type if (plugin.licenseType) { - properties.license_type = plugin.licenseType; + eventProperties.license_type = plugin.licenseType; } - // Extract price information if (plugin.priceAmount !== undefined) { - properties.price_amount = plugin.priceAmount; + eventProperties.price_amount = plugin.priceAmount; } if (plugin.priceCurrency) { - properties.price_currency = plugin.priceCurrency; + eventProperties.price_currency = plugin.priceCurrency; } - return properties; + trackEvent(eventName, eventProperties); + } catch (error) { + console.error('[MixpanelTracking] Error tracking plugin action:', error); + } +}; + +/** + * Extract common properties from a plugin object + * @param {Object} plugin - Plugin object + * @returns {Object} Extracted properties + */ +const extractPluginProperties = (plugin) => { + if (!plugin) return {}; + + const properties = { + product_slug: plugin.slug || '', + product_name: plugin.name || '', + // Note: item_name is NOT included here by default + // It should be set contextually by the calling function + }; + + // Extract category + if (plugin.categories && plugin.categories.length > 0) { + const category = + typeof plugin.categories[0] === 'object' + ? plugin.categories[0].slug || plugin.categories[0].title + : plugin.categories[0]; + properties.item_category = category; + } + + // Extract license type + if (plugin.licenseType) { + properties.license_type = plugin.licenseType; + } + + // Extract price information + if (plugin.priceAmount !== undefined) { + properties.price_amount = plugin.priceAmount; + } + + if (plugin.priceCurrency) { + properties.price_currency = plugin.priceCurrency; + } + + return properties; }; /** @@ -353,28 +363,33 @@ const extractPluginProperties = (plugin) => { * @param {Object} options.plugin - Optional plugin object (will auto-extract properties) * @param {Object} options.context - Additional context (merged with plugin properties) */ -export const trackButtonClick = ({ buttonName, buttonAction, plugin = null, context = {} } = {}) => { - try { - // Start with base properties - const eventProperties = { - button_name: buttonName || '', - button_action: buttonAction || '', - item_name: buttonName || '', // item_name should be the button name - timestamp: Date.now(), - }; - - // Auto-extract plugin properties if plugin object is provided - if (plugin) { - Object.assign(eventProperties, extractPluginProperties(plugin)); - } - - // Merge additional context (context takes precedence over auto-extracted properties) - Object.assign(eventProperties, context); +export const trackButtonClick = ({ + buttonName, + buttonAction, + plugin = null, + context = {}, +} = {}) => { + try { + // Start with base properties + const eventProperties = { + button_name: buttonName || '', + button_action: buttonAction || '', + item_name: buttonName || '', // item_name should be the button name + timestamp: Date.now(), + }; - trackEvent('Button Clicked', eventProperties); - } catch (error) { - console.error('[MixpanelTracking] Error tracking button click:', error); + // Auto-extract plugin properties if plugin object is provided + if (plugin) { + Object.assign(eventProperties, extractPluginProperties(plugin)); } + + // Merge additional context (context takes precedence over auto-extracted properties) + Object.assign(eventProperties, context); + + trackEvent('Button Clicked', eventProperties); + } catch (error) { + console.error('[MixpanelTracking] Error tracking button click:', error); + } }; /** @@ -383,18 +398,22 @@ export const trackButtonClick = ({ buttonName, buttonAction, plugin = null, cont * @param {number} contentRenderedAt - Timestamp when content was rendered to page * @param {boolean} isCached - Whether the response was served from cache */ -export const trackMarketplaceVisit = (contentReceivedAt = null, contentRenderedAt = null, isCached = false) => { - try { - trackPageView({ - category: 'marketplace_home', - itemName: 'Catalog Page', // Set item_name to 'Catalog page' for marketplace listing - contentReceivedAt: contentReceivedAt, - contentRenderedAt: contentRenderedAt, - isCached: isCached, - }); - } catch (error) { - console.error('[MixpanelTracking] Error tracking marketplace visit:', error); - } +export const trackMarketplaceVisit = ( + contentReceivedAt = null, + contentRenderedAt = null, + isCached = false +) => { + try { + trackPageView({ + category: 'marketplace_home', + itemName: 'Catalog Page', // Set item_name to 'Catalog page' for marketplace listing + contentReceivedAt: contentReceivedAt, + contentRenderedAt: contentRenderedAt, + isCached: isCached, + }); + } catch (error) { + console.error('[MixpanelTracking] Error tracking marketplace visit:', error); + } }; /** @@ -404,41 +423,47 @@ export const trackMarketplaceVisit = (contentReceivedAt = null, contentRenderedA * @param {number} contentRenderedAt - Timestamp when content was rendered to page * @param {boolean} isCached - Whether the response was served from cache */ -export const trackPluginDetailVisit = (plugin, contentReceivedAt = null, contentRenderedAt = null, isCached = false) => { - try { - if (!plugin) { - console.warn('[MixpanelTracking] Plugin object required for tracking detail visit'); - return; - } - - const category = plugin.categories && plugin.categories.length > 0 - ? (typeof plugin.categories[0] === 'object' - ? plugin.categories[0].slug || plugin.categories[0].title - : plugin.categories[0]) - : ''; - - trackPageView({ - pluginSlug: plugin.slug, - pluginName: plugin.name, - category: category, - itemName: 'Product Page', // Set item_name to 'Product page' for plugin detail page - contentReceivedAt: contentReceivedAt, - contentRenderedAt: contentRenderedAt, - isCached: isCached, - }); - } catch (error) { - console.error('[MixpanelTracking] Error tracking plugin detail visit:', error); +export const trackPluginDetailVisit = ( + plugin, + contentReceivedAt = null, + contentRenderedAt = null, + isCached = false +) => { + try { + if (!plugin) { + console.warn('[MixpanelTracking] Plugin object required for tracking detail visit'); + return; } + + const category = + plugin.categories && plugin.categories.length > 0 + ? typeof plugin.categories[0] === 'object' + ? plugin.categories[0].slug || plugin.categories[0].title + : plugin.categories[0] + : ''; + + trackPageView({ + pluginSlug: plugin.slug, + pluginName: plugin.name, + category: category, + itemName: 'Product Page', // Set item_name to 'Product page' for plugin detail page + contentReceivedAt: contentReceivedAt, + contentRenderedAt: contentRenderedAt, + isCached: isCached, + }); + } catch (error) { + console.error('[MixpanelTracking] Error tracking plugin detail visit:', error); + } }; // Export default object with all tracking functions export default { - trackEvent, - trackPageView, - trackPluginAction, - trackButtonClick, - trackMarketplaceVisit, - trackPluginDetailVisit, - getGlobalProperties, - isMixpanelAvailable, + trackEvent, + trackPageView, + trackPluginAction, + trackButtonClick, + trackMarketplaceVisit, + trackPluginDetailVisit, + getGlobalProperties, + isMixpanelAvailable, }; diff --git a/frontend/src/utils/priceFormatter.js b/frontend/src/utils/priceFormatter.js index 9b770ad..0c183b5 100644 --- a/frontend/src/utils/priceFormatter.js +++ b/frontend/src/utils/priceFormatter.js @@ -2,14 +2,14 @@ * Currency symbol mapping - scalable for future currencies */ const CURRENCY_SYMBOLS = { - 'EUR': '€', - 'USD': '$', - 'GBP': '£', - 'DKK': 'kr', - 'NOK': 'kr', - 'SEK': 'kr', - // Add more currencies here as needed - // 'JPY': '¥', + EUR: '€', + USD: '$', + GBP: '£', + DKK: 'kr', + NOK: 'kr', + SEK: 'kr', + // Add more currencies here as needed + // 'JPY': '¥', }; /** @@ -24,7 +24,7 @@ const CURRENCIES_WITH_POST_SYMBOL = ['DKK', 'SEK', 'NOK']; * @returns {string} - The currency symbol or the code itself as fallback */ const getCurrencySymbol = (currencyCode) => { - return CURRENCY_SYMBOLS[currencyCode] || currencyCode; + return CURRENCY_SYMBOLS[currencyCode] || currencyCode; }; /** @@ -35,10 +35,10 @@ const getCurrencySymbol = (currencyCode) => { * @returns {string} - Formatted price with symbol in correct position */ const formatPriceWithSymbol = (amount, symbol, currencyCode) => { - if (CURRENCIES_WITH_POST_SYMBOL.includes(currencyCode)) { - return `${amount} ${symbol}`; - } - return `${symbol} ${amount}`; + if (CURRENCIES_WITH_POST_SYMBOL.includes(currencyCode)) { + return `${amount} ${symbol}`; + } + return `${symbol} ${amount}`; }; /** @@ -47,15 +47,15 @@ const formatPriceWithSymbol = (amount, symbol, currencyCode) => { * @returns {string|null} - Formatted full price with currency symbol or null if not found */ export const getFullPrice = (plugin) => { - if (plugin.prices && Array.isArray(plugin.prices) && plugin.prices.length > 0) { - const fullPrice = plugin.prices.find(p => p.priceType === 'full'); - if (fullPrice && fullPrice.amount && fullPrice.currency) { - const symbol = getCurrencySymbol(fullPrice.currency); - const formattedAmount = Number(fullPrice.amount).toFixed(2); - return formatPriceWithSymbol(formattedAmount, symbol, fullPrice.currency); - } + if (plugin.prices && Array.isArray(plugin.prices) && plugin.prices.length > 0) { + const fullPrice = plugin.prices.find((p) => p.priceType === 'full'); + if (fullPrice && fullPrice.amount && fullPrice.currency) { + const symbol = getCurrencySymbol(fullPrice.currency); + const formattedAmount = Number(fullPrice.amount).toFixed(2); + return formatPriceWithSymbol(formattedAmount, symbol, fullPrice.currency); } - return null; + } + return null; }; /** @@ -64,15 +64,20 @@ export const getFullPrice = (plugin) => { * @returns {string|null} - Formatted rebate price with currency symbol or null if not found */ export const getRebatePrice = (plugin) => { - if (plugin.prices && Array.isArray(plugin.prices) && plugin.prices.length > 0) { - const rebatePrice = plugin.prices.find(p => p.priceType === 'rebate'); - if (rebatePrice && rebatePrice.amount !== undefined && rebatePrice.amount !== null && rebatePrice.currency) { - const symbol = getCurrencySymbol(rebatePrice.currency); - const formattedAmount = Number(rebatePrice.amount).toFixed(2); - return formatPriceWithSymbol(formattedAmount, symbol, rebatePrice.currency); - } + if (plugin.prices && Array.isArray(plugin.prices) && plugin.prices.length > 0) { + const rebatePrice = plugin.prices.find((p) => p.priceType === 'rebate'); + if ( + rebatePrice && + rebatePrice.amount !== undefined && + rebatePrice.amount !== null && + rebatePrice.currency + ) { + const symbol = getCurrencySymbol(rebatePrice.currency); + const formattedAmount = Number(rebatePrice.amount).toFixed(2); + return formatPriceWithSymbol(formattedAmount, symbol, rebatePrice.currency); } - return null; + } + return null; }; /** @@ -83,60 +88,67 @@ export const getRebatePrice = (plugin) => { * @returns {string} - Formatted price string ('Free', 'Symbol Amount', or blank) */ export const formatPluginPrice = (plugin, freeLabel = 'Free', uiI18n = null) => { - const isFree = plugin.licenseType === "free"; - - if (isFree) { - return freeLabel; - } + const isFree = plugin.licenseType === 'free'; - // Handle new API format with prices array - if (plugin.prices && Array.isArray(plugin.prices) && plugin.prices.length > 0) { - // Check if there's a rebate price type for premium licenses - const rebatePrice = plugin.prices.find(price => price.priceType === 'rebate'); + if (isFree) { + return freeLabel; + } - if (rebatePrice && plugin.licenseType === 'premium') { - // If rebate amount is 0, display "Free until renewal" - if (rebatePrice.amount === 0) { - return uiI18n?.labels?.freeUntilRenewal || 'Free until renewal'; - } - // If rebate amount is not 0, display "amount until renewal" - if (rebatePrice.amount && rebatePrice.currency) { - const symbol = getCurrencySymbol(rebatePrice.currency); - const formattedAmount = Number(rebatePrice.amount).toFixed(2); - const priceWithSymbol = formatPriceWithSymbol(formattedAmount, symbol, rebatePrice.currency); - return `${priceWithSymbol} `; - } - } + // Handle new API format with prices array + if (plugin.prices && Array.isArray(plugin.prices) && plugin.prices.length > 0) { + // Check if there's a rebate price type for premium licenses + const rebatePrice = plugin.prices.find((price) => price.priceType === 'rebate'); - // If no rebate, find the full price (first active price, or use first price if isActive is not present) - let priceToUse = plugin.prices.find(price => price.priceType === 'full' && (price.isActive === true || price.isActive === undefined)); + if (rebatePrice && plugin.licenseType === 'premium') { + // If rebate amount is 0, display "Free until renewal" + if (rebatePrice.amount === 0) { + return uiI18n?.labels?.freeUntilRenewal || 'Free until renewal'; + } + // If rebate amount is not 0, display "amount until renewal" + if (rebatePrice.amount && rebatePrice.currency) { + const symbol = getCurrencySymbol(rebatePrice.currency); + const formattedAmount = Number(rebatePrice.amount).toFixed(2); + const priceWithSymbol = formatPriceWithSymbol( + formattedAmount, + symbol, + rebatePrice.currency + ); + return `${priceWithSymbol} `; + } + } - // Fallback: find any active price - if (!priceToUse) { - priceToUse = plugin.prices.find(price => price.isActive === true); - } + // If no rebate, find the full price (first active price, or use first price if isActive is not present) + let priceToUse = plugin.prices.find( + (price) => + price.priceType === 'full' && (price.isActive === true || price.isActive === undefined) + ); - // If no price with isActive:true found, use first price (for formats without isActive) - if (!priceToUse) { - priceToUse = plugin.prices[0]; - } + // Fallback: find any active price + if (!priceToUse) { + priceToUse = plugin.prices.find((price) => price.isActive === true); + } - if (priceToUse && priceToUse.amount && priceToUse.currency) { - const symbol = getCurrencySymbol(priceToUse.currency); - // Format amount to 2 decimal places - const formattedAmount = Number(priceToUse.amount).toFixed(2); - return formatPriceWithSymbol(formattedAmount, symbol, priceToUse.currency); - } + // If no price with isActive:true found, use first price (for formats without isActive) + if (!priceToUse) { + priceToUse = plugin.prices[0]; } - // Backward compatibility: Handle old format with priceCurrency and priceAmount - if (plugin.priceCurrency && plugin.priceAmount) { - const symbol = getCurrencySymbol(plugin.priceCurrency); - // Format amount to 2 decimal places - const formattedAmount = Number(plugin.priceAmount).toFixed(2); - return formatPriceWithSymbol(formattedAmount, symbol, plugin.priceCurrency); + if (priceToUse && priceToUse.amount && priceToUse.currency) { + const symbol = getCurrencySymbol(priceToUse.currency); + // Format amount to 2 decimal places + const formattedAmount = Number(priceToUse.amount).toFixed(2); + return formatPriceWithSymbol(formattedAmount, symbol, priceToUse.currency); } + } + + // Backward compatibility: Handle old format with priceCurrency and priceAmount + if (plugin.priceCurrency && plugin.priceAmount) { + const symbol = getCurrencySymbol(plugin.priceCurrency); + // Format amount to 2 decimal places + const formattedAmount = Number(plugin.priceAmount).toFixed(2); + return formatPriceWithSymbol(formattedAmount, symbol, plugin.priceCurrency); + } - // Return blank for premium products without prices - return ''; + // Return blank for premium products without prices + return ''; }; diff --git a/frontend/src/utils/redirectUrlHelper.js b/frontend/src/utils/redirectUrlHelper.js index cf442c1..b957df0 100644 --- a/frontend/src/utils/redirectUrlHelper.js +++ b/frontend/src/utils/redirectUrlHelper.js @@ -6,24 +6,27 @@ * @returns {string} The resolved redirect path. */ export const getPluginRedirectUrl = (plugin, forceOnboarding = false) => { - let redirectUrl = plugin.redirectUrl; + let redirectUrl = plugin.redirectUrl; - const isRankMath = plugin.slug === 'seo-by-rank-math' || plugin.slug === 'seo-by-rank-math-pro'; - const hasOnboardingUrl = plugin.onboardingUrl && typeof plugin.onboardingUrl === 'string' && plugin.onboardingUrl.trim() !== ''; + const isRankMath = plugin.slug === 'seo-by-rank-math' || plugin.slug === 'seo-by-rank-math-pro'; + const hasOnboardingUrl = + plugin.onboardingUrl && + typeof plugin.onboardingUrl === 'string' && + plugin.onboardingUrl.trim() !== ''; - if (isRankMath) { - // Safe access to rankMathRegistrationSkip config - const wpConfig = window.marketplaceConfig?.wpConfig; - const rankMathRegistrationSkip = wpConfig ? wpConfig.rankMathRegistrationSkip === true : false; + if (isRankMath) { + // Safe access to rankMathRegistrationSkip config + const wpConfig = window.marketplaceConfig?.wpConfig; + const rankMathRegistrationSkip = wpConfig ? wpConfig.rankMathRegistrationSkip === true : false; - if (!rankMathRegistrationSkip && hasOnboardingUrl) { - redirectUrl = plugin.onboardingUrl; - } - } else if (forceOnboarding && hasOnboardingUrl) { - redirectUrl = plugin.onboardingUrl; + if (!rankMathRegistrationSkip && hasOnboardingUrl) { + redirectUrl = plugin.onboardingUrl; } + } else if (forceOnboarding && hasOnboardingUrl) { + redirectUrl = plugin.onboardingUrl; + } - return redirectUrl; + return redirectUrl; }; /** @@ -32,30 +35,32 @@ export const getPluginRedirectUrl = (plugin, forceOnboarding = false) => { * @param {string} redirectPath The relative path to redirect to. */ export const navigateToPluginUrl = (redirectPath) => { - if (redirectPath && redirectPath.trim() !== '') { - // Get the admin URL from config (provided by PHP) - const adminUrl = typeof window.marketplaceConfig !== "undefined" && window.marketplaceConfig?.wpConfig?.adminUrl; + if (redirectPath && redirectPath.trim() !== '') { + // Get the admin URL from config (provided by PHP) + const adminUrl = + typeof window.marketplaceConfig !== 'undefined' && + window.marketplaceConfig?.wpConfig?.adminUrl; - if (adminUrl) { - // Construct full URL using adminUrl from PHP config - // adminUrl is like "https://example.com/wp-admin/" - // redirectUrl comes as "wp-admin\/admin.php?page=termly" (JSON unescapes \/ to /) - // Strip "wp-admin/" prefix from redirectUrl if present to avoid duplication - let cleanPath = redirectPath; - if (cleanPath.startsWith('wp-admin/')) { - cleanPath = cleanPath.substring('wp-admin/'.length); - } - const fullUrl = `${adminUrl}${cleanPath}`; - window.location.href = fullUrl; - } else { - // Fallback: use window.location.origin if adminUrl not available - const siteUrl = window.location.origin; - const fullUrl = `${siteUrl}/${redirectPath}`; - window.location.href = fullUrl; - } - return; + if (adminUrl) { + // Construct full URL using adminUrl from PHP config + // adminUrl is like "https://example.com/wp-admin/" + // redirectUrl comes as "wp-admin\/admin.php?page=termly" (JSON unescapes \/ to /) + // Strip "wp-admin/" prefix from redirectUrl if present to avoid duplication + let cleanPath = redirectPath; + if (cleanPath.startsWith('wp-admin/')) { + cleanPath = cleanPath.substring('wp-admin/'.length); + } + const fullUrl = `${adminUrl}${cleanPath}`; + window.location.href = fullUrl; + } else { + // Fallback: use window.location.origin if adminUrl not available + const siteUrl = window.location.origin; + const fullUrl = `${siteUrl}/${redirectPath}`; + window.location.href = fullUrl; } + return; + } - // Fallback to plugins page - window.location.href = '/wp-admin/plugins.php'; + // Fallback to plugins page + window.location.href = '/wp-admin/plugins.php'; }; diff --git a/frontend/src/utils/wpVersionHelper.js b/frontend/src/utils/wpVersionHelper.js index 2b0bf24..8e4a3ab 100644 --- a/frontend/src/utils/wpVersionHelper.js +++ b/frontend/src/utils/wpVersionHelper.js @@ -1,12 +1,12 @@ export const isWpVersionSupported = (version, minVersion) => { - if (!version) return true; - const v1 = String(version).split('.'); - const v2 = String(minVersion).split('.'); - for (let i = 0; i < Math.max(v1.length, v2.length); i++) { - const num1 = parseInt(v1[i] || 0, 10); - const num2 = parseInt(v2[i] || 0, 10); - if (num1 > num2) return true; - if (num1 < num2) return false; - } - return true; + if (!version) return true; + const v1 = String(version).split('.'); + const v2 = String(minVersion).split('.'); + for (let i = 0; i < Math.max(v1.length, v2.length); i++) { + const num1 = parseInt(v1[i] || 0, 10); + const num2 = parseInt(v2[i] || 0, 10); + if (num1 > num2) return true; + if (num1 < num2) return false; + } + return true; }; diff --git a/frontend/standalone/index.es.js b/frontend/standalone/index.es.js deleted file mode 100644 index 89adcce..0000000 --- a/frontend/standalone/index.es.js +++ /dev/null @@ -1,1081 +0,0 @@ -import tt, { createContext as Pt, useContext as Ot, useCallback as Mt, useState as te, useRef as rt, useEffect as oe } from "react"; -var ge = { exports: {} }, Q = {}; -/** - * @license React - * react-jsx-runtime.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -var Xe; -function It() { - if (Xe) return Q; - Xe = 1; - var r = tt, t = Symbol.for("react.element"), n = Symbol.for("react.fragment"), i = Object.prototype.hasOwnProperty, g = r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, c = { key: !0, ref: !0, __self: !0, __source: !0 }; - function T(s, d, h) { - var m, k = {}, N = null, M = null; - h !== void 0 && (N = "" + h), d.key !== void 0 && (N = "" + d.key), d.ref !== void 0 && (M = d.ref); - for (m in d) i.call(d, m) && !c.hasOwnProperty(m) && (k[m] = d[m]); - if (s && s.defaultProps) for (m in d = s.defaultProps, d) k[m] === void 0 && (k[m] = d[m]); - return { $$typeof: t, type: s, key: N, ref: M, props: k, _owner: g.current }; - } - return Q.Fragment = n, Q.jsx = T, Q.jsxs = T, Q; -} -var ee = {}; -/** - * @license React - * react-jsx-runtime.development.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -var Ze; -function Ft() { - return Ze || (Ze = 1, process.env.NODE_ENV !== "production" && function() { - var r = tt, t = Symbol.for("react.element"), n = Symbol.for("react.portal"), i = Symbol.for("react.fragment"), g = Symbol.for("react.strict_mode"), c = Symbol.for("react.profiler"), T = Symbol.for("react.provider"), s = Symbol.for("react.context"), d = Symbol.for("react.forward_ref"), h = Symbol.for("react.suspense"), m = Symbol.for("react.suspense_list"), k = Symbol.for("react.memo"), N = Symbol.for("react.lazy"), M = Symbol.for("react.offscreen"), z = Symbol.iterator, G = "@@iterator"; - function L(e) { - if (e === null || typeof e != "object") - return null; - var a = z && e[z] || e[G]; - return typeof a == "function" ? a : null; - } - var I = r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; - function p(e) { - { - for (var a = arguments.length, o = new Array(a > 1 ? a - 1 : 0), l = 1; l < a; l++) - o[l - 1] = arguments[l]; - _("error", e, o); - } - } - function _(e, a, o) { - { - var l = I.ReactDebugCurrentFrame, v = l.getStackAddendum(); - v !== "" && (a += "%s", o = o.concat([v])); - var y = o.map(function(f) { - return String(f); - }); - y.unshift("Warning: " + a), Function.prototype.apply.call(console[e], console, y); - } - } - var C = !1, b = !1, x = !1, $ = !1, A = !1, j; - j = Symbol.for("react.module.reference"); - function F(e) { - return !!(typeof e == "string" || typeof e == "function" || e === i || e === c || A || e === g || e === h || e === m || $ || e === M || C || b || x || typeof e == "object" && e !== null && (e.$$typeof === N || e.$$typeof === k || e.$$typeof === T || e.$$typeof === s || e.$$typeof === d || // This needs to include all possible module reference object - // types supported by any Flight configuration anywhere since - // we don't know which Flight build this will end up being used - // with. - e.$$typeof === j || e.getModuleId !== void 0)); - } - function S(e, a, o) { - var l = e.displayName; - if (l) - return l; - var v = a.displayName || a.name || ""; - return v !== "" ? o + "(" + v + ")" : o; - } - function Re(e) { - return e.displayName || "Context"; - } - function W(e) { - if (e == null) - return null; - if (typeof e.tag == "number" && p("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), typeof e == "function") - return e.displayName || e.name || null; - if (typeof e == "string") - return e; - switch (e) { - case i: - return "Fragment"; - case n: - return "Portal"; - case c: - return "Profiler"; - case g: - return "StrictMode"; - case h: - return "Suspense"; - case m: - return "SuspenseList"; - } - if (typeof e == "object") - switch (e.$$typeof) { - case s: - var a = e; - return Re(a) + ".Consumer"; - case T: - var o = e; - return Re(o._context) + ".Provider"; - case d: - return S(e, e.render, "ForwardRef"); - case k: - var l = e.displayName || null; - return l !== null ? l : W(e.type) || "Memo"; - case N: { - var v = e, y = v._payload, f = v._init; - try { - return W(f(y)); - } catch { - return null; - } - } - } - return null; - } - var J = Object.assign, X = 0, ke, je, Ne, Se, Pe, Oe, Me; - function Ie() { - } - Ie.__reactDisabledLog = !0; - function st() { - { - if (X === 0) { - ke = console.log, je = console.info, Ne = console.warn, Se = console.error, Pe = console.group, Oe = console.groupCollapsed, Me = console.groupEnd; - var e = { - configurable: !0, - enumerable: !0, - value: Ie, - writable: !0 - }; - Object.defineProperties(console, { - info: e, - log: e, - warn: e, - error: e, - group: e, - groupCollapsed: e, - groupEnd: e - }); - } - X++; - } - } - function ot() { - { - if (X--, X === 0) { - var e = { - configurable: !0, - enumerable: !0, - writable: !0 - }; - Object.defineProperties(console, { - log: J({}, e, { - value: ke - }), - info: J({}, e, { - value: je - }), - warn: J({}, e, { - value: Ne - }), - error: J({}, e, { - value: Se - }), - group: J({}, e, { - value: Pe - }), - groupCollapsed: J({}, e, { - value: Oe - }), - groupEnd: J({}, e, { - value: Me - }) - }); - } - X < 0 && p("disabledDepth fell below zero. This is a bug in React. Please file an issue."); - } - } - var ie = I.ReactCurrentDispatcher, ce; - function re(e, a, o) { - { - if (ce === void 0) - try { - throw Error(); - } catch (v) { - var l = v.stack.trim().match(/\n( *(at )?)/); - ce = l && l[1] || ""; - } - return ` -` + ce + e; - } - } - var le = !1, ae; - { - var it = typeof WeakMap == "function" ? WeakMap : Map; - ae = new it(); - } - function Fe(e, a) { - if (!e || le) - return ""; - { - var o = ae.get(e); - if (o !== void 0) - return o; - } - var l; - le = !0; - var v = Error.prepareStackTrace; - Error.prepareStackTrace = void 0; - var y; - y = ie.current, ie.current = null, st(); - try { - if (a) { - var f = function() { - throw Error(); - }; - if (Object.defineProperty(f.prototype, "props", { - set: function() { - throw Error(); - } - }), typeof Reflect == "object" && Reflect.construct) { - try { - Reflect.construct(f, []); - } catch (O) { - l = O; - } - Reflect.construct(e, [], f); - } else { - try { - f.call(); - } catch (O) { - l = O; - } - e.call(f.prototype); - } - } else { - try { - throw Error(); - } catch (O) { - l = O; - } - e(); - } - } catch (O) { - if (O && l && typeof O.stack == "string") { - for (var u = O.stack.split(` -`), P = l.stack.split(` -`), w = u.length - 1, R = P.length - 1; w >= 1 && R >= 0 && u[w] !== P[R]; ) - R--; - for (; w >= 1 && R >= 0; w--, R--) - if (u[w] !== P[R]) { - if (w !== 1 || R !== 1) - do - if (w--, R--, R < 0 || u[w] !== P[R]) { - var D = ` -` + u[w].replace(" at new ", " at "); - return e.displayName && D.includes("") && (D = D.replace("", e.displayName)), typeof e == "function" && ae.set(e, D), D; - } - while (w >= 1 && R >= 0); - break; - } - } - } finally { - le = !1, ie.current = y, ot(), Error.prepareStackTrace = v; - } - var V = e ? e.displayName || e.name : "", q = V ? re(V) : ""; - return typeof e == "function" && ae.set(e, q), q; - } - function ct(e, a, o) { - return Fe(e, !1); - } - function lt(e) { - var a = e.prototype; - return !!(a && a.isReactComponent); - } - function ne(e, a, o) { - if (e == null) - return ""; - if (typeof e == "function") - return Fe(e, lt(e)); - if (typeof e == "string") - return re(e); - switch (e) { - case h: - return re("Suspense"); - case m: - return re("SuspenseList"); - } - if (typeof e == "object") - switch (e.$$typeof) { - case d: - return ct(e.render); - case k: - return ne(e.type, a, o); - case N: { - var l = e, v = l._payload, y = l._init; - try { - return ne(y(v), a, o); - } catch { - } - } - } - return ""; - } - var Z = Object.prototype.hasOwnProperty, Le = {}, De = I.ReactDebugCurrentFrame; - function se(e) { - if (e) { - var a = e._owner, o = ne(e.type, e._source, a ? a.type : null); - De.setExtraStackFrame(o); - } else - De.setExtraStackFrame(null); - } - function ut(e, a, o, l, v) { - { - var y = Function.call.bind(Z); - for (var f in e) - if (y(e, f)) { - var u = void 0; - try { - if (typeof e[f] != "function") { - var P = Error((l || "React class") + ": " + o + " type `" + f + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof e[f] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`."); - throw P.name = "Invariant Violation", P; - } - u = e[f](a, f, l, o, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"); - } catch (w) { - u = w; - } - u && !(u instanceof Error) && (se(v), p("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", l || "React class", o, f, typeof u), se(null)), u instanceof Error && !(u.message in Le) && (Le[u.message] = !0, se(v), p("Failed %s type: %s", o, u.message), se(null)); - } - } - } - var ft = Array.isArray; - function ue(e) { - return ft(e); - } - function dt(e) { - { - var a = typeof Symbol == "function" && Symbol.toStringTag, o = a && e[Symbol.toStringTag] || e.constructor.name || "Object"; - return o; - } - } - function vt(e) { - try { - return $e(e), !1; - } catch { - return !0; - } - } - function $e(e) { - return "" + e; - } - function Ge(e) { - if (vt(e)) - return p("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", dt(e)), $e(e); - } - var We = I.ReactCurrentOwner, ht = { - key: !0, - ref: !0, - __self: !0, - __source: !0 - }, Ye, Ue; - function mt(e) { - if (Z.call(e, "ref")) { - var a = Object.getOwnPropertyDescriptor(e, "ref").get; - if (a && a.isReactWarning) - return !1; - } - return e.ref !== void 0; - } - function gt(e) { - if (Z.call(e, "key")) { - var a = Object.getOwnPropertyDescriptor(e, "key").get; - if (a && a.isReactWarning) - return !1; - } - return e.key !== void 0; - } - function bt(e, a) { - typeof e.ref == "string" && We.current; - } - function yt(e, a) { - { - var o = function() { - Ye || (Ye = !0, p("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", a)); - }; - o.isReactWarning = !0, Object.defineProperty(e, "key", { - get: o, - configurable: !0 - }); - } - } - function Et(e, a) { - { - var o = function() { - Ue || (Ue = !0, p("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", a)); - }; - o.isReactWarning = !0, Object.defineProperty(e, "ref", { - get: o, - configurable: !0 - }); - } - } - var _t = function(e, a, o, l, v, y, f) { - var u = { - // This tag allows us to uniquely identify this as a React Element - $$typeof: t, - // Built-in properties that belong on the element - type: e, - key: a, - ref: o, - props: f, - // Record the component responsible for creating this element. - _owner: y - }; - return u._store = {}, Object.defineProperty(u._store, "validated", { - configurable: !1, - enumerable: !1, - writable: !0, - value: !1 - }), Object.defineProperty(u, "_self", { - configurable: !1, - enumerable: !1, - writable: !1, - value: l - }), Object.defineProperty(u, "_source", { - configurable: !1, - enumerable: !1, - writable: !1, - value: v - }), Object.freeze && (Object.freeze(u.props), Object.freeze(u)), u; - }; - function pt(e, a, o, l, v) { - { - var y, f = {}, u = null, P = null; - o !== void 0 && (Ge(o), u = "" + o), gt(a) && (Ge(a.key), u = "" + a.key), mt(a) && (P = a.ref, bt(a, v)); - for (y in a) - Z.call(a, y) && !ht.hasOwnProperty(y) && (f[y] = a[y]); - if (e && e.defaultProps) { - var w = e.defaultProps; - for (y in w) - f[y] === void 0 && (f[y] = w[y]); - } - if (u || P) { - var R = typeof e == "function" ? e.displayName || e.name || "Unknown" : e; - u && yt(f, R), P && Et(f, R); - } - return _t(e, u, P, v, l, We.current, f); - } - } - var fe = I.ReactCurrentOwner, He = I.ReactDebugCurrentFrame; - function K(e) { - if (e) { - var a = e._owner, o = ne(e.type, e._source, a ? a.type : null); - He.setExtraStackFrame(o); - } else - He.setExtraStackFrame(null); - } - var de; - de = !1; - function ve(e) { - return typeof e == "object" && e !== null && e.$$typeof === t; - } - function ze() { - { - if (fe.current) { - var e = W(fe.current.type); - if (e) - return ` - -Check the render method of \`` + e + "`."; - } - return ""; - } - } - function Tt(e) { - return ""; - } - var Je = {}; - function Ct(e) { - { - var a = ze(); - if (!a) { - var o = typeof e == "string" ? e : e.displayName || e.name; - o && (a = ` - -Check the top-level render call using <` + o + ">."); - } - return a; - } - } - function qe(e, a) { - { - if (!e._store || e._store.validated || e.key != null) - return; - e._store.validated = !0; - var o = Ct(a); - if (Je[o]) - return; - Je[o] = !0; - var l = ""; - e && e._owner && e._owner !== fe.current && (l = " It was passed a child from " + W(e._owner.type) + "."), K(e), p('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', o, l), K(null); - } - } - function Be(e, a) { - { - if (typeof e != "object") - return; - if (ue(e)) - for (var o = 0; o < e.length; o++) { - var l = e[o]; - ve(l) && qe(l, a); - } - else if (ve(e)) - e._store && (e._store.validated = !0); - else if (e) { - var v = L(e); - if (typeof v == "function" && v !== e.entries) - for (var y = v.call(e), f; !(f = y.next()).done; ) - ve(f.value) && qe(f.value, a); - } - } - } - function xt(e) { - { - var a = e.type; - if (a == null || typeof a == "string") - return; - var o; - if (typeof a == "function") - o = a.propTypes; - else if (typeof a == "object" && (a.$$typeof === d || // Note: Memo only checks outer props here. - // Inner props are checked in the reconciler. - a.$$typeof === k)) - o = a.propTypes; - else - return; - if (o) { - var l = W(a); - ut(o, e.props, "prop", l, e); - } else if (a.PropTypes !== void 0 && !de) { - de = !0; - var v = W(a); - p("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", v || "Unknown"); - } - typeof a.getDefaultProps == "function" && !a.getDefaultProps.isReactClassApproved && p("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead."); - } - } - function At(e) { - { - for (var a = Object.keys(e.props), o = 0; o < a.length; o++) { - var l = a[o]; - if (l !== "children" && l !== "key") { - K(e), p("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", l), K(null); - break; - } - } - e.ref !== null && (K(e), p("Invalid attribute `ref` supplied to `React.Fragment`."), K(null)); - } - } - var Ke = {}; - function Ve(e, a, o, l, v, y) { - { - var f = F(e); - if (!f) { - var u = ""; - (e === void 0 || typeof e == "object" && e !== null && Object.keys(e).length === 0) && (u += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports."); - var P = Tt(); - P ? u += P : u += ze(); - var w; - e === null ? w = "null" : ue(e) ? w = "array" : e !== void 0 && e.$$typeof === t ? (w = "<" + (W(e.type) || "Unknown") + " />", u = " Did you accidentally export a JSX literal instead of a component?") : w = typeof e, p("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", w, u); - } - var R = pt(e, a, o, v, y); - if (R == null) - return R; - if (f) { - var D = a.children; - if (D !== void 0) - if (l) - if (ue(D)) { - for (var V = 0; V < D.length; V++) - Be(D[V], e); - Object.freeze && Object.freeze(D); - } else - p("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."); - else - Be(D, e); - } - if (Z.call(a, "key")) { - var q = W(e), O = Object.keys(a).filter(function(St) { - return St !== "key"; - }), he = O.length > 0 ? "{key: someKey, " + O.join(": ..., ") + ": ...}" : "{key: someKey}"; - if (!Ke[q + he]) { - var Nt = O.length > 0 ? "{" + O.join(": ..., ") + ": ...}" : "{}"; - p(`A props object containing a "key" prop is being spread into JSX: - let props = %s; - <%s {...props} /> -React keys must be passed directly to JSX without using spread: - let props = %s; - <%s key={someKey} {...props} />`, he, q, Nt, q), Ke[q + he] = !0; - } - } - return e === i ? At(R) : xt(R), R; - } - } - function wt(e, a, o) { - return Ve(e, a, o, !0); - } - function Rt(e, a, o) { - return Ve(e, a, o, !1); - } - var kt = Rt, jt = wt; - ee.Fragment = i, ee.jsx = kt, ee.jsxs = jt; - }()), ee; -} -process.env.NODE_ENV === "production" ? ge.exports = It() : ge.exports = Ft(); -var E = ge.exports; -function Lt(r) { - var T; - const t = Array.isArray((T = r == null ? void 0 : r.data) == null ? void 0 : T.sections) ? r.data.sections : Array.isArray(r == null ? void 0 : r.sections) ? r.sections : null; - if (!t) return []; - const i = t.filter((s) => !s.type || s.type === "plugin").flatMap((s) => Array.isArray(s.items) ? s.items : []).filter((s) => s && (s.slug || s.name)); - if (i.length === 0) return []; - const g = i.map((s) => { - const d = typeof (s == null ? void 0 : s.description) == "object" && s.description !== null ? s.description["en-gb"] || Object.values(s.description)[0] || "" : (s == null ? void 0 : s.description) || "", h = (s == null ? void 0 : s.download) || (s == null ? void 0 : s.download_url) || (s == null ? void 0 : s.downloadUrl) || "", m = typeof (s == null ? void 0 : s.author) == "object" && s.author !== null ? s.author.name || "" : (s == null ? void 0 : s.author) || "", k = typeof (s == null ? void 0 : s.author) == "object" && s.author !== null && s.author.url || "", N = typeof (s == null ? void 0 : s.price) == "object" && s.price !== null ? s.price.amount : void 0, M = typeof (s == null ? void 0 : s.price) == "object" && s.price !== null ? s.price.currency : void 0; - return { - ...s, - name: (s == null ? void 0 : s.name) || "Unknown", - slug: (s == null ? void 0 : s.slug) || "", - thumbnail: (s == null ? void 0 : s.thumbnail) || "", - description: d, - download: h, - author: m, - authorUrl: k, - priceAmount: N, - priceCurrency: M, - installed: (s == null ? void 0 : s.installed) ?? !1, - activated: (s == null ? void 0 : s.activated) ?? !1 - }; - }), c = /* @__PURE__ */ new Set(); - return g.filter((s) => { - const d = s.slug || s.name || JSON.stringify(s); - return c.has(d) ? !1 : (c.add(d), !0); - }); -} -function Dt({ plugin: r, pluginInAction: t, onAction: n }) { - var g, c, T, s, d, h; - const i = (m) => { - n(m, r); - }; - return /* @__PURE__ */ E.jsx("div", { className: "plugin-actions gv-card-content gv-flex gv-gap-sm gv-mt-md", children: r.installed ? r.activated ? /* @__PURE__ */ E.jsx( - "button", - { - className: "gv-button gv-button-secondary", - disabled: t[r.slug], - onClick: () => i("deactivate"), - children: t[r.slug] ? ((g = marketplaceConfig == null ? void 0 : marketplaceConfig.labels) == null ? void 0 : g.deactivating) || "Deactivating..." : ((c = marketplaceConfig == null ? void 0 : marketplaceConfig.labels) == null ? void 0 : c.deactivate) || "Deactivate" - } - ) : /* @__PURE__ */ E.jsx( - "button", - { - className: "gv-button gv-button-primary", - disabled: t[r.slug], - onClick: () => i("activate"), - children: t[r.slug] ? ((T = marketplaceConfig == null ? void 0 : marketplaceConfig.labels) == null ? void 0 : T.activating) || "Activating..." : ((s = marketplaceConfig == null ? void 0 : marketplaceConfig.labels) == null ? void 0 : s.activate) || "Activate" - } - ) : /* @__PURE__ */ E.jsx( - "button", - { - className: "gv-button gv-button-secondary", - disabled: t[r.slug], - onClick: () => i("install"), - children: t[r.slug] ? ((d = marketplaceConfig == null ? void 0 : marketplaceConfig.labels) == null ? void 0 : d.installing) || "Installing..." : ((h = marketplaceConfig == null ? void 0 : marketplaceConfig.labels) == null ? void 0 : h.install) || "Install" - } - ) }); -} -var $t = Object.defineProperty, Gt = (r, t, n) => t in r ? $t(r, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : r[t] = n, Y = (r, t, n) => (Gt(r, t + "", n), n); -const me = {}; -async function U(r) { - if (me.hasOwnProperty(r)) - return me[r]; - let t; - return r.startsWith("data:") || !("caches" in self) ? t = fetch(r).then((n) => n.text()) : t = caches.open("gravity").then(async (n) => { - let i = await n.match(r); - return i || (i = await fetch(r), i.ok && await n.put(r, i.clone())), i.text(); - }), me[r] = t, t; -} -class be extends HTMLElement { - static get observedAttributes() { - return ["src"]; - } - fetchFlag(t) { - t && U(t).then((n) => this.innerHTML = n); - } - connectedCallback() { - this.fetchFlag(this.getAttribute("src")); - } - attributeChangedCallback(t, n, i) { - t === "src" && n !== i && this.fetchFlag(i); - } -} -Y(be, "TAG_NAME", "gv-flag"); -class ye extends HTMLElement { - static get observedAttributes() { - return ["src"]; - } - fetchIcon(t) { - t && U(t).then((n) => this.innerHTML = n); - } - connectedCallback() { - this.fetchIcon(this.getAttribute("src")); - } - attributeChangedCallback(t, n, i) { - t === "src" && n !== i && this.fetchIcon(i); - } -} -Y(ye, "TAG_NAME", "gv-icon"); -class Ee extends HTMLElement { - static get observedAttributes() { - return ["src"]; - } - fetchIllustration(t) { - t && U(t).then((n) => this.innerHTML = n); - } - connectedCallback() { - this.fetchIllustration(this.getAttribute("src")); - } - attributeChangedCallback(t, n, i) { - t === "src" && n !== i && this.fetchIllustration(i); - } -} -Y(Ee, "TAG_NAME", "gv-illustration"); -class _e extends HTMLElement { - static get observedAttributes() { - return ["src"]; - } - fetchIndicator(t) { - t && U(t).then((n) => this.innerHTML = n); - } - connectedCallback() { - this.fetchIndicator(this.getAttribute("src")); - } - attributeChangedCallback(t, n, i) { - t === "src" && n !== i && this.fetchIndicator(i); - } -} -Y(_e, "TAG_NAME", "gv-indicator"); -class pe extends HTMLElement { - static get observedAttributes() { - return ["src"]; - } - fetchLoader(t) { - t && U(t).then((n) => this.innerHTML = n); - } - connectedCallback() { - this.fetchLoader(this.getAttribute("src")); - } - attributeChangedCallback(t, n, i) { - t === "src" && n !== i && this.fetchLoader(i); - } -} -Y(pe, "TAG_NAME", "gv-loader"); -class Te extends HTMLElement { - static get observedAttributes() { - return ["src"]; - } - fetchLogo(t) { - t && U(t).then((n) => this.innerHTML = n); - } - connectedCallback() { - this.fetchLogo(this.getAttribute("src")); - } - attributeChangedCallback(t, n, i) { - t === "src" && n !== i && this.fetchLogo(i); - } -} -Y(Te, "TAG_NAME", "gv-logo"); -class Ce extends HTMLElement { - static get observedAttributes() { - return ["src"]; - } - fetchPayIcon(t) { - t && U(t).then((n) => this.innerHTML = n); - } - connectedCallback() { - this.fetchPayIcon(this.getAttribute("src")); - } - attributeChangedCallback(t, n, i) { - t === "src" && n !== i && this.fetchPayIcon(i); - } -} -Y(Ce, "TAG_NAME", "gv-pay-icon"); -class xe extends HTMLElement { - static get observedAttributes() { - return ["src"]; - } - fetchTile(t) { - t && U(t).then((n) => this.innerHTML = n); - } - connectedCallback() { - this.fetchTile(this.getAttribute("src")); - } - attributeChangedCallback(t, n, i) { - t === "src" && n !== i && this.fetchTile(i); - } -} -Y(xe, "TAG_NAME", "gv-tile"); -function H(r, t) { - customElements.get(r) || customElements.define(r, t); -} -H(be.TAG_NAME, be); -H(ye.TAG_NAME, ye); -H(Ee.TAG_NAME, Ee); -H(_e.TAG_NAME, _e); -H(pe.TAG_NAME, pe); -H(Te.TAG_NAME, Te); -H(Ce.TAG_NAME, Ce); -H(xe.TAG_NAME, xe); -const Wt = (r, t, n, i) => { - var c, T, s, d; - const g = [n, { - code: t, - ...i || {} - }]; - if ((T = (c = r == null ? void 0 : r.services) == null ? void 0 : c.logger) != null && T.forward) - return r.services.logger.forward(g, "warn", "react-i18next::", !0); - B(g[0]) && (g[0] = `react-i18next:: ${g[0]}`), (d = (s = r == null ? void 0 : r.services) == null ? void 0 : s.logger) != null && d.warn ? r.services.logger.warn(...g) : console != null && console.warn && console.warn(...g); -}, Qe = {}, Ae = (r, t, n, i) => { - B(n) && Qe[n] || (B(n) && (Qe[n] = /* @__PURE__ */ new Date()), Wt(r, t, n, i)); -}, at = (r, t) => () => { - if (r.isInitialized) - t(); - else { - const n = () => { - setTimeout(() => { - r.off("initialized", n); - }, 0), t(); - }; - r.on("initialized", n); - } -}, we = (r, t, n) => { - r.loadNamespaces(t, at(r, n)); -}, et = (r, t, n, i) => { - if (B(n) && (n = [n]), r.options.preload && r.options.preload.indexOf(t) > -1) return we(r, n, i); - n.forEach((g) => { - r.options.ns.indexOf(g) < 0 && r.options.ns.push(g); - }), r.loadLanguages(t, at(r, i)); -}, Yt = (r, t, n = {}) => !t.languages || !t.languages.length ? (Ae(t, "NO_LANGUAGES", "i18n.languages were undefined or empty", { - languages: t.languages -}), !0) : t.hasLoadedNamespace(r, { - lng: n.lng, - precheck: (i, g) => { - if (n.bindI18n && n.bindI18n.indexOf("languageChanging") > -1 && i.services.backendConnector.backend && i.isLanguageChangingTo && !g(i.isLanguageChangingTo, r)) return !1; - } -}), B = (r) => typeof r == "string", Ut = (r) => typeof r == "object" && r !== null, Ht = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g, zt = { - "&": "&", - "&": "&", - "<": "<", - "<": "<", - ">": ">", - ">": ">", - "'": "'", - "'": "'", - """: '"', - """: '"', - " ": " ", - " ": " ", - "©": "©", - "©": "©", - "®": "®", - "®": "®", - "…": "…", - "…": "…", - "/": "/", - "/": "/" -}, Jt = (r) => zt[r], qt = (r) => r.replace(Ht, Jt); -let Bt = { - bindI18n: "languageChanged", - bindI18nStore: "", - transEmptyNodeValue: "", - transSupportBasicHtmlNodes: !0, - transWrapTextNodes: "", - transKeepBasicHtmlNodesFor: ["br", "strong", "i", "p"], - useSuspense: !0, - unescape: qt -}; -const Kt = () => Bt; -let Vt; -const Xt = () => Vt, Zt = Pt(); -class Qt { - constructor() { - this.usedNamespaces = {}; - } - addUsedNamespaces(t) { - t.forEach((n) => { - this.usedNamespaces[n] || (this.usedNamespaces[n] = !0); - }); - } - getUsedNamespaces() { - return Object.keys(this.usedNamespaces); - } -} -const er = (r, t) => { - const n = rt(); - return oe(() => { - n.current = r; - }, [r, t]), n.current; -}, nt = (r, t, n, i) => r.getFixedT(t, n, i), tr = (r, t, n, i) => Mt(nt(r, t, n, i), [r, t, n, i]), rr = (r, t = {}) => { - var C, b, x, $; - const { - i18n: n - } = t, { - i18n: i, - defaultNS: g - } = Ot(Zt) || {}, c = n || i || Xt(); - if (c && !c.reportNamespaces && (c.reportNamespaces = new Qt()), !c) { - Ae(c, "NO_I18NEXT_INSTANCE", "useTranslation: You will need to pass in an i18next instance by using initReactI18next"); - const A = (F, S) => B(S) ? S : Ut(S) && B(S.defaultValue) ? S.defaultValue : Array.isArray(F) ? F[F.length - 1] : F, j = [A, {}, !1]; - return j.t = A, j.i18n = {}, j.ready = !1, j; - } - (C = c.options.react) != null && C.wait && Ae(c, "DEPRECATED_OPTION", "useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour."); - const T = { - ...Kt(), - ...c.options.react, - ...t - }, { - useSuspense: s, - keyPrefix: d - } = T; - let h = g || ((b = c.options) == null ? void 0 : b.defaultNS); - h = B(h) ? [h] : h || ["translation"], ($ = (x = c.reportNamespaces).addUsedNamespaces) == null || $.call(x, h); - const m = (c.isInitialized || c.initializedStoreOnce) && h.every((A) => Yt(A, c, T)), k = tr(c, t.lng || null, T.nsMode === "fallback" ? h : h[0], d), N = () => k, M = () => nt(c, t.lng || null, T.nsMode === "fallback" ? h : h[0], d), [z, G] = te(N); - let L = h.join(); - t.lng && (L = `${t.lng}${L}`); - const I = er(L), p = rt(!0); - oe(() => { - const { - bindI18n: A, - bindI18nStore: j - } = T; - p.current = !0, !m && !s && (t.lng ? et(c, t.lng, h, () => { - p.current && G(M); - }) : we(c, h, () => { - p.current && G(M); - })), m && I && I !== L && p.current && G(M); - const F = () => { - p.current && G(M); - }; - return A && (c == null || c.on(A, F)), j && (c == null || c.store.on(j, F)), () => { - p.current = !1, c && A && (A == null || A.split(" ").forEach((S) => c.off(S, F))), j && c && j.split(" ").forEach((S) => c.store.off(S, F)); - }; - }, [c, L]), oe(() => { - p.current && m && G(N); - }, [c, d, m]); - const _ = [z, c, m]; - if (_.t = z, _.i18n = c, _.ready = m, m || !m && !s) return _; - throw new Promise((A) => { - t.lng ? et(c, t.lng, h, () => A()) : we(c, h, () => A()); - }); -}; -function ar({ apiBaseUrl: r, useWPHandlers: t, wpConfig: n, enableDefaultStyles: i, assetsBaseUrl: g }) { - const [c, T] = te([]), [s, d] = te(!0), [h, m] = te({}), [k, N] = te({}), { t: M } = rr(); - oe(() => { - async function _() { - try { - const b = await (await fetch(`${r}`)).json(), x = Lt(b); - T(x); - } catch (C) { - console.error("Failed to fetch plugins", C); - } finally { - d(!1); - } - } - _(); - }, [r, t, n]); - const z = async (_, C) => { - var b; - m((x) => ({ ...x, [C.slug]: !0 })); - try { - let x = `${r}/${_}/${C.slug}`; - const $ = `download_url=${encodeURIComponent(C.download || "")}`; - t ? x = `${n.ajax_url}?action=marketplace_${_}_plugin&_wpnonce=${n.nonce}&nonce=${n.nonce}&slug=${C.slug}&${$}` : x = x + (x.includes("?") ? "&" : "?") + $; - const j = await (await fetch(x, { method: "POST" })).json(); - j.success ? T( - (F) => F.map( - (S) => S.slug === C.slug ? { ...S, installed: j.data.installed, activated: j.data.activated } : S - ) - ) : alert(((b = j.data) == null ? void 0 : b.message) || "Failed to perform action"); - } catch (x) { - console.error("Plugin action failed", x); - } finally { - m((x) => ({ ...x, [C.slug]: !1 })); - } - }, G = (_, C) => { - _.stopPropagation(), N((b) => ({ ...b, [C.slug]: !0 })), setTimeout(() => { - N((b) => ({ ...b, [C.slug]: !1 })); - }, 2e3); - }; - if (s) return /* @__PURE__ */ E.jsx("p", { children: "Loading plugins..." }); - const L = /* @__PURE__ */ new Map(), I = /* @__PURE__ */ new Map(); - c.forEach((_) => { - I.has(_.slug) || I.set(_.slug, _); - }), Array.from(I.values()).forEach((_) => { - const C = Array.isArray(_.categories) && _.categories.length ? String(_.categories[0]) : "Others"; - L.has(C) || L.set(C, []), L.get(C).push(_); - }); - const p = Array.from(L.entries()); - return /* @__PURE__ */ E.jsx("div", { className: "marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg gv-mt-fluid", children: p.map(([_, C]) => /* @__PURE__ */ E.jsxs("section", { className: "", children: [ - /* @__PURE__ */ E.jsx("h2", { className: "gv-heading-md gv-mb-sm", children: _ }), - /* @__PURE__ */ E.jsx("div", { className: "gv-grid gv-gap-lg gv-tab-grid-cols-1 gv-desk-grid-cols-2", children: C.map((b) => { - var x, $; - return /* @__PURE__ */ E.jsxs("a", { href: "#", className: "gv-shortcut-tile gv-surface-bright", onClick: (A) => A.preventDefault(), children: [ - /* @__PURE__ */ E.jsx("gv-tile", { "aria-hidden": "true", src: `${g || window.marketplaceConfig && window.marketplaceConfig.assetsBaseUrl || ""}assets/icons/placeholder.svg` }), - /* @__PURE__ */ E.jsxs("div", { className: "gv-content", children: [ - /* @__PURE__ */ E.jsx("h3", { className: "gv-title", children: b.name }), - /* @__PURE__ */ E.jsx("p", { children: b.description ? b.description : b.shortDescription }), - /* @__PURE__ */ E.jsxs("div", { className: "gv-price", children: [ - /* @__PURE__ */ E.jsx("span", { className: "gv-price-prefix", children: M("migratorMail_hi") }), - /* @__PURE__ */ E.jsxs("span", { className: "gv-price-text", children: [ - b.priceCurrency, - " ", - b.priceAmount - ] }), - /* @__PURE__ */ E.jsx("span", { className: "gv-period", children: "/mo" }) - ] }) - ] }), - /* @__PURE__ */ E.jsx("gv-icon", { "aria-hidden": "true", src: `${g || window.marketplaceConfig && window.marketplaceConfig.assetsBaseUrl || ""}assets/icons/arrow_forward.svg` }), - t ? /* @__PURE__ */ E.jsx( - Dt, - { - plugin: b, - pluginInAction: h, - onAction: z - } - ) : b.download && /* @__PURE__ */ E.jsx("div", { className: "plugin-actions gv-card-content gv-flex gv-gap-sm gv-mt-md", children: /* @__PURE__ */ E.jsx( - "a", - { - href: b.download, - download: !0, - className: "gv-button gv-button-secondary", - onClick: (A) => G(A, b), - style: { - pointerEvents: k[b.slug] ? "none" : "auto", - opacity: k[b.slug] ? 0.6 : 1 - }, - children: k[b.slug] ? ((x = marketplaceConfig == null ? void 0 : marketplaceConfig.labels) == null ? void 0 : x.downloading) || "Downloading..." : (($ = marketplaceConfig == null ? void 0 : marketplaceConfig.labels) == null ? void 0 : $.download) || "Download" - } - ) }) - ] }, b.slug); - }) }) - ] }, _)) }); -} -const sr = ({ apiBaseUrl: r, useWPHandlers: t, wpConfig: n, enableDefaultStyles: i, assetsBaseUrl: g }) => /* @__PURE__ */ E.jsxs("div", { className: "marketplace-container gv-p-lg", children: [ - /* @__PURE__ */ E.jsxs("div", { className: "gv-content-container gv-p-lg gv-flex-column-md", style: { background: "#F3F4F0" }, children: [ - /* @__PURE__ */ E.jsx("h2", { className: "gv-heading-lg", children: "one.com WP marketplace" }), - /* @__PURE__ */ E.jsx("p", { className: "gv-text-sm", children: "Your place to find recommended and relevant plugins for your site." }) - ] }), - /* @__PURE__ */ E.jsx( - ar, - { - apiBaseUrl: r, - useWPHandlers: t, - wpConfig: n, - enableDefaultStyles: i, - assetsBaseUrl: g - } - ) -] }); -export { - sr as default -}; diff --git a/frontend/standalone/index.umd.js b/frontend/standalone/index.umd.js deleted file mode 100644 index 98554bd..0000000 --- a/frontend/standalone/index.umd.js +++ /dev/null @@ -1,30 +0,0 @@ -(function(x,B){typeof exports=="object"&&typeof module<"u"?module.exports=B(require("react")):typeof define=="function"&&define.amd?define(["react"],B):(x=typeof globalThis<"u"?globalThis:x||self,x.MarketplaceApp=B(x.React))})(this,function(x){"use strict";var B={exports:{}},q={};/** - * @license React - * react-jsx-runtime.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Re;function rt(){if(Re)return q;Re=1;var r=x,t=Symbol.for("react.element"),n=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,g=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function T(s,d,h){var m,j={},N=null,I=null;h!==void 0&&(N=""+h),d.key!==void 0&&(N=""+d.key),d.ref!==void 0&&(I=d.ref);for(m in d)i.call(d,m)&&!c.hasOwnProperty(m)&&(j[m]=d[m]);if(s&&s.defaultProps)for(m in d=s.defaultProps,d)j[m]===void 0&&(j[m]=d[m]);return{$$typeof:t,type:s,key:N,ref:I,props:j,_owner:g.current}}return q.Fragment=n,q.jsx=T,q.jsxs=T,q}var ee={};/** - * @license React - * react-jsx-runtime.development.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var we;function at(){return we||(we=1,process.env.NODE_ENV!=="production"&&function(){var r=x,t=Symbol.for("react.element"),n=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),g=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),T=Symbol.for("react.provider"),s=Symbol.for("react.context"),d=Symbol.for("react.forward_ref"),h=Symbol.for("react.suspense"),m=Symbol.for("react.suspense_list"),j=Symbol.for("react.memo"),N=Symbol.for("react.lazy"),I=Symbol.for("react.offscreen"),$=Symbol.iterator,Y="@@iterator";function D(e){if(e===null||typeof e!="object")return null;var a=$&&e[$]||e[Y];return typeof a=="function"?a:null}var F=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function _(e){{for(var a=arguments.length,o=new Array(a>1?a-1:0),l=1;l=1&&k>=0&&f[w]!==O[k];)k--;for(;w>=1&&k>=0;w--,k--)if(f[w]!==O[k]){if(w!==1||k!==1)do if(w--,k--,k<0||f[w]!==O[k]){var G=` -`+f[w].replace(" at new "," at ");return e.displayName&&G.includes("")&&(G=G.replace("",e.displayName)),typeof e=="function"&&ne.set(e,G),G}while(w>=1&&k>=0);break}}}finally{pe=!1,ye.current=E,At(),Error.prepareStackTrace=v}var Q=e?e.displayName||e.name:"",X=Q?ae(Q):"";return typeof e=="function"&&ne.set(e,X),X}function wt(e,a,o){return Ye(e,!1)}function kt(e){var a=e.prototype;return!!(a&&a.isReactComponent)}function se(e,a,o){if(e==null)return"";if(typeof e=="function")return Ye(e,kt(e));if(typeof e=="string")return ae(e);switch(e){case h:return ae("Suspense");case m:return ae("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case d:return wt(e.render);case j:return se(e.type,a,o);case N:{var l=e,v=l._payload,E=l._init;try{return se(E(v),a,o)}catch{}}}return""}var re=Object.prototype.hasOwnProperty,Ue={},He=F.ReactDebugCurrentFrame;function oe(e){if(e){var a=e._owner,o=se(e.type,e._source,a?a.type:null);He.setExtraStackFrame(o)}else He.setExtraStackFrame(null)}function jt(e,a,o,l,v){{var E=Function.call.bind(re);for(var u in e)if(E(e,u)){var f=void 0;try{if(typeof e[u]!="function"){var O=Error((l||"React class")+": "+o+" type `"+u+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[u]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw O.name="Invariant Violation",O}f=e[u](a,u,l,o,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(w){f=w}f&&!(f instanceof Error)&&(oe(v),_("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",l||"React class",o,u,typeof f),oe(null)),f instanceof Error&&!(f.message in Ue)&&(Ue[f.message]=!0,oe(v),_("Failed %s type: %s",o,f.message),oe(null))}}}var St=Array.isArray;function _e(e){return St(e)}function Nt(e){{var a=typeof Symbol=="function"&&Symbol.toStringTag,o=a&&e[Symbol.toStringTag]||e.constructor.name||"Object";return o}}function Pt(e){try{return ze(e),!1}catch{return!0}}function ze(e){return""+e}function Je(e){if(Pt(e))return _("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",Nt(e)),ze(e)}var Be=F.ReactCurrentOwner,Ot={key:!0,ref:!0,__self:!0,__source:!0},Ke,$e;function Mt(e){if(re.call(e,"ref")){var a=Object.getOwnPropertyDescriptor(e,"ref").get;if(a&&a.isReactWarning)return!1}return e.ref!==void 0}function It(e){if(re.call(e,"key")){var a=Object.getOwnPropertyDescriptor(e,"key").get;if(a&&a.isReactWarning)return!1}return e.key!==void 0}function Ft(e,a){typeof e.ref=="string"&&Be.current}function Lt(e,a){{var o=function(){Ke||(Ke=!0,_("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",a))};o.isReactWarning=!0,Object.defineProperty(e,"key",{get:o,configurable:!0})}}function Dt(e,a){{var o=function(){$e||($e=!0,_("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",a))};o.isReactWarning=!0,Object.defineProperty(e,"ref",{get:o,configurable:!0})}}var Gt=function(e,a,o,l,v,E,u){var f={$$typeof:t,type:e,key:a,ref:o,props:u,_owner:E};return f._store={},Object.defineProperty(f._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(f,"_self",{configurable:!1,enumerable:!1,writable:!1,value:l}),Object.defineProperty(f,"_source",{configurable:!1,enumerable:!1,writable:!1,value:v}),Object.freeze&&(Object.freeze(f.props),Object.freeze(f)),f};function Wt(e,a,o,l,v){{var E,u={},f=null,O=null;o!==void 0&&(Je(o),f=""+o),It(a)&&(Je(a.key),f=""+a.key),Mt(a)&&(O=a.ref,Ft(a,v));for(E in a)re.call(a,E)&&!Ot.hasOwnProperty(E)&&(u[E]=a[E]);if(e&&e.defaultProps){var w=e.defaultProps;for(E in w)u[E]===void 0&&(u[E]=w[E])}if(f||O){var k=typeof e=="function"?e.displayName||e.name||"Unknown":e;f&&Lt(u,k),O&&Dt(u,k)}return Gt(e,f,O,v,l,Be.current,u)}}var Te=F.ReactCurrentOwner,Ve=F.ReactDebugCurrentFrame;function Z(e){if(e){var a=e._owner,o=se(e.type,e._source,a?a.type:null);Ve.setExtraStackFrame(o)}else Ve.setExtraStackFrame(null)}var Ce;Ce=!1;function xe(e){return typeof e=="object"&&e!==null&&e.$$typeof===t}function Xe(){{if(Te.current){var e=J(Te.current.type);if(e)return` - -Check the render method of \``+e+"`."}return""}}function Yt(e){return""}var Ze={};function Ut(e){{var a=Xe();if(!a){var o=typeof e=="string"?e:e.displayName||e.name;o&&(a=` - -Check the top-level render call using <`+o+">.")}return a}}function Qe(e,a){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var o=Ut(a);if(Ze[o])return;Ze[o]=!0;var l="";e&&e._owner&&e._owner!==Te.current&&(l=" It was passed a child from "+J(e._owner.type)+"."),Z(e),_('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',o,l),Z(null)}}function qe(e,a){{if(typeof e!="object")return;if(_e(e))for(var o=0;o",f=" Did you accidentally export a JSX literal instead of a component?"):w=typeof e,_("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",w,f)}var k=Wt(e,a,o,v,E);if(k==null)return k;if(u){var G=a.children;if(G!==void 0)if(l)if(_e(G)){for(var Q=0;Q0?"{key: someKey, "+M.join(": ..., ")+": ...}":"{key: someKey}";if(!et[X+Ae]){var Vt=M.length>0?"{"+M.join(": ..., ")+": ...}":"{}";_(`A props object containing a "key" prop is being spread into JSX: - let props = %s; - <%s {...props} /> -React keys must be passed directly to JSX without using spread: - let props = %s; - <%s key={someKey} {...props} />`,Ae,X,Vt,X),et[X+Ae]=!0}}return e===i?zt(k):Ht(k),k}}function Jt(e,a,o){return tt(e,a,o,!0)}function Bt(e,a,o){return tt(e,a,o,!1)}var Kt=Bt,$t=Jt;ee.Fragment=i,ee.jsx=Kt,ee.jsxs=$t}()),ee}process.env.NODE_ENV==="production"?B.exports=rt():B.exports=at();var y=B.exports;function nt(r){var T;const t=Array.isArray((T=r==null?void 0:r.data)==null?void 0:T.sections)?r.data.sections:Array.isArray(r==null?void 0:r.sections)?r.sections:null;if(!t)return[];const i=t.filter(s=>!s.type||s.type==="plugin").flatMap(s=>Array.isArray(s.items)?s.items:[]).filter(s=>s&&(s.slug||s.name));if(i.length===0)return[];const g=i.map(s=>{const d=typeof(s==null?void 0:s.description)=="object"&&s.description!==null?s.description["en-gb"]||Object.values(s.description)[0]||"":(s==null?void 0:s.description)||"",h=(s==null?void 0:s.download)||(s==null?void 0:s.download_url)||(s==null?void 0:s.downloadUrl)||"",m=typeof(s==null?void 0:s.author)=="object"&&s.author!==null?s.author.name||"":(s==null?void 0:s.author)||"",j=typeof(s==null?void 0:s.author)=="object"&&s.author!==null&&s.author.url||"",N=typeof(s==null?void 0:s.price)=="object"&&s.price!==null?s.price.amount:void 0,I=typeof(s==null?void 0:s.price)=="object"&&s.price!==null?s.price.currency:void 0;return{...s,name:(s==null?void 0:s.name)||"Unknown",slug:(s==null?void 0:s.slug)||"",thumbnail:(s==null?void 0:s.thumbnail)||"",description:d,download:h,author:m,authorUrl:j,priceAmount:N,priceCurrency:I,installed:(s==null?void 0:s.installed)??!1,activated:(s==null?void 0:s.activated)??!1}}),c=new Set;return g.filter(s=>{const d=s.slug||s.name||JSON.stringify(s);return c.has(d)?!1:(c.add(d),!0)})}function st({plugin:r,pluginInAction:t,onAction:n}){var g,c,T,s,d,h;const i=m=>{n(m,r)};return y.jsx("div",{className:"plugin-actions gv-card-content gv-flex gv-gap-sm gv-mt-md",children:r.installed?r.activated?y.jsx("button",{className:"gv-button gv-button-secondary",disabled:t[r.slug],onClick:()=>i("deactivate"),children:t[r.slug]?((g=marketplaceConfig==null?void 0:marketplaceConfig.labels)==null?void 0:g.deactivating)||"Deactivating...":((c=marketplaceConfig==null?void 0:marketplaceConfig.labels)==null?void 0:c.deactivate)||"Deactivate"}):y.jsx("button",{className:"gv-button gv-button-primary",disabled:t[r.slug],onClick:()=>i("activate"),children:t[r.slug]?((T=marketplaceConfig==null?void 0:marketplaceConfig.labels)==null?void 0:T.activating)||"Activating...":((s=marketplaceConfig==null?void 0:marketplaceConfig.labels)==null?void 0:s.activate)||"Activate"}):y.jsx("button",{className:"gv-button gv-button-secondary",disabled:t[r.slug],onClick:()=>i("install"),children:t[r.slug]?((d=marketplaceConfig==null?void 0:marketplaceConfig.labels)==null?void 0:d.installing)||"Installing...":((h=marketplaceConfig==null?void 0:marketplaceConfig.labels)==null?void 0:h.install)||"Install"})})}var ot=Object.defineProperty,it=(r,t,n)=>t in r?ot(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n,U=(r,t,n)=>(it(r,t+"",n),n);const ie={};async function H(r){if(ie.hasOwnProperty(r))return ie[r];let t;return r.startsWith("data:")||!("caches"in self)?t=fetch(r).then(n=>n.text()):t=caches.open("gravity").then(async n=>{let i=await n.match(r);return i||(i=await fetch(r),i.ok&&await n.put(r,i.clone())),i.text()}),ie[r]=t,t}class ce extends HTMLElement{static get observedAttributes(){return["src"]}fetchFlag(t){t&&H(t).then(n=>this.innerHTML=n)}connectedCallback(){this.fetchFlag(this.getAttribute("src"))}attributeChangedCallback(t,n,i){t==="src"&&n!==i&&this.fetchFlag(i)}}U(ce,"TAG_NAME","gv-flag");class le extends HTMLElement{static get observedAttributes(){return["src"]}fetchIcon(t){t&&H(t).then(n=>this.innerHTML=n)}connectedCallback(){this.fetchIcon(this.getAttribute("src"))}attributeChangedCallback(t,n,i){t==="src"&&n!==i&&this.fetchIcon(i)}}U(le,"TAG_NAME","gv-icon");class fe extends HTMLElement{static get observedAttributes(){return["src"]}fetchIllustration(t){t&&H(t).then(n=>this.innerHTML=n)}connectedCallback(){this.fetchIllustration(this.getAttribute("src"))}attributeChangedCallback(t,n,i){t==="src"&&n!==i&&this.fetchIllustration(i)}}U(fe,"TAG_NAME","gv-illustration");class ue extends HTMLElement{static get observedAttributes(){return["src"]}fetchIndicator(t){t&&H(t).then(n=>this.innerHTML=n)}connectedCallback(){this.fetchIndicator(this.getAttribute("src"))}attributeChangedCallback(t,n,i){t==="src"&&n!==i&&this.fetchIndicator(i)}}U(ue,"TAG_NAME","gv-indicator");class de extends HTMLElement{static get observedAttributes(){return["src"]}fetchLoader(t){t&&H(t).then(n=>this.innerHTML=n)}connectedCallback(){this.fetchLoader(this.getAttribute("src"))}attributeChangedCallback(t,n,i){t==="src"&&n!==i&&this.fetchLoader(i)}}U(de,"TAG_NAME","gv-loader");class ve extends HTMLElement{static get observedAttributes(){return["src"]}fetchLogo(t){t&&H(t).then(n=>this.innerHTML=n)}connectedCallback(){this.fetchLogo(this.getAttribute("src"))}attributeChangedCallback(t,n,i){t==="src"&&n!==i&&this.fetchLogo(i)}}U(ve,"TAG_NAME","gv-logo");class he extends HTMLElement{static get observedAttributes(){return["src"]}fetchPayIcon(t){t&&H(t).then(n=>this.innerHTML=n)}connectedCallback(){this.fetchPayIcon(this.getAttribute("src"))}attributeChangedCallback(t,n,i){t==="src"&&n!==i&&this.fetchPayIcon(i)}}U(he,"TAG_NAME","gv-pay-icon");class me extends HTMLElement{static get observedAttributes(){return["src"]}fetchTile(t){t&&H(t).then(n=>this.innerHTML=n)}connectedCallback(){this.fetchTile(this.getAttribute("src"))}attributeChangedCallback(t,n,i){t==="src"&&n!==i&&this.fetchTile(i)}}U(me,"TAG_NAME","gv-tile");function z(r,t){customElements.get(r)||customElements.define(r,t)}z(ce.TAG_NAME,ce),z(le.TAG_NAME,le),z(fe.TAG_NAME,fe),z(ue.TAG_NAME,ue),z(de.TAG_NAME,de),z(ve.TAG_NAME,ve),z(he.TAG_NAME,he),z(me.TAG_NAME,me);const ct=(r,t,n,i)=>{var c,T,s,d;const g=[n,{code:t,...i||{}}];if((T=(c=r==null?void 0:r.services)==null?void 0:c.logger)!=null&&T.forward)return r.services.logger.forward(g,"warn","react-i18next::",!0);K(g[0])&&(g[0]=`react-i18next:: ${g[0]}`),(d=(s=r==null?void 0:r.services)==null?void 0:s.logger)!=null&&d.warn?r.services.logger.warn(...g):console!=null&&console.warn&&console.warn(...g)},ke={},ge=(r,t,n,i)=>{K(n)&&ke[n]||(K(n)&&(ke[n]=new Date),ct(r,t,n,i))},je=(r,t)=>()=>{if(r.isInitialized)t();else{const n=()=>{setTimeout(()=>{r.off("initialized",n)},0),t()};r.on("initialized",n)}},be=(r,t,n)=>{r.loadNamespaces(t,je(r,n))},Se=(r,t,n,i)=>{if(K(n)&&(n=[n]),r.options.preload&&r.options.preload.indexOf(t)>-1)return be(r,n,i);n.forEach(g=>{r.options.ns.indexOf(g)<0&&r.options.ns.push(g)}),r.loadLanguages(t,je(r,i))},lt=(r,t,n={})=>!t.languages||!t.languages.length?(ge(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0):t.hasLoadedNamespace(r,{lng:n.lng,precheck:(i,g)=>{if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&i.services.backendConnector.backend&&i.isLanguageChangingTo&&!g(i.isLanguageChangingTo,r))return!1}}),K=r=>typeof r=="string",ft=r=>typeof r=="object"&&r!==null,ut=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,dt={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},vt=r=>dt[r];let ht={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:r=>r.replace(ut,vt)};const mt=()=>ht;let gt;const bt=()=>gt,yt=x.createContext();class Et{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(n=>{this.usedNamespaces[n]||(this.usedNamespaces[n]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const pt=(r,t)=>{const n=x.useRef();return x.useEffect(()=>{n.current=r},[r,t]),n.current},Ne=(r,t,n,i)=>r.getFixedT(t,n,i),_t=(r,t,n,i)=>x.useCallback(Ne(r,t,n,i),[r,t,n,i]),Tt=(r,t={})=>{var C,b,A,W;const{i18n:n}=t,{i18n:i,defaultNS:g}=x.useContext(yt)||{},c=n||i||bt();if(c&&!c.reportNamespaces&&(c.reportNamespaces=new Et),!c){ge(c,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const R=(L,P)=>K(P)?P:ft(P)&&K(P.defaultValue)?P.defaultValue:Array.isArray(L)?L[L.length-1]:L,S=[R,{},!1];return S.t=R,S.i18n={},S.ready=!1,S}(C=c.options.react)!=null&&C.wait&&ge(c,"DEPRECATED_OPTION","useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const T={...mt(),...c.options.react,...t},{useSuspense:s,keyPrefix:d}=T;let h=g||((b=c.options)==null?void 0:b.defaultNS);h=K(h)?[h]:h||["translation"],(W=(A=c.reportNamespaces).addUsedNamespaces)==null||W.call(A,h);const m=(c.isInitialized||c.initializedStoreOnce)&&h.every(R=>lt(R,c,T)),j=_t(c,t.lng||null,T.nsMode==="fallback"?h:h[0],d),N=()=>j,I=()=>Ne(c,t.lng||null,T.nsMode==="fallback"?h:h[0],d),[$,Y]=x.useState(N);let D=h.join();t.lng&&(D=`${t.lng}${D}`);const F=pt(D),_=x.useRef(!0);x.useEffect(()=>{const{bindI18n:R,bindI18nStore:S}=T;_.current=!0,!m&&!s&&(t.lng?Se(c,t.lng,h,()=>{_.current&&Y(I)}):be(c,h,()=>{_.current&&Y(I)})),m&&F&&F!==D&&_.current&&Y(I);const L=()=>{_.current&&Y(I)};return R&&(c==null||c.on(R,L)),S&&(c==null||c.store.on(S,L)),()=>{_.current=!1,c&&R&&(R==null||R.split(" ").forEach(P=>c.off(P,L))),S&&c&&S.split(" ").forEach(P=>c.store.off(P,L))}},[c,D]),x.useEffect(()=>{_.current&&m&&Y(N)},[c,d,m]);const p=[$,c,m];if(p.t=$,p.i18n=c,p.ready=m,m||!m&&!s)return p;throw new Promise(R=>{t.lng?Se(c,t.lng,h,()=>R()):be(c,h,()=>R())})};function Ct({apiBaseUrl:r,useWPHandlers:t,wpConfig:n,enableDefaultStyles:i,assetsBaseUrl:g}){const[c,T]=x.useState([]),[s,d]=x.useState(!0),[h,m]=x.useState({}),[j,N]=x.useState({}),{t:I}=Tt();x.useEffect(()=>{async function p(){try{const b=await(await fetch(`${r}`)).json(),A=nt(b);T(A)}catch(C){console.error("Failed to fetch plugins",C)}finally{d(!1)}}p()},[r,t,n]);const $=async(p,C)=>{var b;m(A=>({...A,[C.slug]:!0}));try{let A=`${r}/${p}/${C.slug}`;const W=`download_url=${encodeURIComponent(C.download||"")}`;t?A=`${n.ajax_url}?action=marketplace_${p}_plugin&_wpnonce=${n.nonce}&nonce=${n.nonce}&slug=${C.slug}&${W}`:A=A+(A.includes("?")?"&":"?")+W;const S=await(await fetch(A,{method:"POST"})).json();S.success?T(L=>L.map(P=>P.slug===C.slug?{...P,installed:S.data.installed,activated:S.data.activated}:P)):alert(((b=S.data)==null?void 0:b.message)||"Failed to perform action")}catch(A){console.error("Plugin action failed",A)}finally{m(A=>({...A,[C.slug]:!1}))}},Y=(p,C)=>{p.stopPropagation(),N(b=>({...b,[C.slug]:!0})),setTimeout(()=>{N(b=>({...b,[C.slug]:!1}))},2e3)};if(s)return y.jsx("p",{children:"Loading plugins..."});const D=new Map,F=new Map;c.forEach(p=>{F.has(p.slug)||F.set(p.slug,p)}),Array.from(F.values()).forEach(p=>{const C=Array.isArray(p.categories)&&p.categories.length?String(p.categories[0]):"Others";D.has(C)||D.set(C,[]),D.get(C).push(p)});const _=Array.from(D.entries());return y.jsx("div",{className:"marketplace-container gv-flex gv-flex-col gv-flex-wrap gv-gap-lg gv-mt-fluid",children:_.map(([p,C])=>y.jsxs("section",{className:"",children:[y.jsx("h2",{className:"gv-heading-md gv-mb-sm",children:p}),y.jsx("div",{className:"gv-grid gv-gap-lg gv-tab-grid-cols-1 gv-desk-grid-cols-2",children:C.map(b=>{var A,W;return y.jsxs("a",{href:"#",className:"gv-shortcut-tile gv-surface-bright",onClick:R=>R.preventDefault(),children:[y.jsx("gv-tile",{"aria-hidden":"true",src:`${g||window.marketplaceConfig&&window.marketplaceConfig.assetsBaseUrl||""}assets/icons/placeholder.svg`}),y.jsxs("div",{className:"gv-content",children:[y.jsx("h3",{className:"gv-title",children:b.name}),y.jsx("p",{children:b.description?b.description:b.shortDescription}),y.jsxs("div",{className:"gv-price",children:[y.jsx("span",{className:"gv-price-prefix",children:I("migratorMail_hi")}),y.jsxs("span",{className:"gv-price-text",children:[b.priceCurrency," ",b.priceAmount]}),y.jsx("span",{className:"gv-period",children:"/mo"})]})]}),y.jsx("gv-icon",{"aria-hidden":"true",src:`${g||window.marketplaceConfig&&window.marketplaceConfig.assetsBaseUrl||""}assets/icons/arrow_forward.svg`}),t?y.jsx(st,{plugin:b,pluginInAction:h,onAction:$}):b.download&&y.jsx("div",{className:"plugin-actions gv-card-content gv-flex gv-gap-sm gv-mt-md",children:y.jsx("a",{href:b.download,download:!0,className:"gv-button gv-button-secondary",onClick:R=>Y(R,b),style:{pointerEvents:j[b.slug]?"none":"auto",opacity:j[b.slug]?.6:1},children:j[b.slug]?((A=marketplaceConfig==null?void 0:marketplaceConfig.labels)==null?void 0:A.downloading)||"Downloading...":((W=marketplaceConfig==null?void 0:marketplaceConfig.labels)==null?void 0:W.download)||"Download"})})]},b.slug)})})]},p))})}return({apiBaseUrl:r,useWPHandlers:t,wpConfig:n,enableDefaultStyles:i,assetsBaseUrl:g})=>y.jsxs("div",{className:"marketplace-container gv-p-lg",children:[y.jsxs("div",{className:"gv-content-container gv-p-lg gv-flex-column-md",style:{background:"#F3F4F0"},children:[y.jsx("h2",{className:"gv-heading-lg",children:"one.com WP marketplace"}),y.jsx("p",{className:"gv-text-sm",children:"Your place to find recommended and relevant plugins for your site."})]}),y.jsx(Ct,{apiBaseUrl:r,useWPHandlers:t,wpConfig:n,enableDefaultStyles:i,assetsBaseUrl:g})]})}); diff --git a/frontend/standalone/style.css b/frontend/standalone/style.css deleted file mode 100644 index 1e96f57..0000000 --- a/frontend/standalone/style.css +++ /dev/null @@ -1 +0,0 @@ -@keyframes gv-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes gv-pulse{50%{opacity:.4}}.gv-activated,.gv-activated *,.gv-activated :after,.gv-activated :before{box-sizing:border-box}body.gv-activated{margin:0}.gv-activated button,.gv-activated input,.gv-activated optgroup,.gv-activated select,.gv-activated textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}.gv-activated button:focus,.gv-activated input:focus,.gv-activated optgroup:focus,.gv-activated select:focus,.gv-activated textarea:focus{outline:0}.gv-activated button,.gv-activated select{text-transform:none}.gv-activated [type=button],.gv-activated [type=reset],.gv-activated [type=submit],.gv-activated button{background-color:transparent;background-image:none;border:0;-webkit-user-select:none;user-select:none}.gv-activated input,.gv-activated textarea{box-shadow:none;outline:0;-webkit-user-select:auto;user-select:auto}.gv-activated [role=button],.gv-activated a[href],.gv-activated button:not(:disabled){cursor:pointer}.gv-activated :disabled{cursor:default}.gv-activated menu,.gv-activated ol,.gv-activated ul{list-style:none;margin:0;padding:0}.gv-activated img{max-width:100%}.gv-activated table{border-collapse:collapse}.gv-activated textarea{white-space:revert}.gv-activated meter{-webkit-appearance:revert;-moz-appearance:revert;appearance:revert}.gv-activated ::placeholder{color:unset}.gv-activated :where([hidden]){display:none}.gv-activated :where([contenteditable]:not([contenteditable=false])){-moz-user-modify:read-write;-webkit-user-modify:read-write;overflow-wrap:break-word;-webkit-line-break:after-white-space;-webkit-user-select:auto;user-select:auto}.gv-activated :where([draggable=true]){-webkit-user-drag:element}@font-face{font-display:swap;font-family:PlusJakartaSans;font-style:normal;font-weight:400 700;src:url(data:font/woff2;base64,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)format("woff2"),url(data:font/ttf;base64,AAEAAAAUAQAABABAR0RFRviqo+gAAAN4AAACZkdQT1OZsPjTAACBaAAAWT5HU1VCF/YBfAAAPGwAABWsSFZBUrvt8/wAAB5MAAALlU1WQVLl+tAxAAAB2AAAAEZPUy8ywBZe6AAAAnwAAABgU1RBVPRv0kAAAALcAAAAnGNtYXC+WKkfAAAMfAAACIZmdmFykdVplQAAAiAAAABcZ2FzcAAAABAAAAFUAAAACGdseWaBa9q/AADaqAAAv9RndmFymQWa1wABmnwAARWSaGVhZCIkFjkAAAGgAAAANmhoZWEIxAccAAABfAAAACRobXR4KaL5NQAAKeQAABKGbG9jYX2aTQsAABUEAAAJRm1heHAEsgDCAAABXAAAACBuYW1lvhDxoAAABeAAAAaacG9zdAi9WRgAAFIYAAAvTnByZXBoBoyFAAABTAAAAAe4Af+FsASNAAABAAH//wAPAAEAAASiAGQABwBcAAUAAQAAAAAAAAAAAAAAAAADAAEAAQAABA7/IgAABYX/Y/3TBVAAAQAAAAAAAAAAAAAAAAAABKEAAQAAAAISLV7E/NRfDzz1AAMD6AAAAADdsSwYAAAAAOCnk1z/Y/8QBVAEpQAAAAYAAgAAAAAAAAABAAAAAAAIAAIAHHN0cm8AAAABeGhndAAAAAAAAQAAAAwAAQAAABwAAQACwADAAAAAAABAAEAAAAIAAAACAAAAAfYK+gYAAAABAAAAEAACAAEAFAAHAAh3Z2h0AMgAAAGQAAADIAAAAAABAwEEAAAAyAAAAQUAAAEsAAABBgAAAZAAAAEHAAAB9AAAAQgAAAJYAAABCQAAArwAAAEKAAADIAAAAAQCSQGQAAUAAAKKAlgAAABLAooCWAAAAV4AKAFCAAAAAAAAAAAAAAAAoQAA/0AAYHsAAAAAAAAAAFRPS08AwAAN+wIEDv8iAAAFEAFkIAABkwAAAAACGALpAAAAIAADAAEAAQAIAAIAAAAUAAgAAAAkAAJ3Z2h0AQMAAGl0YWwBCwABABAAHAAoADgARABQAFwAaAABAAAAAAEEAMgAAAABAAAAAAEFASwAAAADAAAAAgACAZAAAAK8AAAAAQAAAAABBwH0AAAAAQAAAAABCAJYAAAAAQAAAAABCQK8AAAAAQAAAAABCgMgAAAAAwABAAIBDAAAAAAAAQAAAAEAAwHSAAABfAAAAAAAAAASAAEAAAFaAAMAAAFMAAABNAAAABQAiwAAAAIAAAABw3vECsQyzgrYHt4l4SviHuIp4kzkSeVH5kfmYuoO6jPqZusr61Ps7OwK7BTsI+wk7CjsKexU7FrsbO057xPvTfA08EXxLvEz8T7xRvFM8gLyFPIr8jnyRvM09tj26fbs9gH2BfYK9hT2H/Yo9j33+vf/9xb3Ifcm+P74EPhF+RT5GPkv+UL6EfoW+/37DPsQ+xT8D/wQ/BL8E/wU/Bn8Jvwo/Cn8Kv37/Qj9DP0T/SH+A/4N/hf/Af8G/w3/Ef8h/0sB9QH5Af4BAwEEAQYBCAELAQ0BDgEUAR4BIAFBAvgCAQIYA8wD/gMDAw4FAwUyBvcG/gYBBgMGMgcICfUJ+QqmCtgK4grsCvYK/QoUCjIL+BQoFDwAEAAAAAEAAeLs9vn7ChQXGB4nKDI8Tk8ABgAAAAEAANji7PYDCgABAALAAMAAAAAAAEAAQAAADgAFAEYAKAAoABgAGAACAAEDOAM8AAAAAQAEAAMBNwAGAAIAQIAAAAIAEgAGAAMCpQAGAAIAKYAAAAMBUgAGAAIARIAAAAEABAADAYkABgACAEOAAAACABgAAQBCAAEARACdAAEAnwDAAAEAwgDCAAEAxADEAAEAxgGgAAEBogHPAAEB0QHRAAEB0wIXAAECGwIhAAECIwIjAAECJgI/AAECQQJCAAECRAJfAAECYwKEAAEChgKGAAECiQKJAAECiwKtAAECrwM3AAEDOAM8AAID5wPnAAED/QP9AAEEZwRxAAMEcwSUAAMAAAAAABwBVgADAAEECQAAAMQEgAADAAEECQABACIEXgADAAEECQACAA4EUAADAAEECQADAEQEDAADAAEECQAEADID2gADAAEECQAFADoDoAADAAEECQAGAC4DcgADAAEECQAIABADYgADAAEECQAJABwDRgADAAEECQAKAMQCggADAAEECQALADACUgADAAEECQAMADACUgADAAEECQANASIBMAADAAEECQAOADYA+gADAAEECQAZAB4A3AADAAEECQEAACIAugADAAEECQEBACAAmgADAAEECQECACQAdgADAAEECQEDAAwAagADAAEECQEEABQAVgADAAEECQEFAAoATAADAAEECQEGAA4EUAADAAEECQEHAAwAQAADAAEECQEIABAAMAADAAEECQEJAAgAKAADAAEECQEKABIAFgADAAEECQELAAwACgADAAEECQEMAAoAAABSAG8AbQBhAG4ASQB0AGEAbABpAGMARQB4AHQAcgBhAEIAbwBsAGQAQgBvAGwAZABTAGUAbQBpAEIAbwBsAGQATQBlAGQAaQB1AG0ATABpAGcAaAB0AEUAeAB0AHIAYQBMAGkAZwBoAHQAVwBlAGkAZwBoAHQATABpAG4AZwBrAGEAcgAgAEEAbAB0AGUAcgBuAGEAdABlAHMATAB1AHIAdQBzACAAQQBsAHQAZQByAG4AYQB0AGUAcwBMAGEAbgBjAGkAcAAgAEEAbAB0AGUAcgBuAGEAdABlAHMAUABsAHUAcwBKAGEAawBhAHIAdABhAFMAYQBuAHMAaAB0AHQAcABzADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAVABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABpAHMAIABsAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAFMASQBMACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMQAuADEALgAgAFQAaABpAHMAIABsAGkAYwBlAG4AcwBlACAAaQBzACAAYQB2AGEAaQBsAGEAYgBsAGUAIAB3AGkAdABoACAAYQAgAEYAQQBRACAAYQB0ADoAIABoAHQAdABwAHMAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATABoAHQAdABwAHMAOgAvAC8AdwB3AHcALgB0AG8AawBvAHQAeQBwAGUALgBjAG8AbQBUAGgAaQBzACAAZgBvAG4AdAAgAGQAZQBzAGkAZwBuAGUAZAAgAGYAbwByACAAUABsAHUAcwAgAEoAYQBrAGEAcgB0AGEAIABDAGkAdAB5ACAAbwBmACAAQwBvAGwAbABhAGIAbwByAGEAdABpAG8AbgAgAGIAeQAgAEcAdQBtAHAAaQB0AGEAIABSAGEAaABhAHkAdQAgAGYAcgBvAG0AIABUAG8AawBvAHQAeQBwAGUAIABpAG4AIAAyADAAMgAwAC4ARwB1AG0AcABpAHQAYQAgAFIAYQBoAGEAeQB1AFQAbwBrAG8AdAB5AHAAZQBQAGwAdQBzAEoAYQBrAGEAcgB0AGEAUwBhAG4AcwAtAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADIALgAwADcAMQA7AGcAZgB0AG8AbwBsAHMAWwAwAC4AOQAuADMAMABdAFAAbAB1AHMAIABKAGEAawBhAHIAdABhACAAUwBhAG4AcwAgAFIAZQBnAHUAbABhAHIAMgAuADAANwAxADsAVABPAEsATwA7AFAAbAB1AHMASgBhAGsAYQByAHQAYQBTAGEAbgBzAC0AUgBlAGcAdQBsAGEAcgBSAGUAZwB1AGwAYQByAFAAbAB1AHMAIABKAGEAawBhAHIAdABhACAAUwBhAG4AcwBDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAyADAAIABUAGgAZQAgAFAAbAB1AHMAIABKAGEAawBhAHIAdABhACAAUwBhAG4AcwAgAFAAcgBvAGoAZQBjAHQAIABBAHUAdABoAG8AcgBzACAAKABoAHQAdABwAHMAOgAvAC8AZwBpAHQAaAB1AGIALgBjAG8AbQAvAHQAbwBrAG8AdAB5AHAAZQAvAFAAbAB1AHMASgBhAGsAYQByAHQAYQBTAGEAbgBzACkAAAAAAAIAAAADAAAAFAADAAEAAAAUAAQIcgAAAOIAgAAGAGIADQAvADkAfgCsAUgBfgGPAZIBoQGwAcwB5wHrAhsCLQIzAjcCWQLHAt0DBAMMAw8DEgMbAyQDKAMuAzEDlAOpA8AOPx4JHg8eFx4dHiEeJR4rHi8eNx47HkkeUx5bHmkebx57HoUejx6THpcenh75IAMgCyAQIBUgGiAeICIgJiAwIDMgOiBEIHAgeSB+IIkgjiChIKQgriC1ILogvyETIRYhIiEmIS4hVCFeIZkhqiGzIgIiBiIPIhIiFSIaIh4iKyJIImAiZSWhJbMltyW9JcElxyXLJc8mBisOKxD7Av//AAAADQAgADAAOgCgAK4BSgGPAZIBoAGvAcQB5gHqAfoCKgIwAjcCWQLGAtgDAAMGAw8DEQMbAyMDJgMuAzEDlAOpA8AOPx4IHgweFB4cHiAeJB4qHi4eNh46HkIeTB5aHl4ebB54HoAejh6SHpcenh6gIAIgByAQIBIgGCAcICAgJiAwIDIgOSBEIHAgdCB6IIAgiiChIKMgpiCxILggvCETIRYhIiEmIS4hUyFbIZAhqSGwIgIiBSIPIhEiFSIZIh4iKyJIImAiZCWgJbIltiW8JcAlxiXKJc8mBSsOKxD7Af//A4QAAAMSAAAAAAAAAAD+tAJAAAAAAAAAAAAAAAAAAAAAAP/k/3cB1AAAAAAAAAFzAXIBagFjAWIBXQFb/6v/l/+B9ZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQi4kMAAOOI44XjoAAAAAAAAAAA43DkCeOtAADjJuMO4w4AAOL0AADjSwAAAAAAAAAAAADi0eLR4rvjC+K44hniFQAA4qfiouI1AADiJAAA4fEAAOIQ4gXh4eG/AADevQAAAAAAAAAA3pQAAN6J3c/ZSNlHCDoAAQAAAOAAAAD8AYQBnALQAAAAAAM0AzYDOANIA0oDTAOOA5QAAAAAAAADlAOeA6YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5wDngOkA6oDrAOuA7ADsgO0A7YDuAPGA9QD1gPsA/ID+AQCBAQAAAAABAIAAAAAAAAErgS0BLgEvAAAAAAAAAS6AAAAAAAABLYAAAS8AAAEwgTEBNQE3ATgAAAAAAAAAAAAAAAAAAAE2AAAAAAAAATkAAAE5AAABOQAAAAAAAAAAATeAAAE3gTgBOIE5AAABOQAAAAAAAAAAAAAAAADiAOXA9ADowPuBDgD2APRA7QDtgOiBBUDkwOoA5IDpAOUA5UEIwQdBCEDmgPWAAEAHAAdACQALABEAEUAWgBfAH4AggCIAJIAlACfAMIAxADGANYA4gDpARcBGAEdAR4BKAO8A6YDvgQtA7EElwEtAZMBlAGbAaIB0QHTAegB9wIYAiECJgI/AkUCYwKGAokCiwKjAq8CvwMEAwUDCgMLAzMDuAPhA7oEKgOJA5gD6wQAA+0EBAPiA9oElQPbAz0DyAQrA9wEnwPeBCcDgAOBBJgENgPZA50EoAN/Az4DygNuA2sDbwObABIAAgAJABkAEAAXABoAIAA7AC0AMQA4AHIAYgBmAGoAKwCdAK0AoACiAL0AqQQZALsA9wDrAO8A8wEfAMMCrgFxATEBTQGNAWkBhQGRAZcBwAGkAawBugILAfsB/wIDAaECXQJxAmQCZgKBAm0EGwJ/AtQCwgLIAs4DDwKIAxcAFQF9AAMBNQAWAYEAHgGVACIBmQAjAZoAHwGWACYBnAAnAZ0APgHGAC4BpgA5AbwAQQHMAC8BqABOAdwASAHWAFQB4gBRAd8AXQHxAFsB6wB8AhUAeAIRAGQB/QB6AhMAbgH5AGECFwCAAh4AhQIjAiUAigIpAIwCLwCLAiwAjQIyAJECPACWAkgAmAJOAJcCSwCeAmAAtwJ7AKECZQC1AnkAwQKFAMgCjgDMApQAygKRANcCpADcAqkA2wKoANkCpgDlArUA5AKzAOMCsQETAv4BCwLyAO0CxQERAvsBBwLsAQ8C+AEaAwcBIAMTASEBKQM0ASsDNgEqAzUArwJzAPsC2gAlACoBoACJAI8COACVAJsCVwBLAdkAugJ+ABgBiQAbAZIAvAKAAA8BZQAUAXkANwG4AD0BxABoAgEAdgIPAKgCbAC2AnoAzgKXANICnQDxAssBCQLvAN0CqgDmArcAqgJuAMAChACrAm8BJgMrBJwElgSdBKEEngSZBG4EbwRzBHkEfQR2BGwEZwSBBHcEcQR0ACEBmAAoAZ4AKQGfAEABygA/AcgAMAGqAFcB5QBeAfQAXAHuAGwCBQCOAjUAkAI5AJMCQgCZAlEAmgJUAJwCWgC+AoIAvwKDALkCfQC4AnwA0AKaANQCoADeAqsA3wKsANgCpQDaAqcA4AKtAOcCuwDoAr0BFQMBAQ0C9QEcAwkBGQMGARsDCAEiAxsBLAM3ABEBbQATAXUACgFRAAwBWQANAV0ADgFhAAsBVQAEATkABgFBAAcBRQAIAUkABQE9ADoBvgA8AcIAQgHOADIBrgA0AbIANQG0ADYBtgAzAbAAdAINAHACCQCsAnAArgJyAKMCZwClAmkApgJqAKcCawCkAmgAsAJ0ALICdgCzAncAtAJ4ALECdQD1AtEA+QLXAP0C3QEBAuMBAwLmAQUC6QD/AuABJAMjASMDHwElAycBJwMvA64DqgOsA68DxgPHA8IDxAPFA8MD4wPlA6ADzAPOBDsEFAQIA8ADwQQ6BBMEBwOyA7MD8QP2A/kD+gP9BAMD/wPvA/AD9AQCA/sD8gPoA/MD6gQBA/4D9wP4A/wD9QPpBEwERgRIBEoETgRPBE0ERwRJBEsELwQyBDQEFwQFBDUEJgQlBF8EYwRgBGQEYQRlBGIEZgRcBFkAAAAAACEAPABIAFQAYABwAHwAiACU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AAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAsMCnwEEAAEAAQKBAsECgQLBAoECwQKBAsECgQLBAoECwQKBAsECgQLBAngCeAJ4AngCeAJ4AngCeAJ4AngCeAJLAqYCpgKmAqYCpgKmAqYCYgJxAmICcQJiAnECYgJxAmICcQJiAnECYgJxAmICcQJiAnECYgKCAmICggJiAoICYgKCAmICggJiAoICYgJxAmICcQJiAnECYgJxAmICcQJiAnECYgJxAmICcQKqAq8CrwKvAq8CrwJ1ApgCmAKYApgCmAKYApgCmAKYApgCyALIAsgCyALIAqECoQKLAqECoQKhAosCoQKhAqECiwKhAqECoQKLAqECoQKhAosCoQKhAqECiwKhAqECoQKLAqECoQKhAosCoQKhAqECiwKhAqECoQKLAqECoQKhAosCoQKhAqECiwKhAqECoQKLAqECoQKhAosCoQKhAqECiwKhAqECoQKLAqECoQKhAosCoQKhAqECiwKhAqECoQKLAqECoQKhAosCoQKhAqECiwKhAqECoQKLAqECoQKhAosCoQKhAqECiwKhAqECoQKLAqECxQLFArYCtwK3ArcCtwK3ArcCtwK2AkUCtgK2ArYCfAK6Ar0CvQK9Ar0CvQK9Ar0CvQK9Ar0CvQK9Ar0CvQK9Ar0CvQK9Ar0CvQK9Ar0CvQK9Ar0CvQK9Ar0CvQK9Ar0CvQK9Ar0CvQK9Ar0CvQK9Ar0CvQK9Ar0CvQK9Ar0CvQJ/An8CnAKcApwCnAKcApwCnAKcApwCnAKcApwCnAKcApwCnAKcApwCnAKcApwCkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACcAIpAk0CFQJNAhUCTQIVAk0CFQJNAhUCTQIVAk0CFQJNAhUCcAIVAk0CFQJNAhUCTQIVAk0CFQJNAhUCTQIVAkgCcAJzAlkCcAJzAlUCcAJzAlUCcgJyAnICcgJyAnACTAJMAnACTAJMAgwCDAIMAnACTAJMAjUCNQI1AnACTAJMAkgCcAJMAkwCBwIHAgcCowKjAqMCowKjAqMCkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACXQJdAl0CkAKQApACkAKQApADAAKQApACtQK1ArUCtQK1ArUCtQK1ArUCtQK1ArUCtQK1ArUCtQK1ArUCtQK1ArUCtQK1ArUCtQK1ArUCtQK1ArUCtQK1ArUCtQLKArYClwK2ArYClwKoAqUCUAKoAqUCUAKoAqUCUAKoAqUCUAKoAqUCUAKoAqUCUAKoAqUCUAKoAqUCUAKOAo4CjgKOAo4CjgKOAo4CjgKOAo4CqQJqAmoCagJqBA8EEgJqAmoCagJqAmoCagJqAmoCagJqApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQAj4CPgI+Aj4CPgI+Aj4CPgI+Aj4CPgI+Aj4CPgI+Aj4CPgI+ApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQAqsCFwIXAhcCFwIXAlMCfQJSAlIClAJ9AlICUgKUAn0CUgJSApQCfQJSAlIClAJ9AlICUgKUAn0CUgJSApQCfQJSAlIClAJ9AlICUgKUAn0CUgJSApQCfQJSAlIClAJOAk4CTgJOAk4CVgIdAjsCOgJPApYCsgK/AAECOQJBAgsCLgJeAicCbQJfAjgCLwJfAwADAAMAAwADAAMAAwADAAMAAwACsQJ5Aq0CiAJ3ApkCawJsApMCawKxAnkCrQKIAncCmQJrAmwCkwJrAkoCRgIcAkkCFAIbAi0CNwJRAiwCrAJhApUCfgJvApoAAAJoAowAAAKsAmEClQJ+Am8CmgAAAmgCjAAAAmACYAMAAwADAAImAwADAAMAAQICJgIzAiYCJgImAhoCGgIaAiUCJQIlAiYCJgISBAAEAAI9BAgCDQINAg0CDQQRBBECPwI/AmYCZgI/AmYEEQICAh4CIgIhAiECIQIhAiACIAIgAiAEDgQOBA4EDgIeAiICMwQKBAoECgIzAjMEAQQBBAEEAQIEAgQCBAIEBAcCKwIkAp4BBwEHAo0CjQJYBAsCxAEIAQYECQIIAiMEBgIRAhEChgQEAmUCxgK5AnQCngK0ArcCtAKKAngAAgKuArgCwAJ6AokCwgKwAhMCYgKAAo8CjwKPAmkCnwKzArACpgKnAgkCmAQMAg4CZAJkAoUCZAJkAlsCBQJcAgYCZAIWAg8CZAJkAmQCZAJkAmQCZAJkAmQCZAJkAmQCZAJkAmQCZAJkAmQCZAJkAmQCZAJkAmQCZAJkAmQCuwLHAiQAAQK/AgECVAJ2ApACRwIDAgACZAJkAoUCZAJkAlsCBQJcAgYCZAIWAg8CPAIZAjYCHwI8Ah8CMgIYBAICKgJAAkQEBQQFBAMEAwLMAssBBwEHAQcBBwQQAQcBBwEFAQcBBQEHAQUBBwEFAQcDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAQNAloCMAIwAgoChwKHAhACNAJCAnsBAQABAAACKwAFAAACIAAAAg8AAABrAAAAXwAAABwAEwABAAIAAQAAAKKwALK8AJa9AInKALzKAIjMAJfOAInPAKbQAIHWALrWAN3YAKTZAIPaAIbeAJbfAIPiAIjiAIvlAAIAAQABAAEAAACcAM0AAAACAAAAAcdayFHOVtJg1HbUeNR51RzWRtr33EPfKt974Gfge+FN4j7ifuMg4z3k8uQ/5FDkc+Vb5VzldubZ5t/mSeZS5lzmbOZw51LnZudu53Dneugg6C/oOehS6Fjp3urn6vzqBeon6j/qVup06/nrRetW7M7sFeww7DjsQexQ7FHsVux07VXu4O487kzuVe5i79zvYfA+8cPy9PIC8iXyJ/Ir8jDySvPG80LzX/Nu9CD0IvQo9E/1IPUj9Sv1LPU59gP2B/YK9hH2GPYs9kj2TvZ09/v3BPcg9yH49vj5+P74AvgH+B/4JPgm+Cn4UPhV+Hj5/PkB+QL5CvkU+TH5Qvrx+hH6F/oa+iH6Jfov+jr6QvpR++n7J/wI/Bb9+f39/Qb9Ef0a/SH+Df/x/y0B6QHzAQsBMQLhAucC6QLyAvwC/QIGAggCCwIQAhUCHAImAigCKQIwAjMCPAJBA9EE5gT2BDAFGwbOBuoH9gf3B/wHBgcLBxEI8An8CRMM6Az8DAYMKg3vDRsPBxHKEQYT6hbUFtYW7xjsHNgeER4SAAkAAAABAAH2/woTFDY3ODkAAwAAAAEAAPgGGAABAALAAMAAAAAAAEAAQAAAAAACgAA8AowACwKMAAsCjAALAowACwKMAAsCjAALAowACwKMAAsCjAALAowACwKMAAsCjAALAowACwKMAAsCjAALAowACwKMAAsCjAALAowACwKMAAsCjAALAowACwKMAAsCjAALAowACwPZAAsD2QALArUAWAMNAEIDDQBCAw0AQgMNAEIDDQBCAw0AQgMNAEIC5gBYBS4AWALmAFgC5gAcAuYAWALmAFgEpwBYAuYAHAJkAFgCZABYAmQAWAJkAFgCZABYAmQAWAJkAFgCZABYAmQAWAJkAFgCZABYAmQAWAJkAFgCZABYAmQAWAJkAFgCZABYAmQAWAJkAFgCZABYAmQAWAJkAFgCZABYA0AAQgJFAFgDNQBCAxwAOAMdAEIDNQBCAxwAOAMdAEIDNQBCAxwAOAMdAEIDNQBCAxwAOAMdAEIDNQBCAxwAOAMdAEIDNQBCAxwAOAMdAEIDNQBCAxwAOAMdAEIC4ABYAuAAAALgAFgC4ABYAuAAWAEAAFgBbAAqAn8AWAEAAFgBbAAqAQD/4gFsABgBAP/eAWwAFAEA/50BbP/TAQD/9AFsACoBAP/vAWwAJQEAAE4BbAAqAQAATgFsACoBAP/oAWwAHgEAACMBbAAqAQD/4gFsABgBAP/5AWwAKgEA//cBbAAqAQD/4QFsABcBfwA3AkIALQF/ADcCQgAtAo4AWAKLAFACrABYAo4AWAKLAFACrABYAhMAWARVAFgCEwBYAhMAWAITAFgCEwBYAhMAWAL4AFgCEwBYAmEALANEAFgDRABYAuAAWARfAFgC4ABYAuAAWALgAFgC4ABYAuAAWAPFAFgC4ABYAuAAWALgAFgDbgBCA24AQgNuAEIDbgBCA24AQgNuAEIDbgBCA24AQgNuAEIDbgBCA24AQgNuAEIDbgBCA24AQgNuAEIDbgBCA24AQgNuAEIDbgBCA24AQgNuAEIDbgBCA24AQgNuAEIDbgBCA24AQgNuAEIDbgBCA24AQgNuAEIDbgBCA24AQgNuAEIDbgBCBO0AQgKDAFgCewBQA24AQgNuAEICgQBYAoMAWAKBAFgCgwBYAoEAWAKDAFgCgQBYAoMAWAKBAFgCgwBYAoEAWAKDAFgCgQBYAoMAWAKBAFgCgwBYAoYANwKGADcChgA3AoYANwKGADcChgA3AoYANwKGADcChgA3AoYANwKGADcFDAA3AgAACwIAAAsCAAALAgAACwIAAAsCAAALAgAACwK8AFUCwgBYArwAVQLCAFgCvABVAsIAWAK8AFUCwgBYArwAVQLCAFgCvABVAsIAWAK8AFUCwgBYArwAVQLCAFgCvABVAsIAWAK8AFUCvABYArwAVQK8AFgCvABVArwAWAK8AFUCvABYArwAVQK8AFgCvABVArwAWAK8AFUCwgBYArwAVQLCAFgCvABVAsIAWAK8AFUCwgBYArwAVQLCAFgCvABVAsIAWAK8AFUCwgBYArwAVQLCAFgCjAALA9gACwPYAAsD2AALA9gACwPYAAsCVQALAm8ACwJvAAsCbwALAm8ACwJvAAsCbwALAm8ACwJvAAsCbwALAm8ACwJIABYCSAAWAkgAFgJIABYCSAAWAjwANwI8ADcCUgA3AjwANwI8ADcCPAA3AlIANwI8ADcCPAA3AjwANwJSADcCPAA3AjwANwI8ADcCUgA3AjwANwI8ADcCPAA3AlIANwI8ADcCPAA3AjwANwJSADcCPAA3AjwANwI8ADcCUgA3AjwANwI8ADcCPAA3AlIANwI8ADcCPAA3AjwANwJSADcCPAA3AjwANwI8ADcCUgA3AjwANwI8ADcCPAA3AlIANwI8ADcCPAA3AjwANwJSADcCPAA3AjwANwI8ADcCUgA3AjwANwI8ADcCPAA3AlIANwI8ADcCPAA3AjwANwJSADcCPAA3AjwANwI8ADcCUgA3AjwANwI8ADcCPAA3AlIANwI8ADcCPAA3AjwANwJSADcCPAA3AjwANwI8ADcCUgA3AjwANwI8ADcCPAA3AlIANwI8ADcCPAA3AjwANwJSADcCPAA3AjwANwI8ADcCUgA3AjwANwI8ADcCPAA3AlIANwI8ADcCPAA3AjwANwJSADcCPAA3AjwANwI8ADcCUgA3AjwANwPXADcD1wA3ApsATQJYADcCWAA3AlgANwJYADcCWAA3AlgANwJYADcCmwA3AxcANwKbADcCmwA3ApsANwRcADcCjwA3AmcANwJnADcCZwA3AmcANwJnADcCZwA3AmcANwJnADcCZwA3AmcANwJnADcCZwA3AmcANwJnADcCZwA3AmcANwJnADcCZwA3AmcANwJnADcCZwA3AmcANwJnADcCZwA3AmcANwJnADcCZwA3AmcANwJnADcCZwA3AmcANwJnADcCZwA3AmcANwJnADcCZwA3AmcANwJnADcCZwA3AmcANwJnADcCZwA3AmcANwJnADcCZwA3AmcANwJnADcBiQAZAYkAGQKWADcClgA3ApYANwKWADcClgA3ApYANwKWADcClgA3ApYANwKWADcClgA3ApYANwKWADcClgA3ApYANwKWADcClgA3ApYANwKWADcClgA3ApYANwI9AE0CPQBNAj0ATQI9/+cCPf/nAj3/5wI9AE0CPQBNAj0ATQI9/9ECPf/RAj3/0QI9AE0CPQBNAj0ATQDlAE0BCgAnAMcAPgDzAB8AxwA9APMAHwDH/8UA8//yAMf/wQDz/+4Ax/+AAPP/rQDH/9cA8wAEAMf/0gDz//8AxwAxAPMAHwDlAEEA8wAfAMf/ywDz//gAxwAGAPMAHwDH/8UA8//yAMf/3ADzAAkAx//lAPMAEQDH/8QA8//xAcoATQDl/8EA0f/BAQX/4ADl/8EA0f/BAQ//6wDl/8EA0f+9AQ//6wIkAE0CJABNAiQATQIkAE0CJABNAOUATQEKAE0BCgBNAOUATQEKAE0BCgBNAWEATQFhAE0BYQBNAOUAGgEKABoBCgAaAXgATQF4AE0BeABNAOUAQQEKAEEBCgBBAcoATQDl/+wBCv/sAQr/7AFRACYBUQAmAVEAJgOMAE0DjABNA4wATQOMAE0DjABNA4wATQI9AE0CSABNAj0ATQI9AE0CSABNAj0ATQI9AE0CSABNAj0ATQI9AE0CSABNAj0ATQI9AE0CSABNAj0ATQI9AE0CSABNAj0ATQMiAE0DLQBNAyIATQI9AE0CSABNAj0ATQI9AE0CSABNAj0ATQJYAEECPQBNAj0ATQKPADcCjwA3Ao8ANwKPADcCjwA3Ao8ANwKPADcCjwA3Ao8ANwKPADcCjwA3Ao8ANwKPADcCjwA3Ao8ANwKPADcCjwA3Ao8ANwKPADcCjwA3Ao8ANwKPADcCjwA3Ao8ANwKPADcCjwA3Ao8ANwKPADcCjwApAo8AKQKPADcCjwA3Ao8ANwKPADcEPQA3ApsATQLAACcCmwBNApsANwLAADcBUgBNAVwATQF3ACcBUgBNAVwATQF3ACcBUgAnAVwAJwF3ACcBUgAaAVwAGgF3ACcBUv/nAVz/5wF3/+cBUgBBAVwAQQF3ACcBUgAsAVwALAF3ACcBUv/sAVz/7AF3ABsB/QAsAf0ALAH9ACwB/QAsAf0ALAH9ACwB/QAsAf0ALAH9ACwB/QAsAf0ALAJbAFgBhAAhAYQAIQGEABgBhAAYAXsAIQGWACEBhAAhAYQAIQGEACEBhAAhAYQAHgGEAB4BhAAhAYQAIQGEACEBhAAhAj0AQgI9AEICPQBCAj0AQgI9AEICPQBCAj0AQgI9AEICPQBCAj0AQgI9AEICPQBCAj0APAI9ADwCPQA8Aj0AQgI9AEICPQBCAj0AQgI9AEICPQBCAj0AQgI9AEICPQBCAj0AQgI9AEICPQBCAlMAQgJTAEICUwBCAlMAQgJTAEICUwBCAlMAQgJTAEICUwBCAlMAQgJTAEICUwBCAlMAQgJTAEICUwBCAlMAQgJTAEICUwBCAj0AQgI9AEICPQBCAj0AQgI9AEICPQBCAj0AQgI9AEICPQBCAj0AQgI9AEICPQBCAj0AQgI9AEICPQBCAj0AQgI9AEICPQBCAj0AQgI9AEICPQBCAj0AQgI9AEICPQBCAgUACwMdAAsDHQALAx0ACwMdAAsDHQALAecACwIYAAsCGAALAhgACwJCAEICGAALAhgACwIYAAsCQgBCAhgACwIYAAsCGAALAkIAQgIYAAsCGAALAhgACwJCAEICGAALAhgACwIYAAsCQgBCAhgACwIYAAsCGAALAkIAQgIYAAsCGAALAhgACwJCAEICGAALAhgACwIYAAsCQgBCAhgACwIYAAsCGAALAkIAQgIYAAsCGAALAhgACwJCAEIBwQAWAcEAFgHBABYBwQAWAcEAFgMIABkDxQAZA+0AGQJGABkCbgAZAccANwH3ADcCVgALA24AQgKGACEC3ABIAXMAKQJYADQCYQAuAnYALgJoADQCVQA8Ah8AKwJ0AEACVQA5AlgAJwJYADkCWAA5AlgAMQJYACsCWAA1AlgAQgJYAEECWAA9AlgAPgGwADEBFgAVAWgAJAFxACMBjwAjAXkAJwFlACMBRAAcAYQALgFlACMBsAAxARYAFQFoACQBcQAjAY8AIwF5ACcBZQAjAUQAHAGEAC4BZQAjANb/YwNUABUDXQAVA68AJAN7ABUD1gAjA3AAFQPLACMD0wAnA54AHAIBADEBLgAVAasAJAG0ACMB1QAjAbwAJwGkACMBfwAcAcYALgGkACMCAQAxAS4AFQGrACQBtAAjAdUAIwG8ACcBpAAjAX8AHAHGAC4BpAAjAKoAAACqAAAB9AAAA+gAAAJYAAABHgAAAM0AAAAqAAAAAAAAAKoAAAEeAGcBDgBQAR4AZwEyAGcCrgBnARoAZQEaAGUBGgBlAfMAIwHzACwB8wAsAR4AZwEeAGcA4wA4AhgAZwIYAGcB3wA1AxYAJwGtAAIBrQACAa0AAgGtAAIB8gBKAfIASgI4AEoCOABKA4IASgOCAEoCOAA1A4IANQHyADUCVgBKAPYAMAD2ABQBJwAwAScAMAEnABQBJwAUAT0AFAE9ABQBPQAbAT0AGwE7AFgBOwBYATsAGwE7ABsA9gAwAPYAFAEOAFABpABQAaQAUAGkAFABDgBQAQ4AUAIcAB0CHAAdAhwAHQIcAB0BLAAdASwAHQEsAB0BLAAdAYsAUgD1AFIB5wA6ArUAWANyACQDcgAkA6EAQgOhAEIC3gA4AY4AMAIRACwDfwA/An8APwPDADAB4gBRAScAbgG9AG4BLABuASwAbgJwACoCLQApAooANwNmADcE1wBYAowACwK1AFgDDQBCAlgANwMNAEICTAA3AoYANwJ2ADcDCQAhAmkALAM1AEICngA3ArcALANTAEICgwAsAncALAK8AFUC8AAsAuMALALjACwCpwAsBH4AWAKpAFgClwBYAoMALAIAAAsCAAALA6QACwJvAAsBugBVAfUAJgHXAE4B1wBOAeUAVQHIADUB1wBOAfYASAHCAEgB9gBIAcIASAHIADUC1QA0BAcANAHXAE4B1wBOAl4ANQJeADUCXgBOAl4ATgJeAFUCXgBVAl4ANQJeADUCXgBOAl4ATgJeAE4CXgBOAl4ASAJeAEgCXgB8Al4AfAJeAEgCXgB8Al4ANQJeADUCXgA2Al4AUQJeADUCXgBRAl4AYwOZAE4DhQBCAecAOgNuAEICVgALAyAAKAJfADIDcgArAj0AQgKZAD4DzgA0BYUANAHIADUByAA1AeUAVQHIADUB1wBOAfYASAHCAEgB9gBIAcIASAHIADUC1QA0BAcANAKCADUCdQAyAsoANAJ1ADICggBAAnUAZQLKADACdQBlA+oAMAKUAD4DpQAtA6UAGgM0AC0DNAA1AzMALQMzADQDaAArA2gAbgN+AD8DfgA/A0sAJQNLACUCPAAuA8UAbgPFAG4DOgAmA5sAbgM6//ADmwAlAzoAJgObAG4DOv/wA5v//AAAAGcAAABnAAAAZwAAAGcAAABnAAAAZwAAAGcAAABnAAAAZwAAAGcAAABnAAAAZwAAAGcAAABnAAAAZwAAAGcAAABnAAAAZwAAAGcAAABnAAAAZwAAAGcAAABnAAAAZwAAAGcAAABnAAAAZwAAAGcAAABnAAAAZwAAAGcAAABnAAAAZwAAAGcAAABnAAAAZwAAAGcAAABnAAAAZwAAAGcAAABnAAAARQAAAGcAAABnAAAAZwAAAGABtABnAQ0AZwFgAGcBYABnAekAZwHgAGcB4ABnAdwAZwGCAGcB4ABnAbgAZwF+AGcAZwAAAAEAAAAKAR4COgACREZMVADobGF0bgAOALIACEFaRSAAiENBVCAAXkNSVCAAiEtBWiAAiE1PTCAANFJPTSAANFRBVCAAiFRSSyAAiAAA//8AEgAAAAEAAgADAAUABgAHAAoACwAMAA0ADgAPABAAEQASABMAFAAA//8AEgAAAAEAAgADAAUABgAHAAkACwAMAA0ADgAPABAAEQASABMAFAAA//8AEgAAAAEAAgADAAUABgAHAAgACwAMAA0ADgAPABAAEQASABMAFAAA//8AEQAAAAEAAgAEAAUABgAHAAsADAANAA4ADwAQABEAEgATABQABAAAAAD//wARAAAAAQACAAMABQAGAAcACwAMAA0ADgAPABAAEQASABMAFAAVYWFsdAEUY2FsdAEOY2FzZQEIY2NtcAD+Y2NtcADyZG5vbQDsZnJhYwDibGlnYQDcbG9jbADWbG9jbADQbG9jbADKbnVtcgDEb3JkbgC8cG51bQC2c2luZgCwc3MwMQCmc3MwMgCcc3MwMwCSc3VicwCMc3VwcwCGdG51bQCAAAAAAQAbAAAAAQAQAAAAAQAOAAYAAQAgAAABAgAGAAEAHwAAAQEABgABAB4AAAEAAAAAAQAPAAAAAQAaAAAAAgAXABkAAAABABEAAAABAAsAAAABAAwAAAABAAoAAAABAB0AAAADABMAFAAVAAAAAQASAAAABAACAAMACQAJAAAAAwACAAMACQAAAAEAHAAAAAEAIQAAAAIAAAABACMRKAsECgwJEgj4CNwIwAjcCMAIQAgsCAoHzgfAB0oHSgcKBvIG5AbQBvIGiAZ6BjwGGgX4BeAF0gVIBQQDlALCAJwAYgBIAAEAAAABAAgAAgAKAAIEGQQXAAEAAgMKA6gABgAAAAIAIgAKAAMAAQaUAAEAEgAAAAEAAAAiAAEAAQOoAAMAAQZ8AAEAEgAAAAEAAAAiAAEAAQMKAAEAAAABAAgAAgEQAIUARwBKAE0AUABTAFYAWQB/AIEAhACHAMUAxwDJAMsAzQDPANEA0wDVATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABowGlAacBqQGrAa0BrwGxAbMBtQG3AbkBuwG9Ab8BwQHDAcUBxwHJAcsBzQHPAdUB2AHbAd4B4QHkAecB6gHtAfAB8wH2AigCKwIuAjECNAI3AjsCPgJBAkQCRwJKAk0CUAJTAlYCWQJcAl8CYgLBAsQCxwLKAs0C0ALTAtYC2QLcAt8C4gLlAugC6wLuAvEC9AL3AvoC/QMAAwMDDgMSAxYDGgMeAyIDJgMqAy4DMgABAIUARQBIAEsATgBRAFQAVwB+AIAAggCFAMQAxgDIAMoAzADOANAA0gDUAS0BMQE1ATkBPQFBAUUBSQFNAVEBVQFZAV0BYQFlAWkBbQFxAXUBeQF9AYEBhQGJAY0BogGkAaYBqAGqAawBrgGwAbIBtAG2AbgBugG8Ab4BwAHCAcQBxgHIAcoBzAHOAdMB1gHZAdwB3wHiAeUB6AHrAe4B8QH0AiYCKQIsAi8CMgI1AjkCPAI/AkICRQJIAksCTgJRAlQCVwJaAl0CYAK/AsICxQLIAssCzgLRAtQC1wLaAt0C4ALjAuYC6QLsAu8C8gL1AvgC+wL+AwEDCwMPAxMDFwMbAx8DIwMnAysDLwABAAAAAQAIAAIAZgAwAS8BMwE3ATsBPwFDAUcBSwFPAVMBVwFbAV8BYwFnAWsBbwFzAXcBewF/AYMBhwGLAY8CGgIdAiAChwKKAo0CkAKTApYCmQKcAp8CogMNAxEDFQMZAx0DIQMlAykDLQMxAAEAMAEtATEBNQE5AT0BQQFFAUkBTQFRAVUBWQFdAWEBZQFpAW0BcQF1AXkBfQGBAYUBiQGNAhgCGwIeAoYCiQKLAo4CkQKUApcCmgKdAqADCwMPAxMDFwMbAx8DIwMnAysDLwABAAAAAQAIAAEABgABAAEArwBFAEgASwBOAFEAVABXAF8AYgBkAGYAaABqAGwAbgBwAHIAdAB2AHgAegB8AIIAhQDpAOsA7QDvAPEA8wD1APcA+QD7AP0A/wEBAQMBBQEHAQkBCwENAQ8BEQETARUBLQExATUBOQE9AUEBRQFJAU0BUQFVAVkBXQFhAWUBaQFt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A6EDpwOrA60DuQO7A70DvwPJA8sDzQPPA9cELAABAI4AAQBfAGIAZABmAGgAagBsAG4AcAByAHQAdgB4AHoAfAB+AIAAnwDEAMYAyADKAMwAzgDQANIA1ADbAOUA6QDrAO0A7wDxAPMA9QD3APkA+wD9AP8BAQEDAQUBBwEJAQsBDQEPAREBEwEVAaIBpAGmAagBqgGsAa4BsAGyAbQBtgG4AboBvAG+AcABwgHEAcYByAHKAcwBzgHRAfkB+wH9Af8CAQIDAgUCBwIJAgsCDQIPAhECEwIVAiECIwJjAoYCiQKoAq8CsQKzArcCuQK7Ar0DCgNMA00DTgNPA1ADUQNSA1MDVANVA2ADYQNiA2MDZANlA2YDZwNoA2kDmAObA6ADpgOqA6wDuAO6A7wDvgPIA8oDzAPOA9YEKgACAAAAAAAA/2UAKAAAAAAAAAAAAAAAAAAAAAAAAAAABKIAAAAkAMkBAgEDAQQBBQEGAQcAxwEIAQkBCgELAQwBDQBiAQ4ArQEPARABEQESAGMBEwCuAJABFAAlACYA/QD/AGQBFQEWARcAJwEYARkBGgEbARwBHQDpACgAZQEeAR8BIADIASEBIgEjASQBJQEmAMoBJwEoAMsBKQEqASsBLAEtAS4BLwEwACkAKgExATIA+AEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMAKwFEAUUBRgFHACwBSAFJAMwBSgFLAUwAzQFNAU4BTwDOAVABUQFSAPoBUwFUAVUAzwFWAVcBWAFZAVoBWwFcAV0BXgFfAWAALQFhAWIBYwAuAWQBZQFmAWcBaAAvAWkBagFrAWwBbQFuAW8BcADiADABcQAxAXIBcwF0AXUBdgF3AXgBeQBmAXoAMgDQAXsA0QF8AX0BfgF/AYABgQBnAYIBgwGEANMBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQCRAZIArwGTAZQBlQCwADMA7QA0AZYANQGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQA2AaYBpwDkAagA+wGpAaoBqwGsAa0BrgA3Aa8BsAGxAbIBswG0ADgBtQDUAbYBtwG4ANUBuQG6AbsAaAG8Ab0BvgDWAb8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0AOQA6Ad4B3wHgAeEAOwA8AOsB4gC7AeMB5AHlAeYB5wHoAD0B6QDmAeoB6wBEAewB7QHuAGkB7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AgACAQICAgMCBAIFAgYCBwIIAgkAawIKAgsCDAINAg4CDwIQAhECEgITAhQCFQIWAhcCGAIZAhoCGwIcAh0CHgIfAiACIQIiAiMCJABsAiUCJgInAigCKQIqAisAagIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwI4AjkCOgI7AjwCPQI+AG4CPwJAAkECQgJDAkQCRQBtAkYCRwJIAKACSQBFAEYA/gEAAG8CSgJLAkwARwJNAQECTgJPAlAA6gBIAlEAcAJSAlMCVAJVAlYCVwJYAHICWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQBzAmYCZwJoAmkCagBxAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoASQJ7AEoCfAJ9APkCfgJ/AoACgQKCAoMChAKFAoYChwKIAokCigKLAowCjQKOAEsCjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAEwCnQDXAp4AdAKfAqACoQB2AqICowKkAHcCpQKmAqcCqAKpAqoCqwB1AqwCrQKuAq8CsAKxArICswK0ArUCtgK3AE0CuAK5AroCuwK8Ar0CvgK/AE4CwALBAsICwwBPAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAOMC2QLaAFAC2wLcAt0C3gLfAFEC4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AHgC9wL4AvkC+gL7AFIAeQL8AHsC/QL+Av8DAAMBAwIAfAMDAwQDBQB6AwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIAoQMTAH0DFAMVAxYAsQBTAxcA7gBUAxgAVQMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8AVgMwAzEA5QMyAPwDMwM0AzUDNgM3AIkAVwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgBYA0cDSAB+A0kDSgNLA0wDTQCAA04DTwNQA1EDUgCBA1MDVANVA1YDVwB/A1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgBZAFoDhwOIA4kDigBbAFwDiwOMA40A7AOOA48DkAORA5IDkwOUALoDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA68AXQOwAOcDsQOyA7MDtAO1AMAAwQCdAJ4DtgO3AJsAEwAUABUAFgAXABgAGQAaABsAHAO4A7kDugO7A7wDvQO+A78DwAPBA8IDwwPEA8UDxgPHA8gDyQPKA8sDzAPNA84DzwPQA9ED0gPTA9QD1QC8APQD1gPXAPUA9gPYA9kD2gPbA9wD3QPeA98D4APhA+ID4wPkA+UD5gPnA+gD6QPqA+sD7APtA+4D7wADA/AD8QPyA/MD9AP1A/YD9wP4ABEADwAdAB4AqwAEAKMD+QAiAKID+gDDA/sD/ACHA/0ADQAGABID/gA/A/8AEAQAALIEAQCzBAIEAwQEBAUAQgQGBAcACwQIAAwECQBeBAoAYAQLAD4EDABABA0EDgQPAMQAxQC0ALUAtgC3AKkEEACqBBEAvgQSAL8EEwAFAAoApgQUBBUEFgAjBBcACQCIAIYAiwCKAIwAgwQYBBkAXwDoAIIEGgDCBBsEHAQdBB4EHwCEBCAAvQAHBCEEIgD3BCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMACFBDEEMgQzAJYENAQ1BDYENwQ4BDkEOgQ7BDwEPQQ+BD8EQARBBEIEQwAOBEQA7wRFAPAERgC4BEcAIARIAI8ESQAhBEoAHwRLAJUAlACTBEwApwBhAKQETQBBAJIETgCcBE8EUACaAJkApQRRAJgACADGBFIEUwRUBFUEVgRXBFgEWQRaBFsEXARdBF4EXwRgBGEEYgRjBGQEZQRmBGcEaARpBGoEawRsBG0EbgRvBHAEcQRyBHMAuQR0BHUEdgR3BHgEeQR6BHsEfAR9BH4EfwSABIEEggSDBIQEhQSGBIcEiASJBIoEiwSMBI0EjgSPBJAEkQSSBJMElASVBJYElwSYBJkEmgSbBJwEnQSeBJ8EoAShBKIEowSkBKUEpgSnBKgEqQSqBKsAjgDcAEMAjQDfANgA4QDbAN0A2QDaAN4A4AZBYnJldmUHdW5pMUVBRQd1bmkxRUI2B3VuaTFFQjAHdW5pMUVCMgd1bmkxRUI0B3VuaTFFQTQHdW5pMUVBQwd1bmkxRUE2B3VuaTFFQTgHdW5pMUVBQQd1bmkwMjAwB3VuaTFFQTAHdW5pMUVBMgd1bmkwMjAyB0FtYWNyb24HQW9nb25lawpBcmluZ2FjdXRlB0FFYWN1dGUHdW5pMUUwOAtDY2lyY3VtZmxleApDZG90YWNjZW50B3VuaTAxQzQGRGNhcm9uBkRjcm9hdAd1bmkxRTBDB3VuaTFFMEUHdW5pMDFDNQZFYnJldmUGRWNhcm9uB3VuaTFFMUMHdW5pMUVCRQd1bmkxRUM2B3VuaTFFQzAHdW5pMUVDMgd1bmkxRUM0B3VuaTAyMDQKRWRvdGFjY2VudAd1bmkxRUI4B3VuaTFFQkEHdW5pMDIwNgdFbWFjcm9uB3VuaTFFMTYHdW5pMUUxNAdFb2dvbmVrB3VuaTFFQkMHdW5pMDE4RgZHLnNzMDEGRy5zczAzC0dicmV2ZS5zczAxC0dicmV2ZS5zczAzBkdjYXJvbgtHY2Fyb24uc3MwMQtHY2Fyb24uc3MwMwtHY2lyY3VtZmxleBBHY2lyY3VtZmxleC5zczAxEEdjaXJjdW1mbGV4LnNzMDMHdW5pMDEyMgx1bmkwMTIyLnNzMDEMdW5pMDEyMi5zczAzCkdkb3RhY2NlbnQPR2RvdGFjY2VudC5zczAxD0dkb3RhY2NlbnQuc3MwMwd1bmkxRTIwDHVuaTFFMjAuc3MwMQx1bmkxRTIwLnNzMDMESGJhcgd1bmkxRTJBC0hjaXJjdW1mbGV4B3VuaTFFMjQGSS5zczAxAklKC0lhY3V0ZS5zczAxBklicmV2ZQtJYnJldmUuc3MwMRBJY2lyY3VtZmxleC5zczAxB3VuaTAyMDgMdW5pMDIwOC5zczAxDklkaWVyZXNpcy5zczAxB3VuaTFFMkUMdW5pMUUyRS5zczAxD0lkb3RhY2NlbnQuc3MwMQd1bmkxRUNBDHVuaTFFQ0Euc3MwMQtJZ3JhdmUuc3MwMQd1bmkxRUM4DHVuaTFFQzguc3MwMQd1bmkwMjBBDHVuaTAyMEEuc3MwMQdJbWFjcm9uDEltYWNyb24uc3MwMQdJb2dvbmVrDElvZ29uZWsuc3MwMQZJdGlsZGULSXRpbGRlLnNzMDEGSi5zczAzC0pjaXJjdW1mbGV4EEpjaXJjdW1mbGV4LnNzMDMGSy5zczAxBksuc3MwMwd1bmkwMTM2DHVuaTAxMzYuc3MwMQx1bmkwMTM2LnNzMDMHdW5pMDFDNwZMYWN1dGUGTGNhcm9uB3VuaTAxM0IETGRvdAd1bmkxRTM2B3VuaTAxQzgHdW5pMUUzQQd1bmkxRTQyB3VuaTAxQ0EGTmFjdXRlBk5jYXJvbgd1bmkwMTQ1B3VuaTFFNDQHdW5pMUU0Ngd1bmkwMUNCB3VuaTFFNDgDRW5nBk9icmV2ZQd1bmkxRUQwB3VuaTFFRDgHdW5pMUVEMgd1bmkxRUQ0B3VuaTFFRDYHdW5pMDIwQwd1bmkwMjJBB3VuaTAyMzAHdW5pMUVDQwd1bmkxRUNFBU9ob3JuB3VuaTFFREEHdW5pMUVFMgd1bmkxRURDB3VuaTFFREUHdW5pMUVFMA1PaHVuZ2FydW1sYXV0B3VuaTAyMEUHT21hY3Jvbgd1bmkxRTUyB3VuaTFFNTAHdW5pMDFFQQtPc2xhc2hhY3V0ZQd1bmkxRTRDB3VuaTFFNEUHdW5pMDIyQwZRLnNzMDMGUi5zczAzBlJhY3V0ZQtSYWN1dGUuc3MwMwZSY2Fyb24LUmNhcm9uLnNzMDMHdW5pMDE1Ngx1bmkwMTU2LnNzMDMHdW5pMDIxMAx1bmkwMjEwLnNzMDMHdW5pMUU1QQx1bmkxRTVBLnNzMDMHdW5pMDIxMgx1bmkwMjEyLnNzMDMHdW5pMUU1RQx1bmkxRTVFLnNzMDMGU2FjdXRlB3VuaTFFNjQHdW5pMUU2NgtTY2lyY3VtZmxleAd1bmkwMjE4B3VuaTFFNjAHdW5pMUU2Mgd1bmkxRTY4B3VuaTFFOUUEVGJhcgZUY2Fyb24HdW5pMDE2Mgd1bmkwMjFBB3VuaTFFNkMHdW5pMUU2RQZVLnNzMDELVWFjdXRlLnNzMDEGVWJyZXZlC1VicmV2ZS5zczAxEFVjaXJjdW1mbGV4LnNzMDEHdW5pMDIxNAx1bmkwMjE0LnNzMDEOVWRpZXJlc2lzLnNzMDEHdW5pMUVFNAx1bmkxRUU0LnNzMDELVWdyYXZlLnNzMDEHdW5pMUVFNgx1bmkxRUU2LnNzMDEFVWhvcm4KVWhvcm4uc3MwMQd1bmkxRUU4DHVuaTFFRTguc3MwMQd1bmkxRUYwDHVuaTFFRjAuc3MwMQd1bmkxRUVBDHVuaTFFRUEuc3MwMQd1bmkxRUVDDHVuaTFFRUMuc3MwMQd1bmkxRUVFDHVuaTFFRUUuc3MwMQ1VaHVuZ2FydW1sYXV0ElVodW5nYXJ1bWxhdXQuc3MwMQd1bmkwMjE2DHVuaTAyMTYuc3MwMQdVbWFjcm9uDFVtYWNyb24uc3MwMQd1bmkxRTdBDHVuaTFFN0Euc3MwMQdVb2dvbmVrDFVvZ29uZWsuc3MwMQVVcmluZwpVcmluZy5zczAxBlV0aWxkZQtVdGlsZGUuc3MwMQd1bmkxRTc4DHVuaTFFNzguc3MwMQZXYWN1dGULV2NpcmN1bWZsZXgJV2RpZXJlc2lzBldncmF2ZQtZY2lyY3VtZmxleAd1bmkxRThFB3VuaTFFRjQGWWdyYXZlB3VuaTFFRjYHdW5pMDIzMgd1bmkxRUY4BlphY3V0ZQpaZG90YWNjZW50B3VuaTFFOTIGYS5zczAxBmEuc3MwMgZhLnNzMDMLYWFjdXRlLnNzMDELYWFjdXRlLnNzMDILYWFjdXRlLnNzMDMGYWJyZXZlC2FicmV2ZS5zczAxC2FicmV2ZS5zczAyC2FicmV2ZS5zczAzB3VuaTFFQUYMdW5pMUVBRi5zczAxDHVuaTFFQUYuc3MwMgx1bmkxRUFGLnNzMDMHdW5pMUVCNwx1bmkxRUI3LnNzMDEMdW5pMUVCNy5zczAyDHVuaTFFQjcuc3MwMwd1bmkxRUIxDHVuaTFFQjEuc3MwMQx1bmkxRUIxLnNzMDIMdW5pMUVCMS5zczAzB3VuaTFFQjMMdW5pMUVCMy5zczAxDHVuaTFFQjMuc3MwMgx1bmkxRUIzLnNzMDMHdW5pMUVCNQx1bmkxRUI1LnNzMDEMdW5pMUVCNS5zczAyDHVuaTFFQjUuc3MwMxBhY2lyY3VtZmxleC5zczAxEGFjaXJjdW1mbGV4LnNzMDIQYWNpcmN1bWZsZXguc3MwMwd1bmkxRUE1DHVuaTFFQTUuc3MwMQx1bmkxRUE1LnNzMDIMdW5pMUVBNS5zczAzB3VuaTFFQUQMdW5pMUVBRC5zczAxDHVuaTFFQUQuc3MwMgx1bmkxRUFELnNzMDMHdW5pMUVBNwx1bmkxRUE3LnNzMDEMdW5pMUVBNy5zczAyDHVuaTFFQTcuc3MwMwd1bmkxRUE5DHVuaTFFQTkuc3MwMQx1bmkxRUE5LnNzMDIMdW5pMUVBOS5zczAzB3VuaTFFQUIMdW5pMUVBQi5zczAxDHVuaTFFQUIuc3MwMgx1bmkxRUFCLnNzMDMHdW5pMDIwMQx1bmkwMjAxLnNzMDEMdW5pMDIwMS5zczAyDHVuaTAyMDEuc3MwMw5hZGllcmVzaXMuc3MwMQ5hZGllcmVzaXMuc3MwMg5hZGllcmVzaXMuc3MwMwd1bmkxRUExDHVuaTFFQTEuc3MwMQx1bmkxRUExLnNzMDIMdW5pMUVBMS5zczAzC2FncmF2ZS5zczAxC2FncmF2ZS5zczAyC2FncmF2ZS5zczAzB3VuaTFFQTMMdW5pMUVBMy5zczAxDHVuaTFFQTMuc3MwMgx1bmkxRUEzLnNzMDMHdW5pMDIwMwx1bmkwMjAzLnNzMDEMdW5pMDIwMy5zczAyDHVuaTAyMDMuc3MwMwdhbWFjcm9uDGFtYWNyb24uc3MwMQxhbWFjcm9uLnNzMDIMYW1hY3Jvbi5zczAzB2FvZ29uZWsMYW9nb25lay5zczAxDGFvZ29uZWsuc3MwMgxhb2dvbmVrLnNzMDMKYXJpbmcuc3MwMQphcmluZy5zczAyCmFyaW5nLnNzMDMKYXJpbmdhY3V0ZQ9hcmluZ2FjdXRlLnNzMDEPYXJpbmdhY3V0ZS5zczAyD2FyaW5nYWN1dGUuc3MwMwthdGlsZGUuc3MwMQthdGlsZGUuc3MwMgthdGlsZGUuc3MwMwdhZWFjdXRlB3VuaTFFMDkLY2NpcmN1bWZsZXgKY2RvdGFjY2VudAZkY2Fyb24HdW5pMUUwRAd1bmkxRTBGB3VuaTAxQzYGZS5zczAzC2VhY3V0ZS5zczAzBmVicmV2ZQtlYnJldmUuc3MwMwZlY2Fyb24LZWNhcm9uLnNzMDMHdW5pMUUxRAx1bmkxRTFELnNzMDMQZWNpcmN1bWZsZXguc3MwMwd1bmkxRUJGDHVuaTFFQkYuc3MwMwd1bmkxRUM3DHVuaTFFQzcuc3MwMwd1bmkxRUMxDHVuaTFFQzEuc3MwMwd1bmkxRUMzDHVuaTFFQzMuc3MwMwd1bmkxRUM1DHVuaTFFQzUuc3MwMwd1bmkwMjA1DHVuaTAyMDUuc3MwMw5lZGllcmVzaXMuc3MwMwplZG90YWNjZW50D2Vkb3RhY2NlbnQuc3MwMwd1bmkxRUI5DHVuaTFFQjkuc3MwMwtlZ3JhdmUuc3MwMwd1bmkxRUJCDHVuaTFFQkIuc3MwMwd1bmkwMjA3DHVuaTAyMDcuc3MwMwdlbWFjcm9uDGVtYWNyb24uc3MwMwd1bmkxRTE3DHVuaTFFMTcuc3MwMwd1bmkxRTE1DHVuaTFFMTUuc3MwMwdlb2dvbmVrDGVvZ29uZWsuc3MwMwd1bmkxRUJEDHVuaTFFQkQuc3MwMwd1bmkwMjU5BmYuc3MwMQZnLnNzMDEGZy5zczAzC2dicmV2ZS5zczAxC2dicmV2ZS5zczAzBmdjYXJvbgtnY2Fyb24uc3MwMQtnY2Fyb24uc3MwMwtnY2lyY3VtZmxleBBnY2lyY3VtZmxleC5zczAxEGdjaXJjdW1mbGV4LnNzMDMHdW5pMDEyMwx1bmkwMTIzLnNzMDEMdW5pMDEyMy5zczAzCmdkb3RhY2NlbnQPZ2RvdGFjY2VudC5zczAxD2dkb3RhY2NlbnQuc3MwMwd1bmkxRTIxDHVuaTFFMjEuc3MwMQx1bmkxRTIxLnNzMDMGaC5zczAxBmguc3MwMwRoYmFyCWhiYXIuc3MwMQloYmFyLnNzMDMHdW5pMUUyQgx1bmkxRTJCLnNzMDEMdW5pMUUyQi5zczAzC2hjaXJjdW1mbGV4EGhjaXJjdW1mbGV4LnNzMDEQaGNpcmN1bWZsZXguc3MwMwd1bmkxRTI1DHVuaTFFMjUuc3MwMQx1bmkxRTI1LnNzMDMGaS5zczAxDWRvdGxlc3NpLnNzMDELaWFjdXRlLnNzMDEGaWJyZXZlC2licmV2ZS5zczAxEGljaXJjdW1mbGV4LnNzMDEHdW5pMDIwOQx1bmkwMjA5LnNzMDEOaWRpZXJlc2lzLnNzMDEHdW5pMUUyRgx1bmkxRTJGLnNzMDEJaS5sb2NsVFJLDmkubG9jbFRSSy5zczAxB3VuaTFFQ0IMdW5pMUVDQi5zczAxC2lncmF2ZS5zczAxB3VuaTFFQzkMdW5pMUVDOS5zczAxB3VuaTAyMEIMdW5pMDIwQi5zczAxB2ltYWNyb24MaW1hY3Jvbi5zczAxB2lvZ29uZWsMaW9nb25lay5zczAxBml0aWxkZQtpdGlsZGUuc3MwMQJpagZqLnNzMDEGai5zczAyB3VuaTAyMzcMdW5pMDIzNy5zczAxDHVuaTAyMzcuc3MwMgtqY2lyY3VtZmxleBBqY2lyY3VtZmxleC5zczAxEGpjaXJjdW1mbGV4LnNzMDIGay5zczAxB3VuaTAxMzcMdW5pMDEzNy5zczAxDGtncmVlbmxhbmRpYwZsLnNzMDEGbC5zczAzBmxhY3V0ZQtsYWN1dGUuc3MwMQtsYWN1dGUuc3MwMwZsY2Fyb24LbGNhcm9uLnNzMDELbGNhcm9uLnNzMDMHdW5pMDEzQwx1bmkwMTNDLnNzMDEMdW5pMDEzQy5zczAzBGxkb3QJbGRvdC5zczAxCWxkb3Quc3MwMwd1bmkxRTM3DHVuaTFFMzcuc3MwMQx1bmkxRTM3LnNzMDMHdW5pMDFDOQd1bmkxRTNCDHVuaTFFM0Iuc3MwMQx1bmkxRTNCLnNzMDMLbHNsYXNoLnNzMDELbHNsYXNoLnNzMDMGbS5zczAxBm0uc3MwMwd1bmkxRTQzDHVuaTFFNDMuc3MwMQx1bmkxRTQzLnNzMDMGbi5zczAxBm4uc3MwMwZuYWN1dGULbmFjdXRlLnNzMDELbmFjdXRlLnNzMDMGbmNhcm9uC25jYXJvbi5zczAxC25jYXJvbi5zczAzB3VuaTAxNDYMdW5pMDE0Ni5zczAxDHVuaTAxNDYuc3MwMwd1bmkxRTQ1DHVuaTFFNDUuc3MwMQx1bmkxRTQ1LnNzMDMHdW5pMUU0Nwx1bmkxRTQ3LnNzMDEMdW5pMUU0Ny5zczAzB3VuaTAxQ0MMdW5pMDFDQy5zczAxDHVuaTAxQ0Muc3MwMwd1bmkxRTQ5DHVuaTFFNDkuc3MwMQx1bmkxRTQ5LnNzMDMLbnRpbGRlLnNzMDELbnRpbGRlLnNzMDMDZW5nCGVuZy5zczAxCGVuZy5zczAzBm9icmV2ZQd1bmkxRUQxB3VuaTFFRDkHdW5pMUVEMwd1bmkxRUQ1B3VuaTFFRDcHdW5pMDIwRAd1bmkwMjJCB3VuaTAyMzEHdW5pMUVDRAd1bmkxRUNGBW9ob3JuB3VuaTFFREIHdW5pMUVFMwd1bmkxRUREB3VuaTFFREYHdW5pMUVFMQ1vaHVuZ2FydW1sYXV0B3VuaTAyMEYHb21hY3Jvbgd1bmkxRTUzB3VuaTFFNTEHdW5pMDFFQgtvc2xhc2hhY3V0ZQd1bmkxRTREB3VuaTFFNEYHdW5pMDIyRAZwLnNzMDIGcS5zczAyBnIuc3MwMQZyLnNzMDIGcmFjdXRlC3JhY3V0ZS5zczAxC3JhY3V0ZS5zczAyBnJjYXJvbgtyY2Fyb24uc3MwMQtyY2Fyb24uc3MwMgd1bmkwMTU3DHVuaTAxNTcuc3MwMQx1bmkwMTU3LnNzMDIHdW5pMDIxMQx1bmkwMjExLnNzMDEMdW5pMDIxMS5zczAyB3VuaTFFNUIMdW5pMUU1Qi5zczAxDHVuaTFFNUIuc3MwMgd1bmkwMjEzDHVuaTAyMTMuc3MwMQx1bmkwMjEzLnNzMDIHdW5pMUU1Rgx1bmkxRTVGLnNzMDEMdW5pMUU1Ri5zczAyBnNhY3V0ZQd1bmkxRTY1B3VuaTFFNjcLc2NpcmN1bWZsZXgHdW5pMDIxOQd1bmkxRTYxB3VuaTFFNjMHdW5pMUU2OQZ0LnNzMDEEdGJhcgl0YmFyLnNzMDEGdGNhcm9uC3RjYXJvbi5zczAxB3VuaTAxNjMMdW5pMDE2My5zczAxB3VuaTAyMUIMdW5pMDIxQi5zczAxB3VuaTFFOTcMdW5pMUU5Ny5zczAxB3VuaTFFNkQMdW5pMUU2RC5zczAxB3VuaTFFNkYMdW5pMUU2Ri5zczAxBnUuc3MwMQZ1LnNzMDMLdWFjdXRlLnNzMDELdWFjdXRlLnNzMDMGdWJyZXZlC3VicmV2ZS5zczAxC3VicmV2ZS5zczAzEHVjaXJjdW1mbGV4LnNzMDEQdWNpcmN1bWZsZXguc3MwMwd1bmkwMjE1DHVuaTAyMTUuc3MwMQx1bmkwMjE1LnNzMDMOdWRpZXJlc2lzLnNzMDEOdWRpZXJlc2lzLnNzMDMHdW5pMUVFNQx1bmkxRUU1LnNzMDEMdW5pMUVFNS5zczAzC3VncmF2ZS5zczAxC3VncmF2ZS5zczAzB3VuaTFFRTcMdW5pMUVFNy5zczAxDHVuaTFFRTcuc3MwMwV1aG9ybgp1aG9ybi5zczAxCnVob3JuLnNzMDMHdW5pMUVFOQx1bmkxRUU5LnNzMDEMdW5pMUVFOS5zczAzB3VuaTFFRjEMdW5pMUVGMS5zczAxDHVuaTFFRjEuc3MwMwd1bmkxRUVCDHVuaTFFRUIuc3MwMQx1bmkxRUVCLnNzMDMHdW5pMUVFRAx1bmkxRUVELnNzMDEMdW5pMUVFRC5zczAzB3VuaTFFRUYMdW5pMUVFRi5zczAxDHVuaTFFRUYuc3MwMw11aHVuZ2FydW1sYXV0EnVodW5nYXJ1bWxhdXQuc3MwMRJ1aHVuZ2FydW1sYXV0LnNzMDMHdW5pMDIxNwx1bmkwMjE3LnNzMDEMdW5pMDIxNy5zczAzB3VtYWNyb24MdW1hY3Jvbi5zczAxDHVtYWNyb24uc3MwMwd1bmkxRTdCDHVuaTFFN0Iuc3MwMQx1bmkxRTdCLnNzMDMHdW9nb25lawx1b2dvbmVrLnNzMDEMdW9nb25lay5zczAzBXVyaW5nCnVyaW5nLnNzMDEKdXJpbmcuc3MwMwZ1dGlsZGULdXRpbGRlLnNzMDELdXRpbGRlLnNzMDMHdW5pMUU3OQx1bmkxRTc5LnNzMDEMdW5pMUU3OS5zczAzBndhY3V0ZQt3Y2lyY3VtZmxleAl3ZGllcmVzaXMGd2dyYXZlBnkuc3MwMQZ5LnNzMDIGeS5zczAzC3lhY3V0ZS5zczAxC3lhY3V0ZS5zczAyC3lhY3V0ZS5zczAzC3ljaXJjdW1mbGV4EHljaXJjdW1mbGV4LnNzMDEQeWNpcmN1bWZsZXguc3MwMhB5Y2lyY3VtZmxleC5zczAzDnlkaWVyZXNpcy5zczAxDnlkaWVyZXNpcy5zczAyDnlkaWVyZXNpcy5zczAzB3VuaTFFOEYMdW5pMUU4Ri5zczAxDHVuaTFFOEYuc3MwMgx1bmkxRThGLnNzMDMHdW5pMUVGNQx1bmkxRUY1LnNzMDEMdW5pMUVGNS5zczAyDHVuaTFFRjUuc3MwMwZ5Z3JhdmULeWdyYXZlLnNzMDELeWdyYXZlLnNzMDILeWdyYXZlLnNzMDMHdW5pMUVGNwx1bmkxRUY3LnNzMDEMdW5pMUVGNy5zczAyDHVuaTFFRjcuc3MwMwd1bmkwMjMzDHVuaTAyMzMuc3MwMQx1bmkwMjMzLnNzMDIMdW5pMDIzMy5zczAzB3VuaTFFRjkMdW5pMUVGOS5zczAxDHVuaTFFRjkuc3MwMgx1bmkxRUY5LnNzMDMGemFjdXRlCnpkb3RhY2NlbnQHdW5pMUU5MwNmX2YFZl9mX2kFZl9mX2wHdW5pMDM5NAd1bmkwM0E5B3plcm8udGYGb25lLnRmBnR3by50Zgh0aHJlZS50Zgdmb3VyLnRmB2ZpdmUudGYGc2l4LnRmCHNldmVuLnRmCGVpZ2h0LnRmB25pbmUudGYJemVyby5kbm9tCG9uZS5kbm9tCHR3by5kbm9tCnRocmVlLmRub20JZm91ci5kbm9tCWZpdmUuZG5vbQhzaXguZG5vbQpzZXZlbi5kbm9tCmVpZ2h0LmRub20JbmluZS5kbm9tCXplcm8ubnVtcghvbmUubnVtcgh0d28ubnVtcgp0aHJlZS5udW1yCWZvdXIubnVtcglmaXZlLm51bXIIc2l4Lm51bXIKc2V2ZW4ubnVtcgplaWdodC5udW1yCW5pbmUubnVtcgd1bmkyMTUzB3VuaTIxNTQJb25lZWlnaHRoDHRocmVlZWlnaHRocwtmaXZlZWlnaHRocwxzZXZlbmVpZ2h0aHMHdW5pMjA4MAd1bmkyMDgxB3VuaTIwODIHdW5pMjA4Mwd1bmkyMDg0B3VuaTIwODUHdW5pMjA4Ngd1bmkyMDg3B3VuaTIwODgHdW5pMjA4OQd1bmkyMDcwB3VuaTAwQjkHdW5pMDBCMgd1bmkwMEIzB3VuaTIwNzQHdW5pMjA3NQd1bmkyMDc2B3VuaTIwNzcHdW5pMjA3OAd1bmkyMDc5B3VuaTAwQTAHdW5pMjAwMgd1bmkyMDAzB3VuaTIwMDcHdW5pMjAwOAd1bmkyMDA5B3VuaTIwMEEHdW5pMjAwQgJDUg9leGNsYW1kb3duLmNhc2URcXVlc3Rpb25kb3duLmNhc2UTcGVyaW9kY2VudGVyZWQuY2FzZRZwZXJpb2RjZW50ZXJlZC5sb2NsQ0FUC2J1bGxldC5jYXNlCnNsYXNoLmNhc2UOYmFja3NsYXNoLmNhc2ULaHlwaGVuLmNhc2ULZW5kYXNoLmNhc2ULZW1kYXNoLmNhc2UKZmlndXJlZGFzaAd1bmkyMDE1B3VuaTIwMTAHdW5pMjA4RAd1bmkyMDhFDnBhcmVubGVmdC5jYXNlD3BhcmVucmlnaHQuY2FzZQ5icmFjZWxlZnQuY2FzZQ9icmFjZXJpZ2h0LmNhc2UQYnJhY2tldGxlZnQuY2FzZRFicmFja2V0cmlnaHQuY2FzZQd1bmkyMDdEB3VuaTIwN0USZ3VpbGxlbW90bGVmdC5jYXNlE2d1aWxsZW1vdHJpZ2h0LmNhc2USZ3VpbHNpbmdsbGVmdC5jYXNlE2d1aWxzaW5nbHJpZ2h0LmNhc2UHdW5pMEUzRgd1bmkyNjA1B3VuaTI2MDYHYXQuY2FzZQZtaW51dGUGc2Vjb25kB3VuaTIxMTMJZXN0aW1hdGVkB3VuaTIxMTYHdW5pMjBCMwd1bmkyMEJGB3VuaTIwQjUNY29sb25tb25ldGFyeQRkb25nBEV1cm8HdW5pMjBCMgd1bmkyMEI0B3VuaTIwQUQHdW5pMjBCRQRsaXJhB3VuaTIwQkEHdW5pMjBCQwd1bmkyMEE2BnBlc2V0YQd1bmkyMEIxB3VuaTIwQkQHdW5pMjBBOAd1bmkyMEI5B3VuaTIwQUEHdW5pMjBCOAd1bmkyMEFFB3VuaTIwQTkHdW5pMjIxOQd1bmkyMjE1B3VuaTIwOEMHdW5pMjA3QxBtdWx0aXBseWluZmVyaW9yDmRpdmlkZWluZmVyaW9yEG5vdGVxdWFsaW5mZXJpb3IPZ3JlYXRlcmluZmVyaW9yDGxlc3NpbmZlcmlvchRncmVhdGVyZXF1YWxpbmZlcmlvchFsZXNzZXF1YWxpbmZlcmlvchFwbHVzbWludXNpbmZlcmlvcg9wZXJjZW50aW5mZXJpb3ITcGVydGhvdXNhbmRpbmZlcmlvcgd1bmkyMDhCB3VuaTIwN0IJcGx1cy5jYXNlCm1pbnVzLmNhc2UNbXVsdGlwbHkuY2FzZQtkaXZpZGUuY2FzZQplcXVhbC5jYXNlDW5vdGVxdWFsLmNhc2UMZ3JlYXRlci5jYXNlCWxlc3MuY2FzZQ5wbHVzbWludXMuY2FzZQ9hc2NpaXRpbGRlLmNhc2UIZW1wdHlzZXQHdW5pMjEyNgd1bmkyMjA2B3VuaTAwQjUHdW5pMjA4QQd1bmkyMDdBEG11bHRpcGx5c3VwZXJpb3IOZGl2aWRlc3VwZXJpb3IQbm90ZXF1YWxzdXBlcmlvcg9ncmVhdGVyc3VwZXJpb3IMbGVzc3N1cGVyaW9yFGdyZWF0ZXJlcXVhbHN1cGVyaW9yEWxlc3NlcXVhbHN1cGVyaW9yEXBsdXNtaW51c3N1cGVyaW9yD3BlcmNlbnRzdXBlcmlvchNwZXJ0aG91c2FuZHN1cGVyaW9yB2Fycm93dXAHdW5pMjE5NwphcnJvd3JpZ2h0B3VuaTIxOTgJYXJyb3dkb3duB3VuaTIxOTkJYXJyb3dsZWZ0B3VuaTIxOTYJYXJyb3dib3RoCWFycm93dXBkbgd1bmkyMUE5B3VuaTIxQUEHdW5pMjFCMAd1bmkyMUIxB3VuaTIxQjIHdW5pMjFCMwd1bmkyQjBFB3VuaTJCMTAHdW5pMjVDRgZjaXJjbGUHdW5pMjVDNgd1bmkyNUM3CWZpbGxlZGJveAd1bmkyNUExB3RyaWFndXAHdW5pMjVCNgd0cmlhZ2RuB3VuaTI1QzAHdW5pMjVCMwd1bmkyNUI3B3VuaTI1QkQHdW5pMjVDMQd1bmkwMzA4C3VuaTAzMDgwMzAwC3VuaTAzMDgwMzAxC3VuaTAzMDgwMzBDC3VuaTAzMDgwMzA0B3VuaTAzMDcLdW5pMDMwNzAzMDQJZ3JhdmVjb21iCWFjdXRlY29tYgt1bmkwMzAxMDMwNwd1bmkwMzBCC3VuaTAzMEMuYWx0B3VuaTAzMDIHdW5pMDMwQwt1bmkwMzBDMDMwNwd1bmkwMzA2B3VuaTAzMEELdW5pMDMwQTAzMDEJdGlsZGVjb21iC3VuaTAzMDMwMzA4E3RpbGRlY29tYl9hY3V0ZWNvbWILdW5pMDMwMzAzMDQHdW5pMDMwNAt1bmkwMzA0MDMwOAt1bmkwMzA0MDMwMAt1bmkwMzA0MDMwMQ1ob29rYWJvdmVjb21iB3VuaTAzMEYHdW5pMDMxMQd1bmkwMzEyB3VuaTAzMUIMZG90YmVsb3djb21iB3VuaTAzMjQHdW5pMDMyNgd1bmkwMzI3B3VuaTAzMjgHdW5pMDMyRQd1bmkwMzMxC3VuaTAzMDYwMzAxC3VuaTAzMDYwMzAwC3VuaTAzMDYwMzA5C3VuaTAzMDYwMzAzC3VuaTAzMDIwMzAxC3VuaTAzMDIwMzAwC3VuaTAzMDIwMzA5C3VuaTAzMDIwMzAzAAAAAQAAAAoAKABOAAJERkxUAA5sYXRuAA4ABAAAAAD//wADAAAAAQACAANjcHNwACBrZXJuABptYXJrABQAAAABAAIAAAABAAEAAAABAAAAA1jOHhIACAAEAAAAAQAIAAEd7BrOAAMbYgAMAxwashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgashqoGpgaiBp+AAAaiBp+AAAabhpkAAAaVBpKAAAaVBpKAAAaVBpKAAAaVBpKAAAaVBpKAAAaVBpKAAAaVBpKAAAaOhowAAAaOhowAAAaOhowAAAaOhowAAAaOhowAAAaOhowAAAaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYaIBoWGgYZ9hnsAAAZ3BnSAAAZwhmyAAAZohmSAAAZ3BnSAAAZwhmyAAAZohmSAAAZ3BnSAAAZwhmyAAAZohmSAAAZ3BnSAAAZwhmyAAAZohmSAAAZ3BnSAAAZwhmyAAAZohmSAAAZ3BnSAAAZwhmyAAAZohmSAAAZ3BnSAAAZwhmyAAAZohmSAAAZiBl+AAAZiBl+AAAZiBl+AAAZiBl+AAAZiBl+AAAZbhlkGVQZRBk0GSoAAAAAGVQZbhlkGVQZRBk0GSoZbhlkGVQZRBk0GSoZbhlkGVQZRBk0GSoZbhlkGVQZRBk0GSoZbhlkGVQZRBk0GSoZbhlkGVQZRBk0GSoZbhlkGVQZRBk0GSoZbhlkGVQZRBk0GSoZbhlkGVQZRBk0GSoZbhlkGVQZRBk0GSoZbhlkGVQZRBk0GSoZbhlkGVQZRBk0GSoZbhlkGVQZRBk0GSoZbhlkGVQZRBk0GSoZGhkKAAAY+hjqAAAZGhkKAAAY+hjqAAAY2hjQAAAYxhi8AAAYrBiiAAAY2hjQAAAYxhi8AAAYrBiiAAAZbhiSAAAAAAAAAAAZbhiSAAAZbhiSAAAZbhiSAAAZbhiSAAAZbhiSAAAZbhiSAAAZbhiSAAAYghhyAAAYYhhYAAAYYhhYAAAYSBg+AAAYSBg+AAAYSBg+AAAYSBg+AAAYSBg+AAAYSBg+AAAYSBg+AAAYSBg+AAAYSBg+AAAYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkAAAYLhgkAAAYLhgkAAAYLhgkAAAYLhgkAAAYLhgkAAAYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYLhgkGBoYEBgGAAAYLhgkAAAX9hfsAAAX3BfSAAAX9hfsAAAX3BfSAAAX9hfsAAAX3BfSAAAX9hfsAAAX3BfSAAAX9hfsAAAX3BfSAAAX9hfsAAAX3BfSAAAX9hfsAAAX3BfSAAAX9hfsAAAX3BfSAAAXwheyAAAXwheyAAAXwheyAAAXwheyAAAXwheyAAAXwheyAAAXwheyAAAXwheyAAAXwheyAAAXwheyAAAXwheyAAAXoheYAAAXoheYAAAXoheYAAAXoheYAAAXoheYAAAXoheYAAAXoheYAAAXiBd+F3QXZBdaF1AXiBd+F3QXZBdaF1AXiBd+F3QXZBdaF1AXiBd+F3QXZBdaF1AXiBd+F3QXZBdaF1AXiBd+F3QXZBdaF1AXiBd+F3QXZBdaF1AXiBd+F3QXZBdaF1AXiBd+F3QXZBdaF1AXiBd+F0AXZBdaAAAXiBd+F0AXZBdaAAAXiBd+F0AXZBdaAAAXiBd+F0AXZBdaAAAXiBd+F0AXZBdaAAAXiBd+F0AXZBdaAAAXiBd+F3QXZBdaF1AXiBd+F3QXZBdaF1AXiBd+F3QXZBdaF1AXiBd+F3QXZBdaF1AXiBd+F3QXZBdaF1AXiBd+F3QXZBdaF1AXiBd+F3QXZBdaF1AXiBd+F3QXZBdaF1AXMBcmAAAXFhcMAAAXFhcMAAAXFhcMAAAXFhcMAAAXFhcMAAAW/BbyAAAW4hbYAAAW4hbYAAAW4hbYAAAW4hbYAAAW4hbYAAAW4hbYAAAW4hbYAAAW4hbYAAAW4hbYAAAW4hbYAAAWyBa+AAAWyBa+AAAWyBa+AAAWyBa+AAAWyBa+AAAWrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WrhaeFo4WhBaeFnQWhBaeFnQWhBaeFo4WZBZaAAAWZBZaAAAWShY6AAAWKhYgAAAWKhYgAAAWKhYgAAAWKhYgAAAWKhYgAAAWKhYgAAAWKhYgAAAWChY6AAAWChY6AAAWChY6AAAWChY6AAAWChY6AAAAAAAAAAAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAV+hXwFeAV+hXwFdAVwBWwAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVphWcAAAVjBV8AAAVjBV8AAAVjBV8AAAVjBV8AAAVjBV8AAAVjBV8AAAVjBV8AAAVjBV8AAAVjBV8AAAVjBV8AAAVjBV8AAAVjBV8AAAVjBV8AAAVjBV8AAAVjBV8AAAAABVyAAAAABViAAAVUhVIFTgVKBUeFQ4VUhVIFTgVKBUeFQ4VUhVIFTgVKBUeFQ4VUhVIFTgVKBUeFQ4VUhVIFTgVKBUeFQ4VUhVIFTgVKBUeFQ4VUhVIFTgVKBUeFQ4VUhVIFTgVKBUeFQ4AABVyAAAVKBUeFQ4VUhVIFTgVKBUeFQ4VUhVIFTgVKBUeFQ4VUhVIFTgVKBUeFQ4VUhVIFTgVKBUeFQ4VUhVIFTgVKBUeFQ4VUhVIFTgVKBUeFQ4AABVyAAAVBBT6AAAU6hTaAAAUyhTAAAAVBBT6AAAU6hTaAAAUyhTAAAAVjBSwAAAVjBSwAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAVjBVyAAAUoBSWAAAUoBSWAAAUoBSWAAAUhhR8AAAUhhR8AAAUhhR8AAAUhhR8AAAUchV8AAAUYhRYAAAUchV8AAAUchV8AAAUYhRYAAAUchV8AAAUchV8AAAUYhRYAAAUchV8AAAUchV8AAAUYhRYAAAUchV8AAAUchV8AAAUYhRYAAAUchV8AAAUchV8AAAUYhRYAAAUchV8AAAUchV8AAAUYhRYAAAUchV8AAAUchV8AAAUYhRYAAAUchV8AAAUchV8AAAUYhRYAAAUchV8AAAUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FB4USBQ+FB4USBQ+FB4USBQ+FB4USBQ+FB4USBQ+FB4USBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUSBQ+FDQUFBY6AAAUFBY6AAAUBBVyAAAUBBVyAAAT9BPkAAAUBBVyAAAUBBVyAAAT9BPkAAAUBBVyAAAUBBVyAAAT9BPkAAAUBBVyAAAUBBVyAAAT9BPkAAAUBBVyAAAUBBVyAAAT9BPkAAAUBBVyAAAUBBVyAAAT9BPkAAAUBBVyAAAUBBVyAAAT9BPkAAAUBBVyAAAUBBVyAAAT9BPkAAAT1BPKAAAT1BPKAAAT1BPKAAAT1BPKAAAT1BPKAAAT1BPKAAAT1BPKAAAT1BPKAAAT1BPKAAAT1BPKAAAT1BPKAAATwBOwAAATwBOgAAATwBOwAAATwBOgAAATwBOwAAATwBOgAAATwBOwAAATwBOgAAATwBOwAAATwBOgAAATwBOwAAATwBOgAAATwBOwAAATwBOgAAATwBOwAAATwBOgAAAUchV8E5AUchOGE3wUchV8E2wUchV8E5AUchOGE3wUchV8E2wUchV8E5AUchOGE3wUchV8E2wUchV8E5AUchOGE3wUchV8E2wUchV8E5AUchOGE3wUchV8E2wUchV8E5AUchOGE3wUchV8E2wUchV8E5AUchOGE3wUchV8E2wUchV8E5AUchOGE3wUchV8E2wUchV8E5AUchOGE3wUchV8E2wUchV8E1wUchV8AAAUchV8E1IUchV8E1wUchV8AAAUchV8E1IUchV8E1wUchV8AAAUchV8E1IUchV8E1wUchV8AAAUchV8E1IUchV8E1wUchV8AAAUchV8E1IUchV8E1wUchV8AAAUchV8E1IUchV8E5AUchOGE3wUchV8E2wUchV8E5AUchOGE3wUchV8E2wUchV8E5AUchOGE3wUchV8E2wUchV8E5AUchOGE3wUchV8E2wUchV8E5AUchOGE3wUchV8E2wUchV8E5AUchOGE3wUchV8E2wUchV8E5AUchOGE3wUchV8E2wUchV8E5AUchOGE3wUchV8E2wTQhM4AAATKBMeAAATKBMeAAATKBMeAAATKBMeAAATKBMeAAATDhMEAAAS9BLkAAAS9BLkAAAS9BLkAAAS1BLEAAAS9BLkAAAS9BLkAAAS9BLkAAAS1BLEAAAS9BLkAAAS9BLkAAAS9BLk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AAAAAAAA//YAAAAAAAAAAAAA//Y6LAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAA/+IAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sOiwAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAD/9gAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAP/2AAD/4gAAAAAAAP/sAAAAAAAAAAAAAAAAAAD/7AAAAAAAAP/iAAAAAAAA//Y6UAAAAAD/ujpQ/84AAP/sAAD/2DpQAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAA/9gToP/YAAD/2AAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBOaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YfZgAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHhOOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADomAAAAAAAAAAAAAAAAAAAAAAAA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ASL/xAEEASP/xAEEAST/xAEEASX/xAEEASb/xAEEASf/xAEEAhgARgAAAhkARgAAAhoARgAAA+7/2AF+BAH/2AF4BAL/2AF4BAP/xAF4BAT/xAEEAAIAgIAAABIBF//iAHQBGP/iAHQBGf/iAHQBGv/iAHQBG//iAHQBHP/iAHQBHv/EAG4BH//EAG4BIP/EAG4BIf/EAG4BIv/EAG4BI//EAG4BJP/EAG4BJf/EAG4BJv/EAG4BJ//EAG4EA//iAHQEBP/EAG4AAgCBgAAAAgCCgAAAAQND/+wACAACABOAAAAHA0b/4gAyA0j/7AAAA5L/7AAsA5P/7AAsA5b/7AAsA8L/7AAsA8P/7AAsAAEAAYAAAAIAM4AAAAgDRv+mADgDR//sAAADSP/OAAADkv/YADIDk//YADIDlv/YADIDwv/YADIDw//YADIAAQAAgAAAAgCJgAAAAQNL/+wACAABAAWAAAABA0b/9gAAAAEDSP/2AAAA3wEt//YAAAEu//YAAAEv//YAAAEw//YAAAEx//YAAAEy//YAAAEz//YAAAE0//YAAAE1//YAAAE2//YAAAE3//YAAAE4//YAAAE5//YAAAE6//YAAAE7//YAAAE8//YAAAE9//YAAAE+//YAAAE///YAAAFA//YAAAFB//YAAAFC//YAAAFD//YAAAFE//YAAAFF//YAAAFG//YAAAFH//YAAAFI//YAAAFJ//YAAAFK//YAAAFL//YAAAFM//YAAAFN//YAAAFO//YAAAFP//YAAAFQ//YAAAFR//YAAAFS//YAAAFT//YAAAFU//YAAAFV//YAAAFW//YAAAFX//YAAAFY//YAAAFZ//YAAAFa//YAAAFb//YAAAFc//YAAAFd//YAAAFe//YAAAFf//YAAAFg//YAAAFh//YAAAFi//YAAAFj//YAAAFk//YAAAFl//YAAAFm//YAAAFn//YAAAFo//YAAAFp//YAAAFq//YAAAFr//YAAAFs//YAAAFt//YAAAFu//YAAAFv//YAAAFw//YAAAFx//YAAAFy//YAAAFz//YAAAF0//YAAAF1//YAAAF2//YAAAF3//YAAAF4//YAAAF5//YAAAF6//YAAAF7//YAAAF8//YAAAF9//YAAAF+//YAAAF///YAAAGA//YAAAGB//YAAAGC//YAAAGD//YAAAGE//YAAAGF//YAAAGG//YAAAGH//YAAAGI//YAAAGJ//YAAAGK//YAAAGL//YAAAGM//YAAAGN//YAAAGO//YAAAGP//YAAAGQ//YAAAGR//YAAAGS//YAAAGU/+wAAAGV/+wAAAGW/+wAAAGX/+wAAAGY/+wAAAGZ/+wAAAGa/+wAAAGb/+wAAAGc/+wAAAGd/+wAAAGe/+wAAAGf/+wAAAGg/+wAAAGh/+wAAAGi/+wAAAGj/+wAAAGk/+wAAAGl/+wAAAGm/+wAAAGn/+wAAAGo/+wAAAGp/+wAAAGq/+wAAAGr/+wAAAGs/+wAAAGt/+wAAAGu/+wAAAGv/+wAAAGw/+wAAAGx/+wAAAGy/+wAAAGz/+wAAAG0/+wAAAG1/+wAAAG2/+wAAAG3/+wAAAG4/+wAAAG5/+wAAAG6/+wAAAG7/+wAAAG8/+wAAAG9/+wAAAG+/+wAAAG//+wAAAHA/+wAAAHB/+wAAAHC/+wAAAHD/+wAAAHE/+wAAAHF/+wAAAHG/+wAAAHH/+wAAAHI/+wAAAHJ/+wAAAHK/+wAAAHL/+wAAAHM/+wAAAHN/+wAAAHO/+wAAAHP/+wAAAHQ/+wAAAHT/+wAAAHU/+wAAAHV/+wAAAHW/+wAAAHX/+wAAAHY/+wAAAHZ/+wAAAHa/+wAAAHb/+wAAAHc/+wAAAHd/+wAAAHe/+wAAAHf/+wAAAHg/+wAAAHh/+wAAAHi/+wAAAHj/+wAAAHk/+wAAAHl/+wAAAHm/+wAAAHn/+wAAAJj/+wAAAJk/+wAAAJl/+wAAAJm/+wAAAJn/+wAAAJo/+wAAAJp/+wAAAJq/+wAAAJr/+wAAAJs/+wAAAJt/+wAAAJu/+wAAAJv/+wAAAJw/+wAAAJx/+wAAAJy/+wAAAJz/+wAAAJ0/+wAAAJ1/+wAAAJ2/+wAAAJ3/+wAAAJ4/+wAAAJ5/+wAAAJ6/+wAAAJ7/+wAAAJ8/+wAAAJ9/+wAAAJ+/+wAAAJ//+wAAAKA/+wAAAKB/+wAAAKC/+wAAAKD/+wAAAKE/+wAAAKF/+wAAAKJ/+wAAAKK/+wAAAPr/+wAAAPt/+wAAAABAwr/9hVuAAQDmgAeAAADtgBGAAADugBkAAADvgAoAAAAAQMK/+wAAAABAwr/xAAAAWcAHf/iAAAAHv/iAAAAH//iAAAAIP/iAAAAIf/iAAAAIv/iAAAAI//iAAAAQ//iAAAARf/iAAAARv/iAAAAR//iAAAASP/iAAAASf/iAAAASv/iAAAAS//iAAAATP/iAAAATf/iAAAATv/iAAAAT//iAAAAUP/iAAAAUf/iAAAAUv/iAAAAU//iAAAAVP/iAAAAVf/iAAAAVv/iAAAAV//iAAAAWP/iAAAAWf/iAAAAf//iAAAAgf/iAAAAn//iAAAAoP/iAAAAof/iAAAAov/iAAAAo//iAAAApP/iAAAApf/iAAAApv/iAAAAp//iAAAAqP/iAAAAqf/iAAAAqv/iAAAAq//iAAAArP/iAAAArf/iAAAArv/iAAAAr//iAAAAsP/iAAAAsf/iAAAAsv/iAAAAs//iAAAAtP/iAAAAtf/iAAAAtv/iAAAAt//iAAAAuP/iAAAAuf/iAAAAuv/iAAAAu//iAAAAvP/iAAAAvf/iAAAAvv/iAAAAv//iAAAAwP/iAAAAwf/iAAAAxP/iAAAAxf/iAAABlP/sAAABlf/sAAABlv/sAAABl//sAAABmP/sAAABmf/sAAABmv/sAAABm//sAAABnP/sAAABnf/sAAABnv/sAAABn//sAAABoP/sAAABof/sAAABov/sAAABo//sAAABpP/sAAABpf/sAAABpv/sAAABp//sAAABqP/sAAABqf/sAAABqv/sAAABq//sAAABrP/sAAABrf/sAAABrv/sAAABr//sAAABsP/sAAABsf/sAAABsv/sAAABs//sAAABtP/sAAABtf/sAAABtv/sAAABt//sAAABuP/sAAABuf/sAAABuv/sAAABu//sAAABvP/sAAABvf/sAAABvv/sAAABv//sAAABwP/sAAABwf/sAAABwv/sAAABw//sAAABxP/sAAABxf/sAAABxv/sAAABx//sAAAByP/sAAAByf/sAAAByv/sAAABy//sAAABzP/sAAABzf/sAAABzv/sAAABz//sAAAB0P/sAAAB0f/2FTwB0v/2FTwB0//sAAAB1P/sAAAB1f/sAAAB1v/sAAAB1//sAAAB2P/sAAAB2f/sAAAB2v/sAAAB2//sAAAB3P/sAAAB3f/sAAAB3v/sAAAB3//sAAAB4P/sAAAB4f/sAAAB4v/sAAAB4//sAAAB5P/sAAAB5f/sAAAB5v/sAAAB5//sAAAB/QA8CHIB/gA8CHIB/wA8CHICAAA8CHICAQA8CHICAgA8CHICAwA8CHICBAA8CHICBQA8CHICBgA8CHICDwA8CHICEAA8CHICEQA8CHICEgA8CHICY//sAAACZP/sAAACZf/sAAACZv/sAAACZ//sAAACaP/sAAACaf/sAAACav/sAAACa//sAAACbP/sAAACbf/sAAACbv/sAAACb//sAAACcP/sAAACcf/sAAACcv/sAAACc//sAAACdP/sAAACdf/sAAACdv/sAAACd//sAAACeP/sAAACef/sAAACev/sAAACe//sAAACfP/sAAACff/sAAACfv/sAAACf//sAAACgP/sAAACgf/sAAACgv/sAAACg//sAAAChP/sAAAChf/sAAACif/sAAACiv/sAAACo//sAAACpP/sAAACpf/sAAACpv/sAAACp//sAAACqP/sAAACqf/sAAACqv/sAAACq//sAAACrP/sAAACrf/sAAACr//iFWYCsP/iFWYCsf/iFWYCsv/iFWYCs//iFWYCtP/iFWYCtf/iFWYCtv/iFWYCt//iFWYCuP/iFWYCuf/iFWYCuv/iFWYCu//iFWYCvP/iFWYCvf/iFWYCvv/iFWYCv//2AAACwP/2AAACwf/2AAACwv/2AAACw//2AAACxP/2AAACxf/2AAACxv/2AAACx//2AAACyP/2AAACyf/2AAACyv/2AAACy//2AAACzP/2AAACzf/2AAACzv/2AAACz//2AAAC0P/2AAAC0f/2AAAC0v/2AAAC0//2AAAC1P/2AAAC1f/2AAAC1v/2AAAC1//2AAAC2P/2AAAC2f/2AAAC2v/2AAAC2//2AAAC3P/2AAAC3f/2AAAC3v/2AAAC3//2AAAC4P/2AAAC4f/2AAAC4v/2AAAC4//2AAAC5P/2AAAC5f/2AAAC5v/2AAAC5//2AAAC6P/2AAAC6f/2AAAC6v/2AAAC6//2AAAC7P/2AAAC7f/2AAAC7v/2AAAC7//2AAAC8P/2AAAC8f/2AAAC8v/2AAAC8//2AAAC9P/2AAAC9f/2AAAC9v/2AAAC9//2AAAC+P/2AAAC+f/2AAAC+v/2AAAC+//2AAAC/P/2AAAC/f/2AAAC/v/2AAAC///2AAADAP/2AAADAf/2AAADAv/2AAADA//2AAADBP/2FTwDBf/2CGwDBv/2CGwDB//2CGwDCP/2CGwDCf/2CGwDC//iAAADDP/iAAADDf/iAAADDv/2AAADD//iAAADEP/iAAADEf/iAAADEv/2AAADE//iAAADFP/iAAADFf/iAAADFv/2AAADF//iAAADGP/iAAADGf/iAAADGv/2AAADG//iAAADHP/iAAADHf/iAAADHv/2AAADH//iAAADIP/iAAADIf/iAAADIv/2AAADI//iAAADJP/iAAADJf/iAAADJv/2AAADJ//iAAADKP/iAAADKf/iAAADKv/2AAADK//iAAADLP/iAAADLf/iAAADLv/2AAADL//iAAADMP/iAAADMf/iAAADMv/2AAADOP/2FTwDOf/2FTwDOv/2FTwDO//2FTwDPP/2FTwDQP/iAAADQf/iFWYD1v/iAAAD2v/sAAAD6v/iAAAD6//sAAAD7P/iAAAD7f/sAAAD8v/iAAAAAgAvgAAAAgA1gAAAAQMK//YAAAIeAAH/xA1CAAL/xA1CAAP/xA1CAAT/xA1CAAX/xA1CAAb/xA1CAAf/xA1CAAj/xA1CAAn/xA1CAAr/xA1CAAv/xA1CAAz/xA1CAA3/xA1CAA7/xA1CAA//xA1CABD/xA1CABH/xA1CABL/xA1CABP/xA1CABT/xA1CABX/xA1CABb/xA1CABf/xA1CABj/xA1CABn/xA1CABr/xA1CABv/xA1CAB3/7AAAAB7/7AAAAB//7AAAACD/7AAAACH/7AAAACL/7AAAACP/7AAAAEP/7AAAAEX/7AAAAEb/7AAAAEf/7AAAAEj/7AAAAEn/7AAAAEr/7AAAAEv/7AAAAEz/7AAAAE3/7AAAAE7/7AAAAE//7AAAAFD/7AAAAFH/7AAAAFL/7AAAAFP/7AAAAFT/7AAAAFX/7AAAAFb/7AAAAFf/7AAAAFj/7AAAAFn/7AAAAH//xAAAAIH/xAAAAJ//7AAAAKD/7AAAAKH/7AAAAKL/7AAAAKP/7AAAAKT/7AAAAKX/7AAAAKb/7AAAAKf/7AAAAKj/7AAAAKn/7AAAAKr/7AAAAKv/7AAAAKz/7AAAAK3/7AAAAK7/7AAAAK//7AAAALD/7AAAALH/7AAAALL/7AAAALP/7AAAALT/7AAAALX/7AAAALb/7AAAALf/7AAAALj/7AAAALn/7AAAALr/7AAAALv/7AAAALz/7AAAAL3/7AAAAL7/7AAAAL//7AAAAMD/7AAAAMH/7AAAAMT/7AAAAMX/7AAAANb/9gzCANf/9gzCANj/9gzCANn/9gzCANr/9gzCANv/9gzCANz/9gzCAN3/9gzCAN7/9gzCAN//9gzCAOD/9gzCAOH/9gzCAS3/2AAAAS7/2AAAAS//2AAAATD/2AAAATH/2AAAATL/2AAAATP/2AAAATT/2AAAATX/2AAAATb/2AAAATf/2AAAATj/2AAAATn/2AAAATr/2AAAATv/2AAAATz/2AAAAT3/2AAAAT7/2AAAAT//2AAAAUD/2AAAAUH/2AAAAUL/2AAAAUP/2AAAAUT/2AAAAUX/2AAAAUb/2AAAAUf/2AAAAUj/2AAAAUn/2AAAAUr/2AAAAUv/2AAAAUz/2AAAAU3/2AAAAU7/2AAAAU//2AAAAVD/2AAAAVH/2AAAAVL/2AAAAVP/2AAAAVT/2AAAAVX/2AAAAVb/2AAAAVf/2AAAAVj/2AAAAVn/2AAAAVr/2AAAAVv/2AAAAVz/2AAAAV3/2AAAAV7/2AAAAV//2AAAAWD/2AAAAWH/2AAAAWL/2AAAAWP/2AAAAWT/2AAAAWX/2AAAAWb/2AAAAWf/2AAAAWj/2AAAAWn/2AAAAWr/2AAAAWv/2AAAAWz/2AAAAW3/2AAAAW7/2AAAAW//2AAAAXD/2AAAAXH/2AAAAXL/2AAAAXP/2AAAAXT/2AAAAXX/2AAAAXb/2AAAAXf/2AAAAXj/2AAAAXn/2AAAAXr/2AAAAXv/2AAAAXz/2AAAAX3/2AAAAX7/2AAAAX//2AAAAYD/2AAAAYH/2AAAAYL/2AAAAYP/2AAAAYT/2AAAAYX/2AAAAYb/2AAAAYf/2AAAAYj/2AAAAYn/2AAAAYr/2AAAAYv/2AAAAYz/2AAAAY3/2AAAAY7/2AAAAY//2AAAAZD/2AAAAZH/2AAAAZL/2AAAAZT/zgAAAZX/zgAAAZb/zgAAAZf/zgAAAZj/zgAAAZn/zgAAAZr/zgAAAZv/zgAAAZz/zgAAAZ3/zgAAAZ7/zgAAAZ//zgAAAaD/zgAAAaH/zgAAAaL/zgAAAaP/zgAAAaT/zgAAAaX/zgAAAab/zgAAAaf/zgAAAaj/zgAAAan/zgAAAar/zgAAAav/zgAAAaz/zgAAAa3/zgAAAa7/zgAAAa//zgAAAbD/zgAAAbH/zgAAAbL/zgAAAbP/zgAAAbT/zgAAAbX/zgAAAbb/zgAAAbf/zgAAAbj/zgAAAbn/zgAAAbr/zgAAAbv/zgAAAbz/zgAAAb3/zgAAAb7/zgAAAb//zgAAAcD/zgAAAcH/zgAAAcL/zgAAAcP/zgAAAcT/zgAAAcX/zgAAAcb/zgAAAcf/zgAAAcj/zgAAAcn/zgAAAcr/zgAAAcv/zgAAAcz/zgAAAc3/zgAAAc7/zgAAAc//zgAAAdD/zgAAAdH/9gy8AdL/9gy8AdP/zgAAAdT/zgAAAdX/zgAAAdb/zgAAAdf/zgAAAdj/zgAAAdn/zgAAAdr/zgAAAdv/zgAAAdz/zgAAAd3/zgAAAd7/zgAAAd//zgAAAeD/zgAAAeH/zgAAAeL/zgAAAeP/zgAAAeT/zgAAAeX/zgAAAeb/zgAAAef/zgAAAf0AUAy2Af4AUAy2Af8AUAy2AgAAUAy2AgEAUAy2AgIAUAy2AgMAUAy2AgQAUAy2AgUAUAy2AgYAUAy2Ag8AUAy2AhAAUAy2AhEAUAy2AhIAUAy2AiX/4gAAAj//4gAAAkD/4gAAAkH/4gAAAkL/4gAAAkP/4gAAAkT/4gAAAkX/4gAAAkb/4gAAAkf/4gAAAkj/4gAAAkn/4gAAAkr/4gAAAkv/4gAAAkz/4gAAAk3/4gAAAk7/4gAAAk//4gAAAlD/4gAAAlH/4gAAAlL/4gAAAlP/4gAAAlT/4gAAAlX/4gAAAlb/4gAAAlf/4gAAAlj/4gAAAln/4gAAAlr/4gAAAlv/4gAAAlz/4gAAAl3/4gAAAl7/4gAAAl//4gAAAmD/4gAAAmH/4gAAAmL/4gAAAmP/zgAAAmT/zgAAAmX/zgAAAmb/zgAAAmf/zgAAAmj/zgAAAmn/zgAAAmr/zgAAAmv/zgAAAmz/zgAAAm3/zgAAAm7/zgAAAm//zgAAAnD/zgAAAnH/zgAAAnL/zgAAAnP/zgAAAnT/zgAAAnX/zgAAAnb/zgAAAnf/zgAAAnj/zgAAAnn/zgAAAnr/zgAAAnv/zgAAAnz/zgAAAn3/zgAAAn7/zgAAAn//zgAAAoD/zgAAAoH/zgAAAoL/zgAAAoP/zgAAAoT/zgAAAoX/zgAAAob/4gAAAof/4gAAAon/zgAAAor/zgAAAov/4gAAAoz/4gAAAo3/4gAAAo7/4gAAAo//4gAAApD/4gAAApH/4gAAApL/4gAAApP/4gAAApT/4gAAApX/4gAAApb/4gAAApf/4gAAApj/4gAAApn/4gAAApr/4gAAApv/4gAAApz/4gAAAp3/4gAAAp7/4gAAAp//4gAAAqD/4gAAAqH/4gAAAqL/4gAAAqP/zgAAAqT/zgAAAqX/zgAAAqb/zgAAAqf/zgAAAqj/zgAAAqn/zgAAAqr/zgAAAqv/zgAAAqz/zgAAAq3/zgAAAq//9gAAArD/9gAAArH/9gAAArL/9gAAArP/9gAAArT/9gAAArX/9gAAArb/9gAAArf/9gAAArj/9gAAArn/9gAAArr/9gAAArv/9gAAArz/9gAAAr3/9gAAAr7/9gAAAr//4gAAAsD/4gAAAsH/4gAAAsL/4gAAAsP/4gAAAsT/4gAAAsX/4gAAAsb/4gAAAsf/4gAAAsj/4gAAAsn/4gAAAsr/4gAAAsv/4gAAAsz/4gAAAs3/4gAAAs7/4gAAAs//4gAAAtD/4gAAAtH/4gAAAtL/4gAAAtP/4gAAAtT/4gAAAtX/4gAAAtb/4gAAAtf/4gAAAtj/4gAAAtn/4gAAAtr/4gAAAtv/4gAAAtz/4gAAAt3/4gAAAt7/4gAAAt//4gAAAuD/4gAAAuH/4gAAAuL/4gAAAuP/4gAAAuT/4gAAAuX/4gAAAub/4gAAAuf/4gAAAuj/4gAAAun/4gAAAur/4gAAAuv/4gAAAuz/4gAAAu3/4gAAAu7/4gAAAu//4gAAAvD/4gAAAvH/4gAAAvL/4gAAAvP/4gAAAvT/4gAAAvX/4gAAAvb/4gAAAvf/4gAAAvj/4gAAAvn/4gAAAvr/4gAAAvv/4gAAAvz/4gAAAv3/4gAAAv7/4gAAAv//4gAAAwD/4gAAAwH/4gAAAwL/4gAAAwP/4gAAAwT/7AAAAwr/7AAAAw7/4gAAAxL/4gAAAxb/4gAAAxr/4gAAAx7/4gAAAyL/4gAAAyb/4gAAAyr/4gAAAy7/4gAAAzL/4gAAAzP/7AAAAzT/7AAAAzX/7AAAAzb/7AAAAzf/7AAAAzj/9gy8Azn/9gy8Azr/9gy8Azv/9gy8Azz/9gy8Az//xA1CA0D/7AAAA0H/9gAAA5L/zgAAA5P/zgAAA5b/zgAAA8L/zgAAA8P/zgAAA9b/7AAAA9r/zgAAA+j/xA1CA+r/7AAAA+v/zgAAA+z/7AAAA+3/zgAAA+7/9gzCA/L/7AAAAAIABIAA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AAAABwRz/3cA0f//ABQAAAFZA+cCJgBgAAAABwRz/60A0f///50AAADxA+cCJgBfAAAABwSC/zYA0f///9MAAAFCA+cCJgBgAAAABwSC/2wA0f////QAAAEMA7UCJgBfAAAABwRn/40A0f//ACoAAAFCA7UCJgBgAAAABwRn/8MA0f///+8AAAERBIcCJgBfAAAABwRp/4gA0f//ACUAAAFHBIcCJgBgAAAABwRp/74A0f//AE4AAACyA7UCJgBfAAAABwRs/+cA0f//ACoAAAFCA7UCJgBgAAAABwRsAB0A0f//AE7/QgCyAukCJgBfAAAABgSG5wD//wAq/0IBQgLpAiYAYAAAAAYEhh0A////6AAAAKgD5wImAF8AAAAHBG7/gQDR//8AHgAAAUID5wImAGAAAAAHBG7/twDR//8AIwAAANwD8QImAF8AAAAHBIH/vADR//8AKgAAAUID8QImAGAAAAAHBIH/8gDR////4gAAAR0D5wImAF8AAAAHBIP/ewDR//8AGAAAAVMD5wImAGAAAAAHBIP/sQDR////+QAAAQcDqwImAF8AAAAHBH3/kgDR//8AKgAAAUIDqwImAGAAAAAHBH3/yADR////9/8aANQC6QImAF8AAAAGBIqQAP//ACr/GgFCAukCJgBgAAAABgSK0AD////hAAABHwPQAiYAXwAAAAcEef96ANH//wAXAAABVQPQAiYAYAAAAAcEef+wANEAAQA3AAABJwLpAAwAADM1MzI2NREzERQGBiM3KDhAUDFaPVBDOgIc/eQ/XDIAAAEALf/0AeoC6QARAAAFIiYnNxYWMzI2NjURMxEUBgYBFVh8FEoRVTgpPCBQNF8MYE8WOUEiPCYCJv3aO142AP//ADcAAAGiA+cCJgB+AAAABwRz//YA0f//AC3/9AJlA+cCJgB/AAAABwRzALkA0QABAFgAAAKDAukADQAAMxEzEScBMwE3ASMDBxVYUBIBd2T+0wQBO2D+fQLp/k0JAar+qjn+NAFvjuEAAwBQAAACgALpAAYACgAOAAAhAzcTMwMBIREzEQM1MxUCH/4C2GDvART90FAmzAFSRgFR/o3+igLp/RcBT0tLAAEAWP/6AqEC6QAYAAAFIi4CJycHFSMRMxEnATMBNxMeAjMzFQKUHjAtNCOcflBQEgF3ZP7TBNcTICYcDQYJHTwy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//QCMAMWAiYBowAAAAYEcysA//8AN//0AlgDSAImAaIAAAAGBJErAP//ADf/9AJYA0gCJgGjAAAABgSRKwD//wA3/0ICMAMWAiYBogAAACcEhgCbAAAABgRzKwD//wA3/0ICMAMWAiYBowAAACcEhgCbAAAABgRzKwD//wA3//QCOANIAiYBogAAAAYEkisA//8AN//0AjgDSAImAaMAAAAGBJIrAP//ADf/9AIwA44CJgGiAAAABgSTKwD//wA3//QCMAOOAiYBowAAAAYEkysA//8AN//0AjADygImAaIAAAAGBJQyAP//ADf/9AIwA8oCJgGjAAAABgSUMgD//wA3//QCMAMWAiYBogAAAAYEguoA//8AN//0AjADFgImAaMAAAAGBILqAP//ADf/9AIwAuQCJgGiAAAABgRnQQD//wA3//QCMALkAiYBowAAAAYEZ0EA//8AN//0AjAC5AImAaIAAAAHBGwAmwAA//8AN//0AjAC5AImAaMAAAAHBGwAmwAA//8AN/9CAjACJAImAaIAAAAHBIYAmwAA//8AN/9CAjACJAImAaMAAAAHBIYAmwAA//8AN//0AjADFgImAaIAAAAGBG41AP//ADf/9AIwAxYCJgGjAAAABgRuNQD//wA3//QCMAMgAiYBogAAAAYEgXAA//8AN//0AjADIAImAaMAAAAGBIFwAP//ADf/9AIwAxYCJgGiAAAABgSDLwD//wA3//QCMAMWAiYBowAAAAYEgy8A//8AN//0AjAC2gImAaIAAAAGBH1GAP//ADf/9AIwAtoCJgGjAAAABgR9RgD//wA3//QCMAO2AiYBogAAAAYEgD0A//8AN//0AjADtgImAaMAAAAGBIA9AP//ADf/9AIwA7YCJgGiAAAABgR/NQD//wA3//QCMAO2AiYBowAAAAYEfzUA//8AN/8aAjACJAImAaIAAAAGBIpHAP//ADf/GgIwAiQCJgGjAAAABgSKWwD//wA3//QCMAL/AiYBogAAAAYEeS4A//8AN//0AjAC/wImAaMAAAAGBHkuAAABADf/9AIwAiQAJwAABSIuAjU0NjchFSE3BhYWMzI2Nic2JiYjIgYHJz4CMzIWFhUUBgYBLjpbQCICAgHF/mYkCCpRMTJVMAUFM1kzOlAaQBFBXDZLeEdEdAwrSVswChkNRh43VzM0Xj9BXjQ4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AAAHjAAAB6gAAAfEAAAH6AAACAQAAAggAAAIPAAACFgAAAh0AAAIkAAACKwAAAjIAAAI5AAACQAAAAkcAAAJOAAACVQAAAlwAAAJjAAAClgAAAqGAAALMgAAC+AAAAyWAAAMsgAADNAAAAzsAAANCAAADSYAAA1CAAANXgAADXwAAA2YAAANtAAADc4AAA3qAAAOBgAADiQAAA5AAAAOXAAADnoAAA6WAAAOygAADwgAAA8kAAAPQAAAD1wAAA98AAAPvAAAD9gAAA/0AAAQFAAAEDAAABBQAAAQbAAAEIwAABCoAAAQyAAAEOQAABEEAAARIAAAEUAAABFcAAARfAAAEZgAABG0AAAR0AAAEfAAABIMAAASLAAAEkgAABJoAAAShAAAEqQAABLAAAAS3AAAEvgAABMYAAATXgAAE7wAABPYAAAT9AAAFEAAABSEAAAU+gAAFRYAABUwAAAVTAAAFXAAABWMAAAVqAAAFcQAABXgAAAWNAAAFlAAABZsAAAWiAAAFsYAABcWAAAXMgAAF3IAABeMAAAXqAAAF8QAABfgAAAX/AAAGBgAABg0AAAYUAAAGGwAABjoAAAZmgAAGbgAABnWAAAZ9AAAGhIAABo0AAAaUgAAGnAAABqOAAAarAAAGsoAABroAAAbBgAAGyAAABs+AAAbXAAAHEwAABxqAAAchAAAHKIAABzAAAAc3gAAHPwAAB0aAAAdOAAAHVYAAB10AAAdjgAAHkgAAB5mAAAehAAAHqIAAB7AAAAe3gAAH8YAACA6AAAgtgAAIXAAACJQAAAi0AAAI3QAACOQAAAjrAAAI8gAACPkAAAkAAAAJBwAACQ4AAAkVAAAJHAAACSMAAAkqAAAJMQAACTgAAAk/AAAJcYAACXiAAAl/gAAJhoAACY2AAAmUgAAJm4AACaKAAAmpgAAJsIAACbmAAAnAgAAJywAACdgAAAnfAAAJ5gAACe0AAAn0AAAJ+wAAChYAAAogAAAKJwAACi4AAAo1AAAKPAAACkMAAApKAAAKUQAAClgAAApfAAAKZgAACm0AAAp0AAAKewAACoIAAAqJAAAKkAAACriAAArTAAAK2gAACuEAAAroAAAK7wAACvYAAAr9AAALBAAACwsAAAsSAAALGQAACyAAAAsnAAALLgAACzUAAAs8AAALQwAAC0oAAAtRAAALWAAAC18AAAtmAAALbQAAC3QAAAt7AAALggAAC4kAAAuVAAALqQAAC7AAAAu3AAALvgAAC8UAAAvZAAAL6QAAC/AAAAv3AAAL/gAADAUAAAwMAAAMEwAADBoAAAwhAAAMKAAADDUAAAw8AAAMQwAADEoAAAxRAAAMg4AADKoAAAzegAANDAAADRMAAA0aAAANIQAADSgAAA0vgAANNwAADT6AAA1GAAANTYAADVUAAA1cgAANZAAADWwAAA10AAANfAAADYQAAA2LgAANkwAADZqAAA2iAAANqYAADbEAAA24gAANwAAADccAAA3OAAAN1QAADdwAAA3jAAAN6gAADfEAAA34AAAN/wAADgYAAA4NAAAOFAAADhuAAA4jAAAOKoAADjIAAA45AAAOQAAADkcAAA5OAAAOVQAADlwAAA5jAAAOagAADnEAAA54AAAOfwAADoYAAA6NAAAOlAAADpsAAA6iAAAOqQAADrAAAA63AAAOvgAADsUAAA7MAAAO0wAADtoAAA7hAAAO6AAADu8AAA72AAAO/QAADwQAAA8LAAAPEgAADxkAAA8gAAAPJwAADy4AAA81AAAPPAAAD0MAAA9KAAAPUQAAD1gAAA9fAAAPZgAAD20AAA90AAAPewAAD4IAAA+JAAAPkAAAD5cAAA+eAAAPpQAAD6wAAA+zAAAPugAAEBGAABAYgAAQQoAAEGgAABBvAAAQdgAAEH0AABCEgAAQi4AAEJKAABC8AAAQwwAAEPEAABD4AAAQ/wAAEQaAABFEgAARcYAAEZmAABGggAARp4AAEa8AABG2gAARvYAAEcSAABHMgAAR1IAAEduAABHigAAR6YAAEfCAABH4AAAR/4AAEgaAABINgAASFIAAEhuAABIigAASKYAAEjCAABI3gAASPoAAEkWAABJMgAASU4AAElqAABJhgAASaIAAEm+AABJ2gAASfYAAEoSAABKLgAASkoAAEpmAABKggAASp4AAEq6AABK1gAASvIAAEsOAABLKgAAS0YAAEv8AABMcgAATKoAAE2QAABORAAATxQAAE8yAABPUAAAT24AAE+KAABPpgAAT8IAAE/eAABP+gAAUBYAAFAyAABQTgAAUGoAAFCGAABQogAAUL4AAFDaAABQ9gAAURIAAFGEAABRrgAAUgYAAFKKAABSvgAAUyYAAFNCAABTXgAAU3oAAFOW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AAAAgAIOAPeBhYACxAD7gYUAgAIADAAGAAEABgAAAgEBAgEVDQEKAAHE7wH2AIACAAwABAABAAogAAEAAQAPAAoCAQECAcb2AfYAAIACAAwABgABAAYAAAIBAQIBGPcBCgABxvsB9gCAAgAMAAYAAQAGAAACAQECARANAQoAAbrvAfYAgAIADAAEAAEACiAAAQABAAoACgIBAQIBvPYB9gAAgAIADAAGAAEABgAAAgEBAgET9wEKAAG8+wH2AIACAAwADwABAA8AAAcGAQICAgICAgYL7RX3Fe0CgAD4gQAWgQbqNccSxzX8gAANgQDRgQCAAgAMABMAAQATAAAJCAECAgICAgICAggD/wvtFfcV7QID8Q8A+IEAFoEI9wXqNccSxzX8AxvkAA2BANGBAIACAAwABwABAAcAAACAAhYAAoGFgAKrAPyBhQCAAgAMAAYAAQAGAAACAQECARACAQoAAbj8AfYAgAIADAAHAAEABwAAAIACEAACgYWAAssA/IGFAIACAAwACQABAAkAAAAFCwvt7QD4gYcF6uo1NQAfgYcAgAIADAAOAAEAHSAABgUAAgICAgIFDw8P8fHxgATnGQAZ5wcGAQICAgICAgIVKRVDAIgAdACIAJwEQb8Av0GBAIACAAwABwABAAcAAACAAvgA9oGFgAIfACyBhQCAAgAMAAYAAQAGAAACAQECAQv4AQoAAdIfAfYAgAIADAAEAAEADCAAAQABAA8ACgIBAQIAEEAAnAH2AACAAgAMAAYAAQAGAAACAQECARH4AQoAAb0fAfsAgAIADAAEAAEADCAAAQABABUACgIBAQIA+0AAnAH7AACAAgAMAAYAAQAGAAACAQECAQv4AQoAAcofAfYAgAIADAAEAAEADCAAAQABAA8ACgIBAQIACEAAnAH2AACAAgAMAAYAAQAGAAACAQECARb4AQoAAa4fAfYAgAIADAAEAAEADCAAAQABABoACgIBAQIA7EAAnAH2AACAAgAMAAYAAQAGAAACAQECARr4AQoAAcQfAfYAgAIADAAEAAEADCAAAQABAB4ACgIBAQIAAkAAnAH2AACAAgAMAAYAAQAGAAACAQECARf4AQoAAckfAfYAgAIADAAEAAEADCAAAQABABsACgIBAQIAB0AAnAH2AACAAgAMAAYAAQAGAAACAQECAQv4AQoAAd0fAfYA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gAIADAAHAAEABwAAAIACEAACgYWAAsgAC4GFAIACAAwABwABAAogAACAAhQAAoGFAgEBAgGuCwEFAIACAAwABwABAAogAACAAhYAAoGFAgEBAgGzCwEFAIACAAwABwABAAogAACAAhYA/IGFAgEBAgGzFgEFAIACAAwABwABAAogAACAAhYAAoGFAgEBAgGzCwEFAIACAAwABwABAAogAACAAhQAAoGFAgEBAgGuCwEFAIACAAwABwABAAogAACAAhYAAoGFAgEBAgGzCwEFAIACAAwABwABAAogAACAAhYA/IGFAgEBAgGzFgEFAIACAAwABwABAAogAACAAhYAAoGFAgEBAgGzCwEFAIACAAwACAABAAsAAACAAxAUAAKBhoAD064AC4GBAAWDgAIADAAIAAEACwAAAIADEBYAAoGGgAPTswALgYEABYOAAgAMAAgAAQALAAAAgAMQFgD8gYaAA9OzABaBgQAFg4ACAAwACAABAAsAAACAAxAWAAKBhoAD07MAC4GBAAWDgAIADAAHAAEACiAAAIACEwACgYUCAQECAa0LAQUAgAIADAAHAAEACiAAAIACFQACgYUCAQECAbILAQUAgAIADAAHAAEACiAAAIACFQD8gYUCAQECAbIWAQUAgAIADAAHAAEACiAAAIACFQACgYUCAQECAbILAQUAgAIADAAHAAEACiAAAIACFAACgYUCAQECAa4LAQUAgAIADAAHAAEACiAAAIACFgACgYUCAQECAbMLAQUAgAIADAAHAAEACiAAAIACFgD8gYUCAQECAbMWAQUAgAIADAAHAAEACiAAAIACFgACgYUCAQECAbMLAQUAgAIADAAHAAEABwAAAIACGwACgYWAArgAC4GFAIACAAwABwABAAcAAACAAh0AAoGFgAK9AAuBhQCAAgAMAAcAAQAHAAAAgAIdAPyBhYACvQAWgYUAgAIADAAHAAEABwAAAIACHQACgYWAAr0AC4GFAIACAAwABwABAAcAAACAAg4AAoGFgAK7AAuBhQCAAgAMAAcAAQAHAAAAgAIQAAKBhYACwAALgYUAgAIADAAHAAEABwAAAIACEAD8gYWAAsAAFoGFAIACAAwABwABAAcAAACAAhAAAoGFgALAAAuBhQCAAgAMAAcAAQAHAAAAgAIOAAKBhYACuwALgYUAgAIADAAHAAEABwAAAIACEAACgYWAAsAAC4GFAIACAAwABwABAAcAAACAAhAA/IGFgALAABaBhQCAAgAMAAcAAQAHAAAAgAIQAAKBhYACwAALgYUAgAIADAAIAAEACAAAAIADEA4AAoGGgAPTuwALgYYAgAIADAAIAAEACAAAAIADEBAAAoGGgAPTwAALgYYAgAIADAAIAAEACAAAAIADEBAA/IGGgAPTwAAWgYYAgAIADAAIAAEACAAAAIADEBAAAoGGgAPTwAALgYYAgAIADAAHAAEABwAAAIACDgACgYWAArsAC4GFAIACAAwABwABAAcAAACAAhAAAoGFgALAAAuBhQCAAgAMAAcAAQAHAAAAgAIQAPyBhYACwAAWgYUAgAIADAAHAAEABwAAAIACEAACgYWAAsAAC4GFAIACAAwABwABAAcAAACAAg0AAoGFgAK7AAuBhQCAAgAMAAcAAQAHAAAAgAIPAAKBhYACwAALgYUAgAIADAAHAAEABwAAAIACDwD8gYWAAsAAFoGFAIACAAwABwABAAcAAACAAg8AAoGFgALAAAuBhQCAAgAMAAcAAQAHAAAAgAIHAAKBhYACvAALgYUAgAIADAAHAAEABwAAAIACCQACgYWAAsEAC4GFAIACAAwABwABAAcAAACAAgkA/IGFgALBABaBhQCAAgAMAAcAAQAHAAAAgAIJAAKBhYACwQALgYUAgAIADAAHAAEABwAAAIACGQACgYWAAp8AC4GFAIACAAwABwABAAcAAACAAhsAAoGFgAKkAAuBhQCAAgAMAAcAAQAHAAAAgAIbAPyBhYACpAAWgYUAgAIADAAHAAEABwAAAIACGwACgYWAAqQAC4GFAIACAAwABwABAAcAAACAAh0AAoGFgAK1AAuBhQCAAgAMAAcAAQAHAAAAgAIfAAKBhYACugALgYUAgAIADAAHAAEABwAAAIACHwD8gYWAAroAFoGFAIACAAwABwABAAcAAACAAh8AAoGFgAK6AAuBhQCAAgAMAAcAAQAHAAAAgAIQAAKBhYAC0wALgYUAgAIADAAHAAEABwAAAIACEAACgYWAAtMAC4GFAIACAAwABwABAAcAAACAAhAA/IGFgALTABaBhQCAAgAMAAcAAQAHAAAAgAIQAAKBhYAC0wALgYUAgAIADAAHAAEABwAAAIACFQACgYWAAs4AC4GFAIACAAwABwAB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AAGEAIACAAwAFQABABUAAAoJAQICAgICAgICAgkM6wsKC+3p7ez3B+kMGfb29hndgQnoNurx6jU/NTchByDp0woKCtM3gYACAAwABwABAAkAAACAAusA34GFgAEgAEAAloGFAIACAAwABwABAAkAAACAAusA5YGFgAEgAEAAi4GFAIACAAwABwABAAcAAACAAuIA94GFgAL8ACGBhQCAAgAMAAcAAQAHAAAAgAL/APeBhYAC5wAhgYUAgAIADAAHAAEABwAAAIAC8QD3gYWAAuwAIYGFAIACAAwABwABAAcAAACAAg4A94GFgALXACGBhQCAAgAMAAcAAQAHAAAAgAIaAPeBhYACwwAhgYUAgAIADAAHAAEABwAAAIACGgD3gYWAAsMAIYGFAIACAAwABwABAAcAAACAAu0A94GFgALyACGBhQCAAgAMAAcAAQAHAAAAgAIKAPeBhYAC3QAhgYUAgAIADAAHAAEABwAAAIAC6AD3gYWAAugAIYGFAIACAAwABwABAAcAAACAAgUA94GFgALTACGBhQCAAgAMADQAAQA0AAAAGQgMDgsLC+3t7fX+/wkQEBAQ8vIQEAsODQD9gYEP+fL09vbr5N/g4ODq9fX29oECBwYGhBnw5uXq6uo1NTUrGg4D8OXl5TAw7+/m5u0AGoGBDwQLEQoKFCAyPDw8MRsKCgqBAgTw84QAgAIADAALAAEACwAABQQBAgICAgQL7RDy/QL23faBBOo15TAaAgo3CoEAgAIADAAwAAEAIiAAABf+Cg8LCwvt7e33AP79BhAQEPLy8u7yAP2BgRL58fL29u3m4OHh4eDm7fb28vH5hAoJAQMCAQMCAwIBBQkC6jU1GgHlMDAagAgTChE9PREKEwAAgAIADAAHAAEABwAAAIACDQD9gYWAAs8AGoGFAIACAAwABwABAAcAAACAAg0A/YGFgALPABqBhQCAAgAMAAcAAQAHAAAAgAINAP2BhYACzwAagYUAgAIADAAHAAEACiAAAIACEwD9gYUCAQECAboaAQUAgAIADAAHAAEACiAAAIACEwD9gYUCAQECAboaAQUAgAIADAAHAAEACiAAAIACEwD9gYUCAQECAboaAQUAgAIADAAHAAEABwAAAIACDQD9gYWAAscAGoGFAIACAAwABwABAAcAAACAAg0A/YGFgALHABqBhQCAAgAMAAcAAQAHAAAAgAINAP2BhYACxwAagYUAgAIADAAHAAEABwAAAIACGAD9gYWAAqsAGoGFAIACAAwABwABAAcAAACAAhgA/YGFgAKrABqBhQCAAgAMAAcAAQAHAAAAgAIYAP2BhYACqwAagYUAgAIADAAHAAEABwAAAIACHAD9gYWAAsEAGoGFAIACAAwABwABAAcAAACAAhwA/YGFgALBABqBhQCAAgAMAAcAAQAHAAAAgAIcAP2BhYACwQAagYUAgAIADAAHAAEABwAAAIACDQD9gYWAAtoAGoGFAIACAAwABwABAAcAAACAAg4A/YGFgALaABqBhQCAAgAMAAcAAQAHAAAAgAINAP2BhYAC2gAagYUAgAIADAAHAAEABwAAAIACFAD9gYWAAtoAGoGFAIACAAwABwABAAcAAACAAhQA/YGFgALaABqBhQCAAgAMAAcAAQAHAAAAgAIUAP2BhYAC2gAagYUAgAIADAAHAAEABwAAAIACDQD9gYWAAs8AGoGFAIACAAwABwABAAcAAACAAg0A/YGFgALPABqBhQCAAgAMAAcAAQAHAAAAgAINAP2BhYACzwAagYUAgAIADABOAAEATQAAACYIDA4LCwvt7e31/v8JEBAQEAYKCAgICQrt7Ovr6+7x8vIQEBINAOyBgR358vT29uvk3+Dg4Or19fb29vv4+Pn5+ff2+QAHCgmBAQsIhCbw5uXq6uo1NTUrGg4D8OXl5S4lIyMjJCVZWllZWSsJMDDv7/LyAFaBgR0ECxEKChQgMjw8PDEbCgoKCgUGAQMCAgECAOTX4Q+CAP2EgAIADAAgAAEAMiAADw4AAgICAQEBAwEBAQMBAQMOC+0QBgoICArt7Ovu8fLsgA323fb2+/j5+ff2BwoJAAAX6uo1NeXlLiUjIyMkJVlaWVlZKwkwMABWgYATCgo3NwoKCgUGAQMCAgECAOTX4Q+EAIACAAwATAABAEwgAAAl/goPCwsL7e3t9wD+/QYQEBAGCggICAkK7ezr6+vu8fLy8u7yAOyBgSD58fL29u3m4OHh4eDm7fb29vv4+Pn5+ff2+QAHCgny8fmEGBcBAwIBAwIDAgEBAQEBAQEBAQEBAQEBAQUXAuo1NRoB5S4lIyMjJCVZWllZWSsJMDBWgBYTChE9PREKCgUGAQMCAgECAOTX4Q8TAACAAgAMAAcAAQAHAAAAgAINAOyBhYACzwBWgYUAgAIADAAHAAEABwAAAIACDQDsgYWAAs8AVoGFAIACAAwABwABAAcAAACAAg0A7IGFgALPAFaBhQCAAgAMAAcAAQAHAAAAgAINAOyBhYAC2gBWgYUAgAIADAAHAAEABwAAAIACDQDsgYWAAtoAVoGFAIACAAwABwABAAcAAACAAg0A7IGFgALaAFaBhQCAAgAMAAcAAQAHAAAAgAIUAOyBhYAC2gBWgYUAgAIADAAHAAEABwAAAIACFADsgYWAAtoAVoGFAIACAAwABwABAAcAAACAAhQA7IGFgALaAFaBhQCAAgAMAAcAAQAHAAAAgAINAOyBhYACzwBWgYUAgAIADAAHAAEABwAAAIACDQDsgYWAAs8AVoGFAIACAAwABwABAAcAAACAAg0A7IGFgALPAFaBhQCAAgAMAAcAAQAHAAAAgAIPAOyBhYACwABWgYUAgAIADAAHAAEABwAAAIACDwDsgYWAAsAAVoGFAIACAAwABwABAAcAAACAAg8A7IGFgALAAFaBhQCAAgAMAAcAAQAHAAAAgAISAP2BhYACoQAagYUAgAIADAAHAAEABwAAAIACEgD9gYWAAqEAGoGFAIACAAwABwABAAcAAACAAhIA/YGFgAKhABqBhQCAAgAMAAcAAQAHAAAAgAITAP2BhYACugAagYUAgAIADAAHAAEABwAAAIACEwD9gYWAAroAGoGFAIACAAwABwABAAcAAACAAhMA/YGFgAK6ABqBhQCAAgAMAAcAAQAHAAAAgAIIAP2BhYAC0AAagYUAgAIADAAHAAEABwAAAIACCAD9gYWAAtAAGoGFAIACAAwABwABAAcAAACAAggA/YGFgALQABqBhQCAAgAMAAcAAQAHAAAAgAINAP2BhYACwQAagYUAgAIADAAHAAEABwAAAIACDQD9gYWAAsEAGoGFAIACAAwABwABAAcAAACAAg0A/YGFgALBABqBhQCAAgAMAAcAAQAHAAAAgAIOAP2BhYACDQAagYUAgAIADAAHAAEABwAAAIACDAD9gYWAAtkAGoGFAIACAAwABwABAAcAAACAAgsA/YGFgALjABqBhQCAAgAMAAcAAQAHAAAAgAINAP2BhYAC3wAagYUAgAIADAAHAAEABwAAAIACDQD9gYWAAt8AGoGFAIACAAwABwABAAcAAACA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)format("truetype")}@font-face{font-display:swap;font-family:JetBrains Mono;font-style:normal;font-weight:400 700;src:url(data:font/woff2;base64,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)format("woff2"),url(data:font/ttf;base64,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AQ8ADAAKAAMAAQQJARAACgAAAFIAbwBtAGEAbgBJAHQAYQBsAGkAYwBKAGUAdABCAHIAYQBpAG4AcwBNAG8AbgBvAFIAbwBtAGEAbgAtAEUAeAB0AHIAYQBCAG8AbABkAEoAZQB0AEIAcgBhAGkAbgBzAE0AbwBuAG8AUgBvAG0AYQBuAC0AQgBvAGwAZABKAGUAdABCAHIAYQBpAG4AcwBNAG8AbgBvAFIAbwBtAGEAbgAtAE0AZQBkAGkAdQBtAEoAZQB0AEIAcgBhAGkAbgBzAE0AbwBuAG8AUgBvAG0AYQBuAC0AUgBlAGcAdQBsAGEAcgBKAGUAdABCAHIAYQBpAG4AcwBNAG8AbgBvAFIAbwBtAGEAbgAtAEwAaQBnAGgAdABKAGUAdABCAHIAYQBpAG4AcwBNAG8AbgBvAFIAbwBtAGEAbgAtAEUAeAB0AHIAYQBMAGkAZwBoAHQASgBlAHQAQgByAGEAaQBuAHMATQBvAG4AbwBSAG8AbQBhAG4ALQBUAGgAaQBuAEUAeAB0AHIAYQBCAG8AbABkAEIAbwBsAGQATQBlAGQAaQB1AG0ATABpAGcAaAB0AEUAeAB0AHIAYQBMAGkAZwBoAHQAVABoAGkAbgBXAGUAaQBnAGgAdABKAGUAdABCAHIAYQBpAG4AcwBNAG8AbgBvAFIAbwBtAGEAbgBoAHQAdABwAHMAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATABUAGgAaQBzACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAGkAcwAgAGwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAUwBJAEwAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUALAAgAFYAZQByAHMAaQBvAG4AIAAxAC4AMQAuACAAVABoAGkAcwAgAGwAaQBjAGUAbgBzAGUAIABpAHMAIABhAHYAYQBpAGwAYQBiAGwAZQAgAHcAaQB0AGgAIABhACAARgBBAFEAIABhAHQAOgAgAGgAdAB0AHAAcwA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAGgAdAB0AHAAcwA6AC8ALwB3AHcAdwAuAGoAZQB0AGIAcgBhAGkAbgBzAC4AYwBvAG0AUABoAGkAbABpAHAAcAAgAE4AdQByAHUAbABsAGkAbgAsACAASwBvAG4AcwB0AGEAbgB0AGkAbgAgAEIAdQBsAGUAbgBrAG8AdgBKAGUAdABCAHIAYQBpAG4AcwBKAGUAdABCAHIAYQBpAG4AcwAgAE0AbwBuAG8AIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABKAGUAdABCAHIAYQBpAG4AcwAgAHMALgByAC4AbwAuAEoAZQB0AEIAcgBhAGkAbgBzAE0AbwBuAG8ALQBSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAyAC4AMgAxADEASgBlAHQAQgByAGEAaQBuAHMAIABNAG8AbgBvACAAUgBlAGcAdQBsAGEAcgAyAC4AMgAxADEAOwBKAEIAOwBKAGUAdABCAHIAYQBpAG4AcwBNAG8AbgBvAC0AUgBlAGcAdQBsAGEAcgBSAGUAZwB1AGwAYQByAEoAZQB0AEIAcgBhAGkAbgBzACAATQBvAG4AbwBDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAyADAAIABUAGgAZQAgAEoAZQB0AEIAcgBhAGkAbgBzACAATQBvAG4AbwAgAFAAcgBvAGoAZQBjAHQAIABBAHUAdABoAG8AcgBzACAAKABoAHQAdABwAHMAOgAvAC8AZwBpAHQAaAB1AGIALgBjAG8AbQAvAEoAZQB0AEIAcgBhAGkAbgBzAC8ASgBlAHQAQgByAGEAaQBuAHMATQBvAG4AbwApAAAAAAAaADsARgBRAFwAagB1AIAAiwCWAKEArAC6AMUA0ADbAOYA8QD8AQgBEwFLAVYBYQGCAY0BwwHyAf0CCAJPAloCZQKIArMCvgLpAwADCwMWAyEDLAM3A0UDUANbA2YDcQN8A4cDkgOdA6gD1gPhA/UEKAQzBD4ESQRUBF8EagSABJ4EqQS+BMkE1ATfBOoE9QUABQsFFgUhBU0FWAV2BYEFmwWmBbUFwAXLBdYF4gX5BigGRwZSBl0GaAaSBp0GzwbaBuUG8Ab7BwkHFAcfByoHNQdAB0sHVgeXB6IHrQe4B8MHzgfZB+QILQhnCHIIfQi9COAJAwk9CWQJbwl6CYUJxAnPCdoKMAo7CkYKdwqtCr4K1grhCwsLFgs0Cz8LSgtV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AQcBCABTAQoAVQEMAFQBCwBWAQ0AVwEOAFoBEQBcARQAWwETARIAXQEVAHMBKwBhARkAcgEqAHgBMAB9ATUAfwE3AH4BNgCBATkAhAE8AIMBOwCCAToAiwFDAIoBQgCJAUEAnwFXAJwBVACPAUcAngFWAJsBUwCdAVUAowFbAKkBYQCqALEBaQCzAWsAsgFqAT8AbAEkAJUBTQAJALwAOwDvAHQBLAA5AO0AGQDMAHYBLgCFAT0AjAFEAK4BZgQyBDAEUQRLBFIEVgRTBE4ENQQ2BDkEPQQ+BDsENAQzBD8EPAQ3BDoEdQR3AegCpgHpAeoB6wHtAe4CDQHvAfACEwIUAhUCCwIQAgwCDwIRAg4CEgHxAXYBnAFyAZQBkwGWAZcBmAGRAZIBmQF8AYYBjQFuAW8BcAFxAXQBdQF3AXgBeQF6AXsBhwGIAYoBiQGLAYwBjwGQAY4BlQGaAZsBnwGgAaEBogGlAaYBqAGpAaoBqwGsAbgBuQG7AboBvAG9AcABwQG/AcYBywHMAacBzQGjAcUBxAHHAcgByQHCAcMBygGtAbcBvgFzAaQBnQHOAZ4BzwClAV0AogFaAKQBXAARAMQAEwDGAAsAvgANAMAADgDBAA8AwgAMAL8ABAC3AAYAuQAHALoACAC7AAUAuAAxAOQAMwDmADYA6QAqAN0ALADfAC0A4AAuAOEAKwDeAEoA/wBIAP0AaQEhAGsBIwBjARsAZQEdAGYBHgBnAR8AZAEcAG0BJQBvAScAcAEoAHEBKQBuASYAkgFKAJQBTACWAU4AmAFQAJkBUQCaAVIAlwFPAKwBZACrAWMArQFlAK8BZwJhAmICXQJfAmACXgPNA88CRQIXA9AC7gLoAuoC7ALwAvEC7wLpAusC7QLZAr0CuwLAAuUCvwLWArgC1wLEAuICtwLYAs4CvgLIArwCzALLAuQC5gLBAsIC4ALhA9MD0gLzA9sD1gPXA9kD2gOGA2ADkwNtA4wDZgONA2cDiQNjA4oDZAOFA1QDTgNfA4QDUgNMA14DkgOtA6cDbAORA6sDpQNqA5YDuQOmA08DtgNVA6wDcAOVA7gDpANNA7UDUwOqA28DgwNyA5gDUQNLA5sDdQNdA5ADcwOZA6kDowOcA3YDaQOUA3QDmgO3A6IDUAO0A3gDngNxA5cDVgOoA50DdwNuA4ADWgOBA1sDQANEA1kDSgM/A1gDSQM+A7ADoQNDA68DoANCA7wDswNHA7sDsgNGA1cDSAM9A64DnwNBA7oDsQNFA3oDeQN7A3wDfwN+A30DhwOOA4sDggNhA2gDZQNcA4gDjwNiA2sC/wMHAwYDBQMEAwMDAgMBAwgDFAMVAxYDAAMpAy0DNQM5AyoDLgM2AzoDMQMzAysDLwM3AzsDLAMwAzgDPAMyAzQDHQMeAxwDFwJUAlYCUwJVAAAAAQAAAAANyAAAABQAAAAAAAAAAAAqBJAAAAAAAAEAAAIAAAMAAAQAAAUAAAYAAAcAAAgAAAkAAAoAAAsAAAwAAA0AAA4AAA8AABAAABEAABIAABMAABQAABUAABYAABcAABgAABkAABoAABsAABwAAB0AAB4AAB8AACAAACEAACIAACMAACQAACUAACYAACcAACgAACkAACoAACsAACwAAC0AAC4AAC8AADAAADEAADIAADMAADQAADUAADYAADcAADgAADkAADoAADsAADwAAD0AAD4AAD8AAEAAAEEAAEIAAEMAAEQAAEUAAEYAAEcAAEgAAEkAAEoAAEsAAEwAAE0AAE4AAE8AAFAAAFEAAFIAAFMAAFQAAFUAAFYAAFcAAFgAAFkAAFoAAFsAAFwAAF0AAF4AAF8AAGAAAGEAAGIAAGMAAGQAAGUAAGYAAGcAAGgAAGkAAGoAAGsAAGwAAG0AAG4AAG8AAHAAAHEAAHIAAHMAAHQAAHUAAHYAAHcAAHgAAHkAAHoAAHsAAHwAAH0AAH4AAH8AAIAAAIEAAIIAAIMAAIQAAIUAAIYAAIcAAIgAAIkAAIoAAIsAAIwAAI0AAI4AAI8AAJAAAJEAAJIAAJMAAJQAAJUAAJYAAJcAAJgAAJkAAJoAAJsAAJwAAJ0AAJ4AAJ8AAKAAAKEAAKIAAKMAAKQAAKUAAKYAAKcAAKgAAKkAAKoAAKsAAKwAAK0AAK4AAK8AALAAALEAALIAALMAALQAALUAALYAALcAALgAALkAALoAALsAALwAAL0AAL4AAL8AAMAAAMEAAMIAAMMAAMQAAMUAAMYAAMcAAMgAAMkAAMoAAMsAAMwAAM0AAM4AAM8AANAAANEAANIAANMAANQAANUAANYAANcAANgAANkAANoAANsAANwAAN0AAN4AAN8AAOAAAOEAAOIAAOMAAOQAAOUAAOYAAOcAAOgAAOkAAOoAAOsAAOwAAO0AAO4AAO8AAPAAAPEAAPIAAPMAAPQAAPUAAPYAAPcAAPgAAPkAAPoAAPsAAPwAAP0AAP4AAP8AAQAAAQEAAQIAAQMAAQQAAQUAAQYAAQcAAQgAAQkAAQoAAQsAAQwAAQ0AAQ4AAQ8AARAAAREAARIAARMAARQAARUAARYAARcAARgAARkAARoAARsAARwAAR0AAR4AAR8AASAAASEAASIAASMAASQAASUAASYAAScAASgAASkAASoAASsAASwAAS0AAS4AAS8AATAAATEAATIAATMAATQAATUAATYAATcAATgAATkAAToAATsAATwAAT0AAT4AAT8AAUAAAUEAAUIAAUMAAUQAAUUAAUYAAUcAAUgAAUkAAUoAAUsAAUwAAU0AAU4AAU8AAVAAAVEAAVIAAVMAAVQAAVUAAVYAAVcAAVgAAVkAAVoAAVsAAVwAAV0AAV4AAV8AAWAAAWEAAWIAAWMAAWQAAWUAAWYAAWcAAWgAAWkAAWoAAWsAAWwAAW0AAW4AAW8AAXAAAXEAAXIAAXMAAXQAAXUAAXYAAXcAAXgAAXkAAXoAAXsAAXwAAX0AAX4AAX8AAYAAAYEAAYIAAYMAAYQAAYUAAYYAAYcAAYgAAYkAAYoAAYsAAYwAAY0AAY4AAY8AAZAAAZEAAZIAAZMAAZQAAZUAAZYAAZcAAZgAAZkAAZoAAZsAAZwAAZ0AAZ4AAZ8AAaAAAaEAAaIAAaMAAaQAAaUAAaYAAacAAagAAakAAaoAAasAAawAAa0AAa4AAa8AAbAAAbEAAbIAAbMAAbQAAbUAAbYAAbcAAbgAAbkAAboAAbsAAbwAAb0AAb4AAb8AAcAAAcEAAcIAAcMAAcQAAcUAAcYAAccAAcgAAckAAcoAAcsAAcwAAc0AAc4AAc8AAdAAAdEAAdIAAdMAAdQAAdUAAdYAAdcAAdgAAdkAAdoAAdsAAdwAAd0AAd4AAd8AAeAAAeEAAeIAAeMAAeQAAeUAAeYAAecAAegAAekAAeoAAesAAewAAe0AAe4AAe8AAfAAAfEAAfIAAfMAAfQAAfUAAfYAAfcAAfgAAfkAAfoAAfsAAfwAAf0AAf4AAf8AAgAAAgEAAgIAAgMAAgQAAgUAAgYAAgcAAggAAgkAAgoAAgsAAgwAAg0AAg4AAg8AAhAAAhEAAhIAAhMAAhQAAhUAAhYAAhcAAhgAAhkAAhoAAhsAAhwAAh0AAh4AAh8AAiAAAiEAAiIAAiMAAiQAAiUAAiYAAicAAigAAikAAioAAisAAiwAAi0AAi4AAi8AAjAAAjEAAjIAAjMAAjQAAjUAAjYAAjcAAjgAAjkAAjoAAjsAAjwAAj0AAj4AAj8AAkAAAkEAAkIAAkMAAkQAAkUAAkYAAkcAAkgAAkkAAkoAAksAAkwAAk0AAk4AAk8AAlAAAlEAAlIAAlMAAlQAAlUAAlYAAlcAAlgAAlkAAloAAlsAAlwAAl0AAl4AAl8AAmAAAmEAAmIAAmMAAmQAAmUAAmYAAmcAAmgAAmkAAmoAAmsAAmwAAm0AAm4AAm8AAnAAAnEAAnIAAnMAAnQAAnUAAnYAAncAAngAAnkAAnoAAnsAAnwAAn0AAn4AAn8AAoAAAoEAAoIAAoMAAoQAAoUAAoYAAocAAogAAokAAooAAosAAowAAo0AAo4AAo8AApAAApEAApIAApMAApQAApUAApYAApcAApgAApkAApoAApsAApwAAp0AAp4AAp8AAqAAAqEAAqIAAqMAAqQAAqUAAqYAAqcAAqgAAqkAAqoAAqsAAqwAAq0AAq4AAq8AArAAArEAArIAArMAArQAArUAArYAArcAArgAArkAAroAArsAArwAAr0AAr4AAr8AAsAAAsEAAsIAAsMAAsQAAsUAAsYAAscAAsgAAskAAsoAAssAAswAAs0AAs4AAs8AAtAAAtEAAtIAAtMAAtQAAtUAAtYAAtcAAtgAAtkAAtoAAtsAAtwAAt0AAt4AAt8AAuAAAuEAAuIAAuMAAuQAAuUAAuYAAucAAugAAukAAuoAAusAAuwAAu0AAu4AAu8AAvAAAvEAAvIAAvMAAvQAAvUAAvYAAvcAAvgAAvkAAvoAAvsAAvwAAv0AAv4AAv8AAwAAAwEAAwIAAwMAAwQAAwUAAwYAAwcAAwgAAwkAAwoAAwsAAwwAAw0AAw4AAw8AAxAAAxEAAxIAAxMAAxQAAxUAAxYAAxcAAxgAAxkAAxoAAxsAAxwAAx0AAx4AAx8AAyAAAyEAAyIAAyMAAyQAAyUAAyYAAycAAygAAykAAyoAAysAAywAAy0AAy4AAy8AAzAAAzEAAzIAAzMAAzQAAzUAAzYAAzcAAzgAAzkAAzoAAzsAAzwAAz0AAz4AAz8AA0AAA0EAA0IAA0MAA0QAA0UAA0YAA0cAA0gAA0kAA0oAA0sAA0wAA00AA04AA08AA1AAA1EAA1IAA1MAA1QAA1UAA1YAA1cAA1gAA1kAA1oAA1sAA1wAA10AA14AA18AA2AAA2EAA2IAA2MAA2QAA2UAA2YAA2cAA2gAA2kAA2oAA2sAA2wAA20AA24AA28AA3AAA3EAA3IAA3MAA3QAA3UAA3YAA3cAA3gAA3kAA3oAA3sAA3wAA30AA34AA38AA4AAA4EAA4IAA4MAA4QAA4UAA4YAA4cAA4gAA4kAA4oAA4sAA4wAA40AA44AA48AA5AAA5EAA5IAA5MAA5QAA5UAA5YAA5cAA5gAA5kAA5oAA5sAA5wAA50AA54AA58AA6AAA6EAA6IAA6MAA6QAA6UAA6YAA6cAA6gAA6kAA6oAA6sAA6wAA60AA64AA68AA7AAA7EAA7IAA7MAA7QAA7UAA7YAA7cAA7gAA7kAA7oAA7sAA7wAA70AA74AA78AA8AAA8EAA8IAA8MAA8QAA8UAA8YAA8cAA8gAA8kAA8oAA8sAA8wAA80AA84AA88AA9AAA9EAA9IAA9MAA9QAA9UAA9YAA9cAA9gAA9kAA9oAA9sAA9wAA90AA94AA98AA+AAA+EAA+IAA+MAA+QAA+UAA+YAA+cAA+gAA+kAA+oAA+sAA+wAA+0AA+4AA+8AA/AAA/EAA/IAA/MAA/QAA/UAA/YAA/cAA/gAA/kAA/oAA/sAA/wAA/0AA/4AA/8ABAAABAEABAIABAMABAQABAUABAYABAcABAgABAkABAoABAsABAwABA0ABA4ABA8ABBAABBEABBIABBMABBQABBUABBYABBcABBgABBkABBoABBsABBwABB0ABB4ABB8ABCAABCEABCIABCMABCQABCUABCYABCcABCgABCkABCoABCsABCwABC0ABC4ABC8ABDAABDEABDIABDMABDQABDUABDYABDcABDgABDkABDoABDsABDwABD0ABD4ABD8ABEAABEEABEIABEMABEQABEUABEYABEcABEgABEkABEoABEsABEwABE0ABE4ABE8ABFAABFEABFIABFMABFQABFUABFYABFcABFgABFkABFoABFsABFwABF0ABF4ABF8ABGAABGEABGIABGMABGQABGUABGYABGcABGgABGkABGoABGsABGwABG0ABG4ABG8ABHAABHEABHIABHMABHQABHUABHYABHcABHgABHkABHoABHsABHwABH0ABH4ABH8ABIAABIEABIIABIMABIQABIUABIYABIcABIgABIkABIoABIsABIwABI0ABI4ABI8AAQAAABIAAQAAAAwEkAAAAAAAAQAAAAAAAQAAAAoAJAAyAAJERkxUAA5sYXRuAA4ABAAAAAD//wABAAAAAW1hcmsACAAAAAEAAAABAAQABAAAAAEACAABDaQLFAADDGIADAGVDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAAAACwIAAAr8CwIAAAr8CwIAAAr8CwIAAAr8CwIAAAr8CwIAAAr8DVAAAAAADVAAAAAADVAAAAAADVAAAAAACvYAAArmCvYAAArmCvYAAArmCvYAAArmCvYAAArmCvYAAArmCvYAAArmCvYAAArmCvYAAArmCvYAAArmCvYAAArmCvYAAArmCvYAAArmCvYAAArmCvYAAArmCvYAAArmCvYAAArmCvYAAArmDVAAAAAACtYAAArGCtYAAArGCtYAAArGCtYAAArGCtYAAArGCtYAAArGCtYAAArGDVAAAAAADVAAAAAADVAAAAAADVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mCsAAAAAACsAAAAAADVAAAA1mDVAAAA1mCrAAAAqqCrAAAAqqCrAAAAqqCrAAAAqqCrAAAAqqCpoAAAqKDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAKhA1mDVAKhA1mDVAKhA1mDVAKhA1mDVAKhA1mDVAKhA1mDVAKhA1mDVAKhA1mDVAKhA1mDVAKhA1mDVAKhA1mDVAKhA1mDVAKhA1mCn4KhA1mCn4KhA1mCn4KhA1mCn4KhA1mCn4KhA1mCn4KhA1mDVAKhA1mDVAKhA1mDVAKhA1mDVAK9g1mDVAK9g1mDVAKhA1mDVAAAAAADVAAAAAADVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAKbg1mDVAKbg1mDVAKbg1mDVAKbg1mDVAKbg1mDVAKbg1mDVAKbg1mDVAKbg1mDVAKbg1mDVAKbg1mDVAKbg1mDVAKbg1mDVAKbg1mDVAKbg1mDVAKbg1mDVAKbg1mDVAKbg1mDVAKbg1mDVAKbg1mDVAAAAAADVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAAAADVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAAAADVAAAAAADVAAAAAADVAAAAAACmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8CmgAAAr8DZIAAAAADZIAAAAAClgAAApOClgAAApOClgAAApOClgAAApOClgAAApOClgAAApODZIAAA1mDZIAAA1mDZIAAA1mDZIAAA1mDZIAAA1mDZIAAA1mDZIAAA1mDZIAAA1mDZIAAA1mDZIAAA1mDZIAAA1mDZIAAA1mDZIAAA1mDZIAAA1mDZIAAA1mDZIAAA1mDZIAAA1mDZIAAA1mCkgAAAAACkgAAAAACkgAAAAACkgAAAAACkgAAAAACkgAAAAACkgAAAAACjgAAAouCjgAAAouCjgAAAouCjgAAAouCjgAAAouCjgAAAouCjgAAAouCjgAAAouCjgAAAouCjgAAAouCjgAAAouCjgAAAouCjgAAAouCh4AAAAACh4AAAAACh4AAAAADZIAAAAACg4AAAqqCg4AAAqqCg4AAAqqCg4AAAqqCgQAAA1mCg4AAAqqCmgAAA1mCmgAAA1mCmgAAA1mCmgAAA1mCmgAAA1mCmgAAA1mDZIJ9A1mDZIJ9A1mDZIJ9A1mDZIJ9A1mDZIJ9A1mDZIJ9A1mDZIJ9A1mDZIJ9A1mDZIJ9A1mDZIJ9A1mDZIJ9A1mDZIJ9A1mDZIJ9A1mCe4J9A1mCe4J9A1mCe4J9A1mCe4J9A1mCe4J9A1mCe4J9A1mDZIJ9A1mDZIJ9A1mDZIJ9A1mDZIJ9A1mDZIJ9A1mDZIJ9A1mCegAAAniCegAAAniCegAAAniCegAAAniCdwAAAnWCdwAAAnWCdwAAAnWCdwAAAnWCdwAAAnWCdwAAAnWAAAAAAnQAAAAAAnQAAAAAAnQAAAAAAnQAAAAAAnQDZIJwA1mDZIJwA1mDZIJwA1mDZIJwA1mDZIJwA1mDZIJwA1mDZIJwA1mDZIJwA1mCbAAAAmgCbAAAAmgCbAAAAmgCbAAAAmgCbAAAAmgCbAAAAmgDZIJwA1mDZIJwA1mDZIJwA1mDZIJwA1mDZIJwA1mDZIAAAAADZIAAAAADZIAAAAADZIAAAAADZIAAAAADZIAAAAADZIAAAAADZIAAAAADZIAAAAADZIAAAAADZIAAAAADZIAAAAADZIAAAAADZIAAAAADZIAAAAADZIAAAAADZIAAAAADZIAAAAADVAAAA1mDVAAAAAACZoAAArmCvYAAArmDVAAAA1mDVAAAA1mDVAAAA1mDVAAAAAADVAKhA1mDVAAAAAACwIAAAr8DVAAAA1mDVAAAAAADVAAAA1mDVAAAA1mDVAAAA1mCsAAAAAADVAAAA1mCmgAAAr8DYwAAAAADYwAAAAADZIAAA1mDZIAAA1mDZIAAAAADZIAAAAADZIJ9A1mCYoAAAmADZIAAAAADZIAAAAACdwAAAnWCjgAAAouCjgAAAouCh4AAAAADVAAAA1mDVAAAAAACvYAAArmDVAAAAAADVAAAAAADVAKhA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAKhA1mDVAAAAAADVAAAA1mDVAAAA1mDVAAAAAADVAAAA1mCvYAAArmDVAAAAAADVAAAA1mDVAKhA1mDVAAAA1mDVAAAA1mDVAAAA1mDVAAAA1mDZIAAA1mCmgAAAAADZIAAAAADZIJ9A1mDZIJwA1mDZIAAAAADZIJwA1mDZIJwA1mDZIJwA1mDZIJ9A1mDZIAAA1mCmgAAAAAClgAAApODVAAAA1mAAMBLgAAABQAAAADAS4CJgAKAAAAAgAFgAAAAQE2AtoAAwErAAAACgAAAAEAAYAAAAMBLAImAAoAAAABAACAAAADAaQCJgAKAAAAAgACgAAAAQFoAAAAAQE2AAAAAQE2AiYAAQCHAAAAAQFAAiYAAQEiAiYAAwFMAiYACgAAAAIAAYAAAAMA5gLaABQAAAADAPoC2gAKAAAAAQAEgAAAAwGBAiYACgAAAAIABoAAAAMBOwAAABQAAAADATsCJgAKAAAAAQADgAAAAQEpAiYAAwEwAAAAFAAAAAMBMAImAAoAAAACAASAAAABATECJgADAYEC2gAKAAAAAAAFgAAAAQEiAtoAAQFAArwAAwFAAAAACgAAAAIAB4AAAAMAoQLaAAoAAAACAAOAAAABAUAAAAADAKEC2gAKAAAAAgAAgAAAAQFoAtoAAwEwAAAACgAAAAAAA4AAAAMBLALaAAoAAAAAAASAAAADAbgAAAAKAAAAAQACgAAAAQFAAtoAAQExAAAAAQExAtoAAgA3AAEAFwAAABoAXAAXAF4AdwBaAHkAeQB0AHsAhQB1AIgAzACAAM4A0wDFANgA6QDLAOwA8gDdAPYBBQDkAQgBDgD0ARABFAD7ARYBLwEAATQBPQEaAUABVwEkAVkBXQE8AV8BawFBAW4BbgFOAXABcAFPAXUBdgFQAXsBfAFSAX4BgAFUAYIBhAFXAYgBiAFaAZMBkwFbAZYBmAFcAZ0BnQFfAZ8BnwFgAaIBowFhAaYBpwFjAawBrQFlAbEBsQFnAbQBtAFoAbYBtwFpAcQBxAFrAccByQFsAdAB0QFvAdQB2QFxAdsB3AF3Ad4B3gF5AeAB4AF6AeIB4wF7AeUB5QF9AegB7QF+Ae8B8gGEAfgB+AGIAfsB+wGJAgACAAGKAgYCBgGLAggCCAGMAg4CEQGNAhMCEwGRAhUCFQGSAq0CrQGTArYCtgGUADcAAAE8AAABPAAAATYAAAEmAAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAABARYAAgEQAAIBEAACARAAAgEQAAIBEAAAAQAAAAD6AAAA9AAAAO4AAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAEA+gACARAAAgEQAAIA3gACARAAAAE8AAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAMBLAAAAAoAAAAAAACAAAABAQ4C2gABAUoC2gABASwC2gADASwC2gAKAAAAAAACgAAAAQEsAAAAA/90AiYACgAAAAMAAIAAAAMBDgImAAoAAAAAAAGAAAABAUoCJgABASwCJgACAAQEMwQ3AAAEOQRHAAUEVwRpABQEeASHACcAAAJYAFoCWAAyAlgAMgJYADICWAAyAlgAMgJYADICWAAyAlgAMgJYADICWAAyAlgAMgJYADICWAAyAlgAMgJYADICWAAyAlgAMgJYADICWAAyAlgAMgJYADICWAAyAlgAMgJYAB4CWAAeAlgAXQJYAFgCWABYAlgAWAJYAFgCWABYAlgAWAJYAFwCWAAKAlgAXAJYAAoCWABkAlgAZAJYAGQCWABkAlgAZAJYAGQCWABkAlgAZAJYAGQCWABkAlgAZAJYAGQCWABkAlgAZAJYAGQCWABkAlgAZAJYAGQCWABfAlgAWAJYAFgCWABYAlgAWAJYAFgCWABYAlgAWAJYAF0CWAAKAlgAXQJYAGkCWABpAlgAaQJYAGkCWABpAlgAaQJYAGkCWABpAlgAaQJYAGkCWABpAlgAaQJYAC0CWAAtAlgAXAJYAFwCWABzAlgAZwJYAHMCWABzAlgAcwJYABQCWABMAlgAWgJYAFoCWABaAlgAWgJYAFoCWABaAlgAWAJYAFgCWABYAlgAWAJYAFgCWABYAlgAWAJYAFgCWABYAlgAWAJYAFgCWABYAlgAWAJYAFgCWABYAlgAWAJYAFgCWABYAlgAWAJYAFgCWABYAlgAWAJYACMCWAAjAlgAWAJYACgCWABcAlgAWgJYAFACWABcAlgAXAJYAFwCWABcAlgASAJYAEgCWABIAlgASAJYAEgCWABIAlgAXAJYAFoCWAA3AlgANwJYADcCWAA3AlgANwJYAFoCWABaAlgAWgJYAFoCWABaAlgAWgJYAFoCWABaAlgAWgJYAFoCWABaAlgAWgJYAFoCWABaAlgAWgJYAFoCWABaAlgAWgJYAFoCWAAyAlgAGQJYABkCWAAZAlgAGQJYABkCWAAoAlgAIwJYACMCWAAjAlgAIwJYACMCWAAjAlgAIwJYACMCWAAjAlgAVQJYAFUCWABVAlgAVQJYAEECWABBAlgAQQJYAEECWABBAlgAQQJYAEECWABBAlgAQQJYAEECWABBAlgAQQJYAEECWABBAlgAQQJYAEECWABBAlgAQQJYAEECWABBAlgAQQJYAEECWABBAlgAIwJYACMCWABcAlgAVQJYAFUCWABVAlgAVQJYAFUCWABVAlgAVQJYAEYCWAA/AlgAWgJYAFUCWABVAlgAVQJYAFUCWABVAlgAVQJYAFUCWABVAlgAVQJYAFUCWABVAlgAVQJYAFUCWABVAlgAVQJYAFUCWABYAlgAVQJYAFoCWAA8AlgAWAJYAFgCWABYAlgAWAJYAFgCWABYAlgAWAJYAFwCWAAAAlj/4QJYAFUCWABVAlgAVQJYAFUCWABVAlgAVQJYAFUCWABVAlgAVQJYAFUCWABVAlgAVQJYAFUCWABVAlgAVQJYAFUCWABfAlgAXwJYAGECWAAeAlgAHgJYAB4CWAAeAlgACgJYAB4CWABCAlgAXAJYAFwCWAAAAlgAXAJYAFwCWABeAlgAXAJYAFUCWABVAlgAVQJYAFUCWABVAlgAVQJYAFUCWABVAlgAVQJYAFUCWABVAlgAVQJYAFUCWABVAlgAVQJYAFUCWABVAlgAVQJYAFUCWABVAlgAVQJYAFgCWAAjAlgAIwJYAFUCWAAjAlgAXAJYAFcCWABYAlgAbwJYAG8CWABvAlgAGQJYAFoCWABaAlgAWgJYAFoCWABaAlgAWgJYAFwCWAClAlgANwJYADcCWAA3AlgANwJYADcCWABaAlgAWgJYAFoCWABaAlgAWgJYAFoCWABaAlgAWgJYAFoCWABaAlgAWgJYAFoCWABaAlgAWgJYAFoCWABaAlgAWgJYAFoCWABaAlgANwJYACMCWAAjAlgAIwJYACMCWAAjAlgAMgJYADcCWAA3AlgANwJYADcCWAA3AlgANwJYADcCWAA3AlgANwJYAFoCWABaAlgAWgJYAFoCWACvAlgAuQJYADICWABeAlgAXQJYAG4CWABuAlgAbgJYABkCWABkAlgAZAJYAAwCWAA1AlgAWgJYAFoCWABcAlgAXAJYABQCWABMAlgAXQJYAFgCWABeAlgAXAJYAFgCWAA3AlgAMgJYADICWAA2AlgAKAJYAEsCWABeAlgAQAJYAEACWABeAlgAXgJY//sCWABBAlj/+wJYADUCWABIAlgAWgJYAFQCWABpAlgAaQJYAC0CWAAAAlgAPAJYADgCWAAAAlgAIwJYAFoCWABBAlgAWgJYAF4CWACCAlgAggJYAIICWAAeAlgAVQJYAFUCWAASAlgAQQJYAF4CWABeAlgAYQJYAGECWAAZAlgATAJYAF4CWABVAlgAXgJYAFwCWABTAlgANwJYADcCWAA3AlgANgJYADICWABOAlgAXgJYAEACWABAAlgAXgJYAGICWAAAAlgAQQJYAAUCWABAAlgAWgJYAFoCWABUAlgAVQJYAFUCWABVAlgAAAJYAD4CWAA8AlgAAAJYADwCWABaAlgAMgJYAF0CWABuAlgAMgJYAGQCWABVAlgAXQJYAFgCWABpAlgAXAJYADICWABMAlgAWgJYAFACWABYAlgAXgJYAFwCWAA3AlgANwJYACMCWAA2AlgAKAJYADYCWAAyAlgACgJY/40CWP+NAlj/jQJY/7ACWP+DAlj/sAJYAGkCWAAjAlgAXAJYAFoCWABcAlgAPAJYAEYCWABQAlgARAJYAFwCWABYAlgANwJYAGECWAAyAlgAXQJYADcCWABCAlgAVQJYABkCWABeAlgAWAJYAFgCWAA3AlgAWgJYADcCWAAoAlgANgJYADcCWAA3AlgANwJYADcCWABaAlgAWgJYAFoCWABVAlgANwJYAFoCWABQAlgAXAJYAF4CWABaAlgAUAJYAFoCWABIAlgARgJYAFACWABVAlgARAJYAFACWABQAlgARAJYAFoCWACRAlgAmwJYAJcCWACIAlgAkgJYAIkCWACRAlgAmwJYAJYCWACSAlgAkQJYAJsCWACXAlgAiAJYAJICWACJAlgAkQJYAJsCWACWAlgAkgJYAFoCWAAeAlgAHgJYABoCWADZAlgApQJYANkCWACqAlgAPAJYAOECWADhAlgAhwJYAG4CWADZAlgAtAJYACMCWAAjAlgA2QJYAEsCWABLAAD/GQAA/3gCWAC5AlgAcwJYAFUCWABVAlgAzQJYAJYCWABuAlgAlgJYAGkCWACTAlgAjAJYAIwCWABQAlgAAAJYAIwCWAA8AlgApQJYAFUCWABLAlgAVQJYAOYCWACgAlgAHgJYAB4CWACTAlgAkwJYAJYCWAD2Alj+NAJY+9wCWPumAlj+XAJY/f0CWPulAlj9/QJY+6UCWP4RAlj+QwJY/rsCWPn8Alj+jgJY/j4CWP7TAlj8jwJY/HACWP6BAlj+XAJY/tECWPzJAlj8RAJY/rMCWPwsAlj+UgJY/oECWP6BAlj+ogJY/sUCWP34Alj7oAJY/pUCWP6VAlj+YQJY/lcCWPubAlj9xQJY/f0CWP3LAlj9ywJY/csCWP3LAlj9ywJY/csCWP3pAlj7kQJY+TkCWP3LAlj9ywJY+3MCWP3zAlj+EQJY+6ACWP4WAlj+PgJY+/oCWPwTAlj8IgJY/eQCWAB9AlgAcwJYANkCWACqAlgAAAJYAAACWAAAAAAAAAJYAF0CWABVAlgAKwJYAEgCWABaAlgAEwJYAAACWAAeAlgASwJYAC0CWAAjAlgA2QJYACgCWAD/AlgAWgJYACMCWABQAlgAUAJYAEECWAAjAlgAIwJYACMCWAAeAlgAQQJYAIwCWABpAlgAZAJYAFUCWABVAlgAVQJYAFUCWABVAlgAVQJYAEECWABBAlgAQQJYAEYCWABQAlgAIwJYADwCWAA8AlgAAAJYACgCWAA3AlgAHgJYAFoCWABaAlgAmwJYAA4CWP/4AlgAoAJYADcCWAAjAlgAHgJYALQCWABBAlgAIwJYACMCWAAeAlgAMgJYAAoCWAAKAlgAKAJYAAoCWAAKAlgALQJYACgCWAAtAlj/sAJYAAoCWAAPAlgACgSwACgEsAAeBLAAKAJY//YCWP/2Alj/9gJY//YCWP/2Alj/9gJY//YCWP/2Alj/9gJY//YCWP/2Alj/9gJY//YCWP/2Alj/9gJY//YCWP/2AlgBLAJYAg0CWP/2AlgBLAJY//YCWP/2Alj/9gJY//YCWP/2AlgBLAJY//YCWP/2AlgAPAJYAAACWAAAAlj/9gJY//YCWP/2Alj/9gJY//YCWP/2Alj/9gJY//YCWAA8AlgAAAJYAAACWACWAlgAlgJYAAACWAAAAlgAAAJYAAACWAAAAlj/9gJYAAACWP/2Alj/9gJY//YCWAAAAlj/9gJY//YCWAAAAlj/9gJYAAACWP/2AlgAlgJYAJYCWACWAlgAjAJYAJYCWACWAlgAlgJYAIwCWP/sAlj/7AJYAJYCWP/sAlj/7AJY/+wCWACWAlgAlgJY/+wCWP/sAlgAlgJY/+wCWP/sAlgAlgJY/+wCWP/sAlj/7AJYAMgCWADIAlj/7AJY/+wCWP/sAlj/7AJYAPoCWADIAlj/7AJY/+wCWP/sAlgA+gJYAEsCWADIAlgAyAJY/+wCWP/sAlgAyAJY/+wCWP/sAlj/7AJYABkCWADIAlgA+gJYACUCWADI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Ab0BvgG/AcAAoQHBAH0AsQBTAO4AVABVAcIBwwHEAFYBxQDlAPwBxgHHAIkByABXAckBygHLAcwAWAB+Ac0AgACBAc4AfwHPAdAB0QHSAdMB1AHVAdYB1wHYAdkB2gBZAFoB2wHcAd0B3gBbAFwA7AHfALoB4AHhAeIB4wHkAF0B5QDnAeYAnQCeAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+Af8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CDwIQAhECEgITAhQCFQIWAhcCGAIZAhoCGwIcAh0CHgIfAiACIQIiAiMCJAIlAiYCJwIoAikCKgIrAiwCLQIuAi8CMAIxAjICMwI0AjUCNgI3AjgCOQI6AjsCPAI9Aj4CPwJAAkECQgJDAkQCRQJGAkcCSAJJAkoCSwJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AJsCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwATABQAFQAWABcAGAAZABoAGwAcApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkALwA9AD1APYAEQAPAB0AHgCrAAQAowAiAKIAwwCHAA0ABgKlABIAPwKmAqcACwAMAF4AYAA+AEACqAKpAqoCqwAQAqwAsgCzAq0AQgDEAMUAtAC1ALYAtwCpAKoAvgC/AAUACgKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7AADAu0C7gLvAvAAhAC9AAcC8QLyAKYC8wCFAvQAlgL1AvYC9wL4AvkC+gL7AvwC/QL+Av8DAAAOAO8A8AC4ACAAjwAhAB8AlQCUAJMApwBhAKQAQQCSAwEDAgCcAJoAmQClAJgDAwMEAAgAxgMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UAuQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78DwAPBA8IDwwPEA8UDxgPHA8gDyQPKA8sDzAPNA84DzwPQA9ED0gPTA9QD1QPWA9cD2APZA9oD2wPcA90D3gPfA+AD4QPiA+MD5APlA+YAIwAJAIgAhgCLAIoAjACDA+cD6ABfAOgAggPpAMID6gPrA+wD7QPuA+8D8APxA/ID8wP0A/UD9gP3A/gD+QP6A/sD/AP9A/4D/wQABAEEAgQDBAQEBQQGBAcECAQJBAoECwQMBA0EDgQPBBAEEQQSBBMEFAQVBBYEFwQYBBkEGgQbBBwEHQQeBB8EIAQhBCIEIwQkBCUEJgQnBCgEKQQqBCsELAQtBC4ELwQwBDEEMgQzBDQENQQ2BDcEOAQ5BDoEOwQ8BD0EPgQ/BEAEQQRCBEMERARFBEYERwRIBEkESgRLBEwETQROBE8EUARRBFIEUwRUBFUEVgRXBFgEWQRaBFsEXARdBF4EXwRgBGEEYgRjAI4A3ABDAI0A3wDYAOEA2wDdANkA2gDeAOAEZARlBGYEZwRoBGkEagRrBGwEbQRuBG8EcARxBHIEcwR0BHUEdgR3BHgEeQR6BHsEfAR9BH4EfwSABIEEggSDBIQEhQSGBIcEiASJBIoEiwSMBI0EjgSPBJAEkQSSBJMElASVBJYElwSYBJkEmgSbBJwGQWJyZXZlB3VuaTFFQUUHdW5pMUVCNgd1bmkxRUIwB3VuaTFFQjIHdW5pMUVCNAd1bmkwMUNEB3VuaTFFQTQHdW5pMUVBQwd1bmkxRUE2B3VuaTFFQTgHdW5pMUVBQQd1bmkxRUEwB3VuaTFFQTIHQW1hY3JvbgdBb2dvbmVrB0FFYWN1dGULQ2NpcmN1bWZsZXgKQ2RvdGFjY2VudAZEY2Fyb24GRGNyb2F0BkVicmV2ZQZFY2Fyb24HdW5pMUVCRQd1bmkxRUM2B3VuaTFFQzAHdW5pMUVDMgd1bmkxRUM0CkVkb3RhY2NlbnQHdW5pMUVCOAd1bmkxRUJBB0VtYWNyb24HRW9nb25lawd1bmkxRUJDB3VuaTAxRjQGR2Nhcm9uC0djaXJjdW1mbGV4B3VuaTAxMjIKR2RvdGFjY2VudARIYmFyC0hjaXJjdW1mbGV4BklicmV2ZQd1bmkxRUNBB3VuaTFFQzgHSW1hY3JvbgdJb2dvbmVrBkl0aWxkZQtKY2lyY3VtZmxleAd1bmkwMTM2BkxhY3V0ZQZMY2Fyb24HdW5pMDEzQgRMZG90Bk5hY3V0ZQZOY2Fyb24HdW5pMDE0NQNFbmcGT2JyZXZlB3VuaTFFRDAHdW5pMUVEOAd1bmkxRUQyB3VuaTFFRDQHdW5pMUVENgd1bmkxRUNDB3VuaTFFQ0UFT2hvcm4HdW5pMUVEQQd1bmkxRUUyB3VuaTFFREMHdW5pMUVERQd1bmkxRUUwDU9odW5nYXJ1bWxhdXQHT21hY3Jvbgd1bmkwMUVBC09zbGFzaGFjdXRlBlJhY3V0ZQZSY2Fyb24HdW5pMDE1NgZTYWN1dGULU2NpcmN1bWZsZXgHdW5pMDIxOAd1bmkxRTlFB3VuaTAxOEYEVGJhcgZUY2Fyb24HdW5pMDE2Mgd1bmkwMjFBBlVicmV2ZQd1bmkxRUU0B3VuaTFFRTYFVWhvcm4HdW5pMUVFOAd1bmkxRUYwB3VuaTFFRUEHdW5pMUVFQwd1bmkxRUVFDVVodW5nYXJ1bWxhdXQHVW1hY3JvbgdVb2dvbmVrBVVyaW5nBlV0aWxkZQZXYWN1dGULV2NpcmN1bWZsZXgJV2RpZXJlc2lzBldncmF2ZQtZY2lyY3VtZmxleAd1bmkxRUY0BllncmF2ZQd1bmkxRUY2B3VuaTAyMzIHdW5pMUVGOAZaYWN1dGUKWmRvdGFjY2VudAZhYnJldmUHdW5pMUVBRgd1bmkxRUI3B3VuaTFFQjEHdW5pMUVCMwd1bmkxRUI1B3VuaTAxQ0UHdW5pMUVBNQd1bmkxRUFEB3VuaTFFQTcHdW5pMUVBOQd1bmkxRUFCB3VuaTFFQTEHdW5pMUVBMwdhbWFjcm9uB2FvZ29uZWsHYWVhY3V0ZQtjY2lyY3VtZmxleApjZG90YWNjZW50BmRjYXJvbgZlYnJldmUGZWNhcm9uB3VuaTFFQkYHdW5pMUVDNwd1bmkxRUMxB3VuaTFFQzMHdW5pMUVDNQplZG90YWNjZW50B3VuaTFFQjkHdW5pMUVCQgdlbWFjcm9uB2VvZ29uZWsHdW5pMUVCRAd1bmkwMjU5B3VuaTAxRjUGZ2Nhcm9uC2djaXJjdW1mbGV4B3VuaTAxMjMKZ2RvdGFjY2VudARoYmFyC2hjaXJjdW1mbGV4BmlicmV2ZQlpLmxvY2xUUksHdW5pMUVDQgd1bmkxRUM5B2ltYWNyb24HaW9nb25lawZpdGlsZGUHdW5pMDIzNwtqY2lyY3VtZmxleAd1bmkwMTM3DGtncmVlbmxhbmRpYwZsYWN1dGUGbGNhcm9uB3VuaTAxM0MEbGRvdAZuYWN1dGULbmFwb3N0cm9waGUGbmNhcm9uB3VuaTAxNDYDZW5nBm9icmV2ZQd1bmkxRUQxB3VuaTFFRDkHdW5pMUVEMwd1bmkxRUQ1B3VuaTFFRDcHdW5pMUVDRAd1bmkxRUNGBW9ob3JuB3VuaTFFREIHdW5pMUVFMwd1bmkxRUREB3VuaTFFREYHdW5pMUVFMQ1vaHVuZ2FydW1sYXV0B29tYWNyb24HdW5pMDFFQgtvc2xhc2hhY3V0ZQZyYWN1dGUGcmNhcm9uB3VuaTAxNTcGc2FjdXRlC3NjaXJjdW1mbGV4B3VuaTAyMTkFbG9uZ3MEdGJhcgZ0Y2Fyb24HdW5pMDE2Mwd1bmkwMjFCBnVicmV2ZQd1bmkxRUU1B3VuaTFFRTcFdWhvcm4HdW5pMUVFOQd1bmkxRUYxB3VuaTFFRUIHdW5pMUVFRAd1bmkxRUVGDXVodW5nYXJ1bWxhdXQHdW1hY3Jvbgd1b2dvbmVrBXVyaW5nBnV0aWxkZQZ3YWN1dGULd2NpcmN1bWZsZXgJd2RpZXJlc2lzBndncmF2ZQt5Y2lyY3VtZmxleAd1bmkxRUY1BnlncmF2ZQd1bmkxRUY3B3VuaTAyMzMHdW5pMUVGOQZ6YWN1dGUKemRvdGFjY2VudAd1bmkwNDEwB3VuaTA0MTEHdW5pMDQxMgd1bmkwNDEzB3VuaTA0MDMHdW5pMDQ5MAd1bmkwNDE0B3VuaTA0MTUHdW5pMDQwMQd1bmkwNDE2B3VuaTA0MTcHdW5pMDQxOAd1bmkwNDE5B3VuaTA0MUEHdW5pMDQwQwd1bmkwNDFCB3VuaTA0MUMHdW5pMDQxRAd1bmkwNDFFB3VuaTA0MUYHdW5pMDQyMAd1bmkwNDIxB3VuaTA0MjIHdW5pMDQyMwd1bmkwNDBFB3VuaTA0MjQHdW5pMDQyNQd1bmkwNDI3B3VuaTA0MjYHdW5pMDQyOAd1bmkwNDI5B3VuaTA0MEYHdW5pMDQyQwd1bmkwNDJBB3VuaTA0MkIHdW5pMDQwOQd1bmkwNDBBB3VuaTA0MDUHdW5pMDQwNAd1bmkwNDJEB3VuaTA0MDYHdW5pMDQwNwd1bmkwNDA4B3VuaTA0MEIHdW5pMDQyRQd1bmkwNDJGB3VuaTA0MDIHdW5pMDRBRQd1bmkwNEU4B3VuaTA0MzAHdW5pMDQzMQd1bmkwNDMyB3VuaTA0MzMHdW5pMDQ1Mwd1bmkwNDkxB3VuaTA0MzQHdW5pMDQzNQd1bmkwNDUxB3VuaTA0MzYHdW5pMDQzNwd1bmkwNDM4B3VuaTA0MzkHdW5pMDQzQQd1bmkwNDVDB3VuaTA0M0IHdW5pMDQzQwd1bmkwNDNEB3VuaTA0M0UHdW5pMDQzRgd1bmkwNDQwB3VuaTA0NDEHdW5pMDQ0Mgd1bmkwNDQzB3VuaTA0NUUHdW5pMDQ0NAd1bmkwNDQ1B3VuaTA0NDcHdW5pMDQ0Ngd1bmkwNDQ4B3VuaTA0NDkHdW5pMDQ1Rgd1bmkwNDRDB3VuaTA0NEEHdW5pMDQ0Qgd1bmkwNDU5B3VuaTA0NUEHdW5pMDQ1NQd1bmkwNDU0B3VuaTA0NEQHdW5pMDQ1Ngd1bmkwNDU3B3VuaTA0NTgHdW5pMDQ1Qgd1bmkwNDRFB3VuaTA0NEYHdW5pMDQ1Mgd1bmkwNEFGB3VuaTA0RTkFQWxwaGEEQmV0YQVHYW1tYQd1bmkwMzk0B0Vwc2lsb24EWmV0YQNFdGEFVGhldGEESW90YQVLYXBwYQZMYW1iZGECTXUCTnUCWGkHT21pY3JvbgJQaQNSaG8FU2lnbWEDVGF1B1Vwc2lsb24DUGhpA0NoaQNQc2kHdW5pMDNBOQpBbHBoYXRvbm9zDEVwc2lsb250b25vcwhFdGF0b25vcwlJb3RhdG9ub3MMT21pY3JvbnRvbm9zDFVwc2lsb250b25vcwpPbWVnYXRvbm9zDElvdGFkaWVyZXNpcw9VcHNpbG9uZGllcmVzaXMHdW5pMDNDRgVhbHBoYQRiZXRhBWdhbW1hBWRlbHRhB2Vwc2lsb24EemV0YQNldGEFdGhldGEEaW90YQVrYXBwYQZsYW1iZGEHdW5pMDNCQwJudQJ4aQdvbWljcm9uA3Jobwd1bmkwM0MyBXNpZ21hA3RhdQd1cHNpbG9uA3BoaQNjaGkDcHNpBW9tZWdhCWlvdGF0b25vcwxpb3RhZGllcmVzaXMRaW90YWRpZXJlc2lzdG9ub3MMdXBzaWxvbnRvbm9zD3Vwc2lsb25kaWVyZXNpcxR1cHNpbG9uZGllcmVzaXN0b25vcwxvbWljcm9udG9ub3MKb21lZ2F0b25vcwphbHBoYXRvbm9zDGVwc2lsb250b25vcwhldGF0b25vcwd1bmkwM0Q3B3VuaTIxMTUJemVyby56ZXJvB3VuaTIwODAHdW5pMjA4MQd1bmkyMDgyB3VuaTIwODMHdW5pMjA4NAd1bmkyMDg1B3VuaTIwODYHdW5pMjA4Nwd1bmkyMDg4B3VuaTIwODkHdW5pMjA3MAd1bmkwMEI5B3VuaTAwQjIHdW5pMDBCMwd1bmkyMDc0B3VuaTIwNzUHdW5pMjA3Ngd1bmkyMDc3B3VuaTIwNzgHdW5pMjA3OQ5vbmVkb3RlbmxlYWRlchtwZXJpb2RjZW50ZXJlZC5sb2NsQ0FULmNhc2UWcGVyaW9kY2VudGVyZWQubG9jbENBVAd1bmkyNzcwB3VuaTI3NkUHdW5pMjc3MQd1bmkyNzZGB3VuaTAwQUQHdW5pMjAxMBJoeXBoZW5faHlwaGVuLmxpZ2EZaHlwaGVuX2h5cGhlbl9oeXBoZW4ubGlnYRpoeXBoZW5faHlwaGVuX2dyZWF0ZXIubGlnYQ9oeXBoZW5fYmFyLmxpZ2ETaHlwaGVuX2dyZWF0ZXIubGlnYRtoeXBoZW5fZ3JlYXRlcl9ncmVhdGVyLmxpZ2EQaHlwaGVuX2xlc3MubGlnYRVoeXBoZW5fbGVzc19sZXNzLmxpZ2EWaHlwaGVuX2FzY2lpdGlsZGUubGlnYRJicmFjZWxlZnRfYmFyLmxpZ2EUYnJhY2tldGxlZnRfYmFyLmxpZ2ElYnJhY2tldGxlZnRfYmFyX2Jhcl9icmFja2V0cmlnaHQubGlnYRVicmFja2V0bGVmdF9sZXNzLmxpZ2EcYnJhY2tldHJpZ2h0X251bWJlcnNpZ24ubGlnYRJwZXJpb2RfcGVyaW9kLmxpZ2EZcGVyaW9kX3BlcmlvZF9wZXJpb2QubGlnYRdwZXJpb2RfcGVyaW9kX2xlc3MubGlnYRRwZXJpb2RfcXVlc3Rpb24ubGlnYRFwZXJpb2RfZXF1YWwubGlnYRBjb2xvbl9jb2xvbi5saWdhFmNvbG9uX2NvbG9uX2NvbG9uLmxpZ2EWY29sb25fY29sb25fZXF1YWwubGlnYRNjb2xvbl9xdWVzdGlvbi5saWdhG2NvbG9uX3F1ZXN0aW9uX2dyZWF0ZXIubGlnYRBjb2xvbl9lcXVhbC5saWdhEmNvbG9uX2dyZWF0ZXIubGlnYQ9jb2xvbl9sZXNzLmxpZ2EYc2VtaWNvbG9uX3NlbWljb2xvbi5saWdhEmV4Y2xhbV9leGNsYW0ubGlnYRFleGNsYW1fZXF1YWwubGlnYRdleGNsYW1fZXF1YWxfZXF1YWwubGlnYRRxdWVzdGlvbl9wZXJpb2QubGlnYRNxdWVzdGlvbl9jb2xvbi5saWdhFnF1ZXN0aW9uX3F1ZXN0aW9uLmxpZ2ETcXVlc3Rpb25fZXF1YWwubGlnYR9hc3Rlcmlza19hc3Rlcmlza19hc3Rlcmlzay5saWdhFWFzdGVyaXNrX2dyZWF0ZXIubGlnYRNhc3Rlcmlza19zbGFzaC5saWdhGW51bWJlcnNpZ25fcGFyZW5sZWZ0LmxpZ2EZbnVtYmVyc2lnbl9icmFjZWxlZnQubGlnYRtudW1iZXJzaWduX2JyYWNrZXRsZWZ0LmxpZ2EVbnVtYmVyc2lnbl9jb2xvbi5saWdhFm51bWJlcnNpZ25fZXhjbGFtLmxpZ2EYbnVtYmVyc2lnbl9xdWVzdGlvbi5saWdhGm51bWJlcnNpZ25fbnVtYmVyc2lnbi5saWdhJW51bWJlcnNpZ25fbnVtYmVyc2lnbl9udW1iZXJzaWduLmxpZ2EwbnVtYmVyc2lnbl9udW1iZXJzaWduX251bWJlcnNpZ25fbnVtYmVyc2lnbi5saWdhFW51bWJlcnNpZ25fZXF1YWwubGlnYRpudW1iZXJzaWduX3VuZGVyc2NvcmUubGlnYSRudW1iZXJzaWduX3VuZGVyc2NvcmVfcGFyZW5sZWZ0LmxpZ2ETc2xhc2hfYXN0ZXJpc2subGlnYRBzbGFzaF9lcXVhbC5saWdhFnNsYXNoX2VxdWFsX2VxdWFsLmxpZ2ESc2xhc2hfZ3JlYXRlci5saWdhEHNsYXNoX3NsYXNoLmxpZ2EWc2xhc2hfc2xhc2hfZXF1YWwubGlnYRZzbGFzaF9zbGFzaF9zbGFzaC5saWdhHnVuZGVyc2NvcmVfYmFyX3VuZGVyc2NvcmUubGlnYRp1bmRlcnNjb3JlX3VuZGVyc2NvcmUubGlnYQd1bmkyN0U4B3VuaTI3RTkJYW5vdGVsZWlhB3VuaTAzN0UHdW5pMDBBMAJDUgd1bmlGRUZGB3VuaTIwQkYEZG9uZwRFdXJvB3VuaTIwQkQHdW5pMjBBRQd1bmkyMjE5B3VuaTIyMTAHdW5pMjIyMwd1bmkyMjE1B2VsZW1lbnQLZXF1aXZhbGVuY2ULZXhpc3RlbnRpYWwHdW5pMjI0OQd1bmkyMjBDCm5vdGVsZW1lbnQJbm90c3Vic2V0B3VuaTIyODUKbG9naWNhbGFuZAlsb2dpY2Fsb3IHdW5pMDBCNQd1bmkyMjI1B3VuaTIwN0EHdW5pMjIzNwxyZWZsZXhzdWJzZXQOcmVmbGV4c3VwZXJzZXQHdW5pMjIxOAdzaW1pbGFyDHByb3BlcnN1YnNldAhzdWNodGhhdA5wcm9wZXJzdXBlcnNldAl1bml2ZXJzYWwHYXJyb3d1cAd1bmkyMTk3CmFycm93cmlnaHQHdW5pMjE5OAlhcnJvd2Rvd24HdW5pMjE5OQlhcnJvd2xlZnQHdW5pMjE5NglhcnJvd2JvdGgJYXJyb3d1cGRuB3VuaTIxRTcHdW5pMjMwNAd1bmkyN0Y1B3VuaTI3RjYHdW5pMjdGNwd1bmkyNTgxB3VuaTI1ODIHdW5pMjU4MwdkbmJsb2NrB3VuaTI1ODUHdW5pMjU4Ngd1bmkyNTg3BWJsb2NrB3VwYmxvY2sHdW5pMjU5NAd1bmkyNThGB3VuaTI1OEUHdW5pMjU4RAdsZmJsb2NrB3VuaTI1OEIHdW5pMjU4QQd1bmkyNTg5B3J0YmxvY2sHdW5pMjU5NQd1bmkyNTk2B3VuaTI1OTcHdW5pMjU5OAd1bmkyNTk5B3VuaTI1OUEHdW5pMjU5Qgd1bmkyNTlDB3VuaTI1OUQHdW5pMjU5RQd1bmkyNTlGB2x0c2hhZGUFc2hhZGUHZGtzaGFkZQd1bmkyNUNGB3VuaTI1RUYHdW5pMjVENAd1bmkyNUQ1B3VuaTI1Q0MHdW5pMjVDRQd1bmkyNUM2B3VuaTI1QzcJZmlsbGVkYm94B3VuaTI1QTEHdW5pMjVBQQd1bmkyNUFCB3VuaTI1RTcHdW5pMjVFOAd1bmkyNUU5B3VuaTI1RUEHdW5pMjVFQgd0cmlhZ3VwB3VuaTI1QjYHdHJpYWdkbgd1bmkyNUMwB3VuaTI1QjMHdW5pMjVCNwd1bmkyNUJEB3VuaTI1QzEHdHJpYWdydAd0cmlhZ2xmB3VuaTI1QkIHdW5pMjVDNQd1bmkyNUI0B3VuaTI1QjgHdW5pMjVCRQd1bmkyNUMyB3VuaTI1QjUHdW5pMjVCOQd1bmkyNUJGB3VuaTI1QzMHdW5pMjU2Ngd1bmkyNTU3B3VuaTI1NTQHdW5pMjU1MAd1bmkyNTY5B3VuaTI1NUQHdW5pMjU1QQd1bmkyNTUxB3VuaTI1NkMHdW5pMjU2Mwd1bmkyNTYwB3VuaTI1NjUHdW5pMjU1Ngd1bmkyNTUzB3VuaTI1MzAHdW5pMjUxMgd1bmkyNTI3B3VuaTI1MEUHdW5pMjUxRgd1bmkyNTQxB3VuaTI1MkYHdW5pMjUxMQd1bmkyNTI5B3VuaTI1MEQHdW5pMjUyMQd1bmkyNTQ3B3VuaTI1NjQHdW5pMjU1NQd1bmkyNTUyB3VuaTI1NEQHdW5pMjU0Rgd1bmkyNTdCB3VuaTI1MzMHdW5pMjUxMwd1bmkyNTBGB3VuaTI1MDEHdW5pMjU3OAd1bmkyNTdFB3VuaTI1MDkHdW5pMjUwQgd1bmkyNTdBB3VuaTI1MDUHdW5pMjUwNwd1bmkyNTc5B3VuaTI1M0IHdW5pMjUxQgd1bmkyNTdGB3VuaTI1MTcHdW5pMjUwMwd1bmkyNTRCB3VuaTI1MkIHdW5pMjUyMwd1bmkyNTQ1B3VuaTI1MkQHdW5pMjUzNQd1bmkyNTNEB3VuaTI1MzIHdW5pMjUzQQd1bmkyNTRBB3VuaTI1NDMHdW5pMjU2RQd1bmkyNTZEB3VuaTI1NkYHdW5pMjU3MAd1bmkyNTczB3VuaTI1NzIHdW5pMjU3MQd1bmkyNTRDB3VuaTI1NEUHdW5pMjU3Nwd1bmkyNTJDB3VuaTI1MTAHdW5pMjUwQwd1bmkyNTAwB3VuaTI1NzQHdW5pMjU3Qwd1bmkyNTA4B3VuaTI1MEEHdW5pMjU3Ngd1bmkyNTA0B3VuaTI1MDYHdW5pMjU3NQd1bmkyNTdEB3VuaTI1MzQHdW5pMjUxOAd1bmkyNTE0B3VuaTI1MDIHdW5pMjUzQwd1bmkyNTI0B3VuaTI1MUMHdW5pMjU0Ngd1bmkyNTJFB3VuaTI1MzYHdW5pMjUzRQd1bmkyNTMxB3VuaTI1MzkHdW5pMjU0OQd1bmkyNTQ0B3VuaTI1NjgHdW5pMjU1Qwd1bmkyNTU5B3VuaTI1NDAHdW5pMjUzOAd1bmkyNTI2B3VuaTI1MUEHdW5pMjUxRQd1bmkyNTE2B3VuaTI1NDgHdW5pMjUzNwd1bmkyNTJBB3VuaTI1MTkHdW5pMjUyMgd1bmkyNTE1B3VuaTI1NjcHdW5pMjU1Qgd1bmkyNTU4B3VuaTI1NkIHdW5pMjU2Mgd1bmkyNTVGB3VuaTI1NDIHdW5pMjUyOAd1bmkyNTIwB3VuaTI1M0YHdW5pMjUyNQd1bmkyNTFEB3VuaTI1NkEHdW5pMjU2MQd1bmkyNTVFB3VuaTIzNzQHdW5pMjZBMAd1bmkyNkExB3VuaTI3MTUGbWludXRlBnNlY29uZAd1bmkyMTEzB3VuaTIxMTYJZXN0aW1hdGVkB3VuaTIzMDMFaG91c2UHdW5pMjMyNQd1bmkyMzE4B3VuaTIzRkIHdW5pMjNGQwd1bmkyQjU4B3VuaTIzRkQHdW5pMjNGRQd1bmkyMzA1B3VuaTAyRjMHdW5pMDJGNxJhdF91bmRlcnNjb3JlLmxpZ2EYYW1wZXJzYW5kX2FtcGVyc2FuZC5saWdhImFtcGVyc2FuZF9hbXBlcnNhbmRfYW1wZXJzYW5kLmxpZ2EUYW1wZXJzYW5kX2VxdWFsLmxpZ2EPYmFyX2h5cGhlbi5saWdhF2Jhcl9oeXBoZW5fZ3JlYXRlci5saWdhE2Jhcl9icmFjZXJpZ2h0LmxpZ2EVYmFyX2JyYWNrZXRyaWdodC5saWdhDGJhcl9iYXIubGlnYRNiYXJfYmFyX2h5cGhlbi5saWdhGGJhcl9iYXJfYmFyX2dyZWF0ZXIubGlnYRJiYXJfYmFyX2VxdWFsLmxpZ2EUYmFyX2Jhcl9ncmVhdGVyLmxpZ2EOYmFyX2VxdWFsLmxpZ2EWYmFyX2VxdWFsX2dyZWF0ZXIubGlnYRBiYXJfZ3JlYXRlci5saWdhE2RvbGxhcl9ncmVhdGVyLmxpZ2EOcGx1c19wbHVzLmxpZ2ETcGx1c19wbHVzX3BsdXMubGlnYRFwbHVzX2dyZWF0ZXIubGlnYRZlcXVhbF9jb2xvbl9lcXVhbC5saWdhF2VxdWFsX2V4Y2xhbV9lcXVhbC5saWdhEGVxdWFsX2VxdWFsLmxpZ2EWZXF1YWxfZXF1YWxfZXF1YWwubGlnYRhlcXVhbF9lcXVhbF9ncmVhdGVyLmxpZ2ESZXF1YWxfZ3JlYXRlci5saWdhGmVxdWFsX2dyZWF0ZXJfZ3JlYXRlci5saWdhFGVxdWFsX2xlc3NfbGVzcy5saWdhFmVxdWFsX3NsYXNoX2VxdWFsLmxpZ2ETZ3JlYXRlcl9oeXBoZW4ubGlnYRtncmVhdGVyX2h5cGhlbl9ncmVhdGVyLmxpZ2EZZ3JlYXRlcl9icmFja2V0cmlnaHQubGlnYRJncmVhdGVyX2NvbG9uLmxpZ2ESZ3JlYXRlcl9lcXVhbC5saWdhGmdyZWF0ZXJfZXF1YWxfZ3JlYXRlci5saWdhFGdyZWF0ZXJfZ3JlYXRlci5saWdhG2dyZWF0ZXJfZ3JlYXRlcl9oeXBoZW4ubGlnYRpncmVhdGVyX2dyZWF0ZXJfZXF1YWwubGlnYRxncmVhdGVyX2dyZWF0ZXJfZ3JlYXRlci5saWdhEGxlc3NfaHlwaGVuLmxpZ2EXbGVzc19oeXBoZW5faHlwaGVuLmxpZ2EUbGVzc19oeXBoZW5fYmFyLmxpZ2EYbGVzc19oeXBoZW5fZ3JlYXRlci5saWdhFWxlc3NfaHlwaGVuX2xlc3MubGlnYQ9sZXNzX2NvbG9uLmxpZ2EebGVzc19leGNsYW1faHlwaGVuX2h5cGhlbi5saWdhEmxlc3NfYXN0ZXJpc2subGlnYRpsZXNzX2FzdGVyaXNrX2dyZWF0ZXIubGlnYQ1sZXNzX2Jhci5saWdhEWxlc3NfYmFyX2Jhci5saWdhFWxlc3NfYmFyX2Jhcl9iYXIubGlnYRVsZXNzX2Jhcl9ncmVhdGVyLmxpZ2EQbGVzc19kb2xsYXIubGlnYRhsZXNzX2RvbGxhcl9ncmVhdGVyLmxpZ2EibGVzc19udW1iZXJzaWduX2h5cGhlbl9oeXBoZW4ubGlnYQ5sZXNzX3BsdXMubGlnYRZsZXNzX3BsdXNfZ3JlYXRlci5saWdhD2xlc3NfZXF1YWwubGlnYRNsZXNzX2VxdWFsX2Jhci5saWdhFWxlc3NfZXF1YWxfZXF1YWwubGlnYR1sZXNzX2VxdWFsX2VxdWFsX2dyZWF0ZXIubGlnYRdsZXNzX2VxdWFsX2dyZWF0ZXIubGlnYRRsZXNzX2VxdWFsX2xlc3MubGlnYRFsZXNzX2dyZWF0ZXIubGlnYQ5sZXNzX2xlc3MubGlnYRVsZXNzX2xlc3NfaHlwaGVuLmxpZ2EUbGVzc19sZXNzX2VxdWFsLmxpZ2ETbGVzc19sZXNzX2xlc3MubGlnYRRsZXNzX2FzY2lpdGlsZGUubGlnYRxsZXNzX2FzY2lpdGlsZGVfZ3JlYXRlci5saWdhH2xlc3NfYXNjaWl0aWxkZV9hc2NpaXRpbGRlLmxpZ2EPbGVzc19zbGFzaC5saWdhF2xlc3Nfc2xhc2hfZ3JlYXRlci5saWdhFmFzY2lpdGlsZGVfaHlwaGVuLmxpZ2ESYXNjaWl0aWxkZV9hdC5saWdhF2FzY2lpdGlsZGVfZ3JlYXRlci5saWdhGmFzY2lpdGlsZGVfYXNjaWl0aWxkZS5saWdhImFzY2lpdGlsZGVfYXNjaWl0aWxkZV9ncmVhdGVyLmxpZ2EWYXNjaWljaXJjdW1fZXF1YWwubGlnYQd1bmkwMzc0B3VuaTAzNzUHdW5pMDJCQwd1bmkwMkJBB3VuaTAyQzkHdW5pMDJCOQd1bmkwMzA4B3VuaTAzMDcJZ3JhdmVjb21iCWFjdXRlY29tYgd1bmkwMzBCC3VuaTAzMEMuYWx0B3VuaTAzMDIHdW5pMDMwQwd1bmkwMzA2B3VuaTAzMEEJdGlsZGVjb21iB3VuaTAzMDQNaG9va2Fib3ZlY29tYgd1bmkwMzBGB3VuaTAzMTIHdW5pMDMxQgxkb3RiZWxvd2NvbWIHdW5pMDMyNQd1bmkwMzI2B3VuaTAzMjcHdW5pMDMyOAd1bmkwMzM2B3VuaTAzMzgMdW5pMDMwOC5jYXNlDHVuaTAzMDcuY2FzZQ5ncmF2ZWNvbWIuY2FzZQ5hY3V0ZWNvbWIuY2FzZQx1bmkwMzBCLmNhc2UMdW5pMDMwMi5jYXNlDHVuaTAzMEMuY2FzZQx1bmkwMzA2LmNhc2UMdW5pMDMwQS5jYXNlDnRpbGRlY29tYi5jYXNlDHVuaTAzMDQuY2FzZRJob29rYWJvdmVjb21iLmNhc2UMdW5pMDMwRi5jYXNlDHVuaTAzMTIuY2FzZQx1bmkwMzFCLmNhc2URZG90YmVsb3djb21iLmNhc2UMdW5pMDMyNi5jYXNlDHVuaTAzMjcuY2FzZQx1bmkwMzI4LmNhc2UNZGllcmVzaXMuY2FzZQ5kb3RhY2NlbnQuY2FzZQpncmF2ZS5jYXNlCmFjdXRlLmNhc2URaHVuZ2FydW1sYXV0LmNhc2UPY2lyY3VtZmxleC5jYXNlCmNhcm9uLmNhc2UKYnJldmUuY2FzZQlyaW5nLmNhc2UKdGlsZGUuY2FzZQttYWNyb24uY2FzZQV0b25vcwp0b25vcy5jYXNlDWRpZXJlc2lzdG9ub3MLdW5pMDMwNjAzMDELdW5pMDMwNjAzMDALdW5pMDMwNjAzMDkLdW5pMDMwNjAzMDMLdW5pMDMwMjAzMDELdW5pMDMwMjAzMDALdW5pMDMwMjAzMDkLdW5pMDMwMjAzMDMQdW5pMDMwNjAzMDEuY2FzZRB1bmkwMzA2MDMwMC5jYXNlEHVuaTAzMDYwMzA5LmNhc2UQdW5pMDMwNjAzMDMuY2FzZRB1bmkwMzAyMDMwMS5jYXNlEHVuaTAzMDIwMzAwLmNhc2UQdW5pMDMwMjAzMDkuY2FzZRB1bmkwMzAyMDMwMy5jYXNlB3VuaUUwQTAHdW5pRTBBMQd1bmlFMEEyB3VuaUUwQjAHdW5pRTBCMQd1bmlFMEIyB3VuaUUwQjMDU1BDAAABAAAACgDYAqIAAkRGTFQAsGxhdG4ADgCIAAhBWkUgAKZDQVQgAGxDUlQgAKZLQVogAKZNT0wgAFBST00gAKZUQVQgAKZUUksgADQAAP//AAsAAAABAAIAAwAFAAgACQAKAAsADAANAAD//wALAAAAAQACAAMABQAHAAkACgALAAwADQAA//8ACwAA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AAEw5gAAAAEAAAABAAgAAgAKAAIEFQSPAAEAAgLDAsoABgAAAAQAQgAyACAADgADAAAAATs8AAE7FgABAAABQwADAAE+wgABOwQAAAABAAABQwADAAAAATsYAAI68jryAAAAAwABOwgAATsIAAE64gAAAAEAAAABAAgAAgAMAAMEjwQWBI8AAQADAsMCyQLKAAYAAAAFAF4ATAA4ACQAEAADAAAAATrKAAI6pDA8AAEAAAFBAAMAAT5OAAE6kAABMCgAAQAAAUEAAwACPjo+OgABMBQAAAABAAABQQADAAAAATqOAAM6aDAAMAAAAAADAAE6fAABOnwAAjpWL+4AAAABAAAAAQAIAAIACgACBI8D7gABAAICrwLJAAYAAAAEAEIAMgAgAA4AAwAAAAE58AABL7QAAQAAAT8AAwABPcgAAS+iAAAAAQAAAT8AAwAAAAE5zAACL5AvkAAAAAMAATm8AAE5vAABL4AAAAABAAAAAQAIAAIACgACBBIEjwABAAICrwLKAAYAAAAEAEIAMgAgAA4AAwAAAAE51gABOYQAAQAAAT0AAwABPVwAATlyAAAAAQAAAT0AAwAAAAE5sgACOWA5YAAAAAMAATmiAAE5ogABOVAAAAABAAAAAQAIAAIADAADBI8EEwSPAAEAAwKvAskCygAGAAAABQBeAEwAOAAkABAAAwAAAAE5ZAACORIu1gABAAABOwADAAE86AABOP4AAS7CAAEAAAE7AAMAAjzUPNQAAS6uAAAAAQAAATsAAwAAAAE5KAADONYumi6aAAAAAwABORYAATkWAAI4xC6IAAAAAQAAAAEACAACAAoAAgQsBI8AAQACAscC0QAGAAAABABCADIAIAAOAAMAAAABAEQAATcSAAEAAAE5AAMAATxiAAE3AAAAAAEAAAE5AAMAAAABACAAAjbuNu4AAAADAAEAEAABABAAATbeAAAAAQABAtEAAQAAAAEACAACAAoAAgSPBCgAAQACAs8DwQAGAAAABABCADIAIAAOAAMAAAABCAwAATwuAAEAAAE3AAMAATvwAAE8HAAAAAEAAAE3AAMAAAABB+gAAjwKPAoAAAADAAEH2AABB9gAATv6AAAAAQAAAAEACAACAVwAAgQnBI8ABgAAAAQAQgAyACAADgADAAAAAQeoAAEu+gABAAABNQADAAE7jAABLugAAAABAAABNQADAAAAAQeEAAIu1i7WAAAAAwABB3QAAQd0AAEuxgAAAAEAAAABAAgAAgBuAAIEKQSPAAYAAAAEAEIAMgAgAA4AAwAAAAEHRAABLRQAAQAAATMAAwABOygAAS0CAAAAAQAAATMAAwAAAAEHIAACLPAs8AAAAAMAAQcQAAEHEAABLOAAAAABAAAAAQAIAAIACgACBCsEjwABAAICyQLPAAYAAAAFAF4ATAA4ACQAEAADAAAAAQbWAAIG1iymAAEAAAExAAMAATq4AAEGwgABLJIAAQAAATAAAwACOqQ6pAABLH4AAAABAAABMAADAAAAAQaaAAMGmixqLGoAAAADAAEGiAABBogAAgaILFgAAAABAAAAAQAIAAIACgACBI8CcQABAAICVwLPAAYAAAAFAFQARAA0ACIAEAADAAAAAS2eAAEGTAABAAABLgADAAE6MAABBjoAAAABAAABLgADAAAAAS16AAIGKCv4AAAAAwAAAAEtagACBhgGGAAAAAMAAS1aAAEtWgABBggAAAABAAAAAQAIAAIFhAACBI8EJAAGAAAABgByAGAATgA6ACYAEgADAAAAATYyAAIF1AXUAAEAAAErAAMAATm2AAEFwAABBcAAAQAAASwAAwACOaI5ogABBawAAAABAAABKwADAAAAATX2AAMFmAWYK2gAAAADAAAAATXkAAMFhgWGBYYAAAADAAE10gABNdIAAgV0BXQAAAABAAAAAQAIAAIADAADBI8D4wSPAAEAAwJXAskDywAGAAAABQBeAEwAOAAkABAAAwAAAAE3QAACLIYrBAABAAABKQADAAE5FgABLHIAASrwAAEAAAEpAAMAAjkCOQIAASrcAAAAAQAAASkAAwAAAAE3BAADLEoqyCrIAAAAAwABNvIAATbyAAIsOCq2AAAAAQAAAAEACAACAAwAAwSPA+wEjwABAAMCxwLJA8sABgAAAAUAXgBMADgAJAAQAAMAAAABNrIAAjM6KnYAAQAAAScAAwABOIgAATMmAAEqYgABAAABJwADAAI4dDh0AAEqTgAAAAEAAAEnAAMAAAABNnYAAzL+KjoqOgAAAAMAATZkAAE2ZAACMuwqKAAAAAEAAAABAAgAAgAMAAMEjwSPBBgAAQADAscCygPLAAYAAAAFAF4ATAA4ACQAEAADAAAAATR2AAIyrDYkAAEAAAElAAMAATf6AAEymAABNhAAAQAAASUAAwACN+Y35gABNfwAAAABAAABJQADAAAAATQ6AAMycDXoNegAAAADAAE0KAABNCgAAjJeNdYAAAABAAAAAQAIAAIADAADBI8EjwQHAAEAAwJXAsoDywAGAAAABQBeAEwAOAAkABAAAwAAAAEz6AACKtw1lgABAAABIwADAAE3bAABKsgAATWCAAEAAAEjAAMAAjdYN1gAATVuAAAAAQAAASMAAwAAAAEzrAADKqA1WjVaAAAAAwABM5oAATOaAAIqjjVIAAAAAQAAAAEACAACHNAAAgSPA/kABgAAAAUAXgBMADgAJAAQAAMAAAABMZwAAjNmM2YAAQAAASAAAwABNuoAATNSAAEzUgABAAABIQADAAI21jbWAAEzPgAAAAEAAAEgAAMAAAABMWAAAzMqMyozKgAAAAMAATFOAAExTgACMxgzGAAAAAEAAAABAAgAAii8AAIEjwJwAAYAAAAFAF4ATAA4ACQAEAADAAAAASnYAAIy5DLkAAEAAAEdAAMAATZoAAEy0AABMtAAAQAAAR4AAwACNlQ2VAABMrwAAAABAAABHQADAAAAASmcAAMyqDKoMqgAAAADAAEpigABKYoAAjKWMpYAAAABAAAAAQAIAAIoOgACBI8CbwAGAAAABgBmAFYARgA2ACQAEgADAAAAASlUAAEyYAABAAABGwADAAE15gABMk4AAAABAAABGwADAAAAASkwAAIyPDI8AAAAAwABJ54AASkgAAEyLAAAAAMAATIcAAEpEAABMhwAAAADAAEpAAABKQAAATIMAAAAAQAAAAEACAACAAwAAwQjBI8EjwABAAMCyQLKAs8ABgAAAAUAXgBMADgAJAAQAAMAAAABMc4AAgFwJ0AAAQAAARkAAwABNVIAAQFcAAEnLAABAAABGQADAAI1PjU+AAEnGAAAAAEAAAEZAAMAAAABMZIAAwE0JwQnBAAAAAMAATGAAAExgAACASIm8gAAAAEAAAABAAgAAQEIAcAAAQAAAAEACAABAPoBWwAGAAAABgBmAFYARgA2ACQAEgADAAAAAQDiAAEA4gABAAABFwADAAE0xgABANAAAAABAAABFgADAAAAAQC+AAIAviaOAAAAAwAAAAEArgACAK4ArgAAAAMAATD8AAEAngABAJ4AAAADAAEAjgABAI4AAQCOAAAAAQAAAAEACAACAAoAAgSPBCIAAQACAsoCzwAGAAAABQBUAEQANAAiABAAAwAAAAEwsgABAFQAAQAAARQAAwABNDgAAQBCAAAAAQAAARQAAwAAAAEwjgACADAmAAAAAAMAAAABMH4AAgAgACAAAAADAAEwbgABMG4AAQAQAAAAAQABAs8AAQAAAAEACAACHlYAAgSPA/wABgAAAAUAXgBMADgAJAAQAAMAAAABJagAAicqJagAAQAAARIAAwABM7oAAScWAAEllAABAAABEQADAAIzpjOmAAElgAAAAAEAAAERAAMAAAABJWwAAybuJWwlbAAAAAMAASVaAAElWgACJtwlWgAAAAEAAAABAAgAAh3UAAID+wSPAAYAAAAGAGYAVgBGADYAJAASAAMAAAABJSQAASamAAEAAAEPAAMAATM4AAEmlAAAAAEAAAEPAAMAAAABJQAAAiaCL44AAAADAAAAASTwAAImciTwAAAAAwAAAAEk4AACJmImYgAAAAMAASTQAAEk0AABJlIAAAABAAAAAQAIAAIdTAACBAIEjwAGAAAABQBeAEwAOAAkABAAAwAAAAEkngACJJ4mIAABAAABDQADAAEysAABJIoAASYMAAEAAAEMAAMAAjKcMpwAASX4AAAAAQAAAQwAAwAAAAEkYgADJGIl5CXkAAAAAwABJFAAASRQAAIkUCXSAAAAAQAAAAEACAACGcQAAgQDBI8ABgAAAAUAXgBMADgAJAAQAAMAAAABJBwAAiQcLOAAAQAAAQoAAwABMi4AASQIAAEszAABAAABCQADAAIyGjIaAAEsuAAAAAEAAAEJAAMAAAABI+AAAyPgLKQspAAAAAMAASPOAAEjzgACI84skgAAAAEAAAABAAgAAhlCAAIEjwQAAAYAAAAFAF4ATAA4ACQAEAADAAAAASOaAAIsXiOaAAEAAAEHAAMAATGsAAEsSgABI4YAAQAAAQYAAwACMZgxmAABI3IAAAABAAABBgADAAAAASNeAAMsIiNeI14AAAADAAEjTAABI0wAAiwQI0wAAAABAAAAAQAIAAIYwAACBI8D+AAGAAAABQBeAEwAOAAkABAAAwAAAAEr3AACIxgjGAABAAABAwADAAExKgABIwQAASMEAAEAAAEEAAMAAjEWMRYAASLwAAAAAQAAAQMAAwAAAAEroAADItwi3CLc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AAAA2gADAAIp5inmAAEdQgAAAAEAAADZAAMAAAABHS4AAx0uHS4dLgAAAAMAAR0cAAEdHAACHRwdHAAAAAMAASdOAAEdCgADHQodChuIAAAAAQAAAAEACAABHO4AEgAGAAAABRPIAEQANAAiABAAAwAAAAEc2AABHNgAAQAAANcAAwABKWoAARzGAAAAAQAAANYAAwAAAAEctAACHLQctAAAAAMAARykAAEcpAABHKQAAAABAAAAAQAIAAEnRgAbAAYAAAAGAGYAVgBGADYAJAASAAMAAAABJy4AAScuAAEAAADUAAMAASkGAAEnHAAAAAEAAADTAAMAAAABJwoAAicKJwQAAAADAAEmhAABJvoAASb6AAAAAwAAAAEm6gACJuom6gAAAAMAASbaAAEm2gABJtoAAAABAAAAAQAIAAIA9gACA+sEjwAGAAAABQBUAEQANAAiABAAAwAAAAEmqAABIzAAAQAAANEAAwABKIAAASMeAAAAAQAAANEAAwAAAAEmhAACIwwjDAAAAAMAAAABJnQAAiL8GjgAAAADAAEmZAABJmQAASLsAAAAAQAAAAEACAACEy4AAgPiBI8ABgAAAAUAVABEADQAIgAQAAMAAAABJjIAARt4AAEAAADPAAMAASgKAAEbZgAAAAEAAADPAAMAAAABJg4AAhtUGdIAAAADAAAAASX+AAIbRBtEAAAAAwABJe4AASXuAAEbNAAAAAEAAAABAAgAAgAKAAID6QSPAAEAAgLHA8sABgAAAAUAXgBMADgAJAAQAAMAAAABJbQAAiW0IjwAAQAAAM0AAwABJ4oAASWgAAEiKAABAAAAzAADAAIndid2AAEiFAAAAAEAAADMAAMAAAABJXgAAyV4JXgiAAAAAAMAASVmAAElZgADJWYh7iHuAAAAAQAAAAEACAACEiwAAgPnBI8ABgAAAAUAXgBMADgAJAAQAAMAAAABJTAAAiUwGnYAAQAAAMoAAwABJwYAASUcAAEaYgABAAAAyQADAAIm8ibyAAEaTgAAAAEAAADJAAMAAAABJPQAAyT0JPQaOgAAAAMAASTiAAEk4gADJOIaKBooAAAAAQAAAAEACAACAQQAAgPtBI8ABgAAAAQAQgAyACAADgADAAAAASSuAAEYcgABAAAAxwADAAEmhgABGGAAAAABAAAAxwADAAAAASSKAAIYThhOAAAAAwABJHoAASR6AAEYPgAAAAEAAAABAAgAAgCgAAID6gSPAAYAAAAGAHIAYABOADoAJgASAAMAAAABJEYAAiRGGAoAAQAAAMUAAwABJhwAASQyAAEX9gABAAAAxAADAAImCCYIAAEX4gAAAAEAAADEAAMAAAABJAoAAyQKF84XzgAAAAMAASJKAAEj+AACI/gXvAAAAAMAASPmAAEj5gACI+YXqgAAAAEAAAABAAgAAgAKAAID6ASPAAEAAgLJA8sABgAAAAYAfgBqAFQAPgAoABIAAwAAAAEjqAADI6gjqBdsAAEAAADCAAMAASV8AAEjkgACI5IXVgABAAAAwQADAAIlZiVmAAEjfAABF0AAAQAAAMAAAwADJVAlUCVQAAEXKgAAAAEAAADAAAMAAAABI1AABCNQI1AXFBcUAAAAAwABIzwAASM8AAMjPCM8FwAAAAABAAAAAQAIAAIESAACBI8CfgAGAAAABQBeAEwAOAAkABAAAwAAAAEUmAACFJgfjgABAAAAvgADAAEk3AABFIQAAR96AAEAAAC9AAMAAiTIJMgAAR9mAAAAAQAAAL0AAwAAAAEUXAADFFwfUh9SAAAAAwABFEoAARRKAAIUSh9AAAAAAQAAAAEACAACAAwAAwSPBI8CgAABAAMCPQJCAskABgAAAAUAXgBMADgAJAAQAAMAAAABFAoAAhm+FjwAAQAAALsAAwABJE4AARmqAAEWKAABAAAAuwADAAIkOiQ6AAEWFAAAAAEAAAC7AAMAAAABE84AAxmCFgAWAAAAAAMAARO8AAETvAACGXAV7gAAAAEAAAABAAgAAgAKAAIEjwJ/AAEAAgI9AkIABgAAAAUAVABEADQAIgAQAAMAAAABE4AAARk0AAEAAAC5AAMAASPGAAEZIgAAAAEAAAC5AAMAAAABE1wAAhkQFY4AAAADAAAAARNMAAIZABkAAAAAAwABEzwAARM8AAEY8AAAAAEAAAABAAgAARMkAEAABgAAAAUAXgBMADgAJAAQAAMAAAABEw4AAhMOEw4AAQAAALcAAwABI1IAARL6AAES+gABAAAAtgADAAIjPiM+AAES5gAAAAEAAAC1AAMAAAABEtIAAxLSEtIS0gAAAAMAARLAAAESwAACEsASwAAAAAEAAAABAAgAAQBmAlEAAQAAAAEACAABAFgARgAGAAAABABCADIAIAAOAAMAAAABAEQAAQBEAAEAAACzAAMAASLKAAEAMgAAAAEAAACyAAMAAAABACAAAgAgACAAAAADAAEAEAABABAAAQAQAAAAAQABAj4AAQAAAAEACAABEjICUgABAAAAAQAIAAESJAA/AAYAAAAFAFQARAA0ACIAEAADAAAAARIOAAESDgABAAAAsAADAAEiVAABEfwAAAABAAAArwADAAAAARHqAAIR6hzgAAAAAwAAAAER2gACEdoR2gAAAAMAARHKAAERygABEcoAAAABAAAAAQAIAAIRWAACBI8CgwAGAAAABABCADIAIAAOAAMAAAABEZoAAR5aAAEAAACtAAMAASHgAAEeSAAAAAEAAACtAAMAAAABEXYAAh42HjYAAAADAAERZgABEWYAAR4mAAAAAQAAAAEACAACCKIAAgSPAoIABgAAAAQAQgAyACAADgADAAAAARE2AAETaAABAAAAqwADAAEhfAABE1YAAAABAAAAqwADAAAAARESAAITRBNEAAAAAwABEQIAARECAAETNAAAAAEAAAABAAgAAgCAAAIEjwKBAAYAAAAFAFQARAA0ACIAEAADAAAAARDQAAEbxgABAAAAqQADAAEhFgABG7QAAAABAAAAqQADAAAAARCsAAIbohuiAAAAAwABEJwAARCcAAEbkgAAAAMAARuCAAEQjAABG4IAAAABAAAAAQAIAAIACgACBI8D8gABAAICPQLHAAYAAAAFAF4ATAA4ACQAEAADAAAAARtIAAIQUhtIAAEAAACnAAMAASCWAAEQPgABGzQAAQAAAKYAAwACIIIgggABGyAAAAABAAAApgADAAAAARsMAAMQFhsMGwwAAAADAAEa+gABGvoAAhAEGvoAAAABAAAAAQAIAAEa4AEuAAYAAAAHAIYAdABiAFAAPAAoABQAAwAAAAEaxgACGsYaxgABAAAApAADAAEgFAABGrIAARqyAAEAAACjAAMAAiAAIAAAARqeAAAAAQAAAKIAAwAAAAEaigADGooaihHGAAAAAwAAAAEaeAADGngaeBp4AAAAAwABHDAAARpmAAIaZhpmAAAAAwABGlQAARpUAAIaVBpUAAAAAQAAAAEACAABGjoBLQAGAAAABQBUAEQANAAiABAAAwAAAAEaJAABGiQAAQAAAKAAAwABH3QAARoSAAAAAQAAAJ8AAwAAAAEaAAACGgARPAAAAAMAAAABGfAAAhnwGfAAAAADAAEZ4AABGeAAARngAAAAAQAAAAEACAACBpIAAgSPA/cABgAAAAgAigB6AGoAWgBKADoAKAAWAAMAAAABGagAARDkAAEAAACdAAMAAR74AAEQ0gAAAAEAAACdAAMAAAABGYQAAhDAEMAAAAADAAAAARl0AAIQsBl0AAAAAwABHNwAARlkAAEQoAAAAAMAARCQAAEZVAABEJAAAAADAAEZRAABGUQAARCAAAAAAwABHDYAARk0AAEQcAAAAAEAAAABAAgAAgF8AAIEjwPzAAYAAAAFAF4ATAA4ACQAEAADAAAAARkCAAIRxhkCAAEAAACbAAMAAR5QAAERsgABGO4AAQAAAJoAAwACHjwePAABGNoAAAABAAAAmgADAAAAARjGAAMRihjGGMYAAAADAAEYtAABGLQAAhF4GLQAAAABAAAAAQAIAAIA+gACBI8ChwAGAAAABQBeAEwAOAAkABAAAwAAAAERRAACGIAYgAABAAAAlwADAAEdzgABGGwAARhsAAEAAACYAAMAAh26HboAARhYAAAAAQAAAJcAAwAAAAERCAADGEQYRBhEAAAAAwABEPYAARD2AAIYMhgyAAAAAQAAAAEACAABENwCTwABAAAAAQAIAAEQzgBFAAYAAAAEAEIAMgAgAA4AAwAAAAEQugABELoAAQAAAJUAAwABHUYAARCoAAAAAQAAAJQAAwAAAAEQlgACEJYQlgAAAAMAARCGAAEQhgABEIYAAAABAAAAAQAIAAIACgACBI8ChgABAAICQALHAAYAAAAFAFQARAA0ACIAEAADAAAAARBMAAEXiAABAAAAkgADAAEc2AABF3YAAAABAAAAkgADAAAAARAoAAIXZBdkAAAAAwABF1QAARAYAAEXVAAAAAMAARAIAAEQCAABF0QAAAABAAAAAQAIAAEctAIzAAEAAAABAAgAAgAKAAICogSPAAEAAgJcA8sABgAAAAUAXgBMADgAJAAQAAMAAAABHIQAAhp0HIQAAQAAAJAAAwABHEoAARpgAAEccAABAAAAjwADAAIcNhw2AAEcXAAAAAEAAACPAAMAAAABHEgAAxo4HEgcSAAAAAMAARw2AAEcNgACGiYcNgAAAAEAAAABAAgAAgAMAAMEEQSPBI8AAQADAskCygPLAAYAAAAFAF4ATAA4ACQAEAADAAAAARg4AAIZ5g2qAAEAAACNAAMAARu8AAEZ0gABDZYAAQAAAI0AAwACG6gbqAABDYIAAAABAAAAjQADAAAAARf8AAMZqg1uDW4AAAADAAEX6gABF+oAAhmYDVwAAAABAAAAAQAIAAIBIAACBBkEjwAGAAAABgByAGAATgA6ACYAEgADAAAAARe0AAIV6hXqAAEAAACKAAMAARs4AAEV1gABFdYAAQAAAIsAAwACGyQbJAABFcIAAAABAAAAigADAAAAARd4AAMVrhWuDOoAAAADAAAAARdmAAMVnBWcFZwAAAADAAEXVAABF1QAAhWKFYoAAAABAAAAAQAIAAIAigACBCAEjwAGAAAABQBcAEoAOAAkABAAAwAAAAEXIAACFyAVVgABAAAAiAADAAEapAABFwwAARVCAAEAAACHAAMAARqQAAEVLgAAAAEAAACHAAMAARbmAAEW5gACFuYVHAAAAAMAAAABFtQAAxbUFQoVCgAAAAEAAAABAAgAAgAKAAIEFwSPAAEAAgLHAsoABgAAAAYAZgBWAEYANgAkABIAAwAAAAEWlgABFMwAAQAAAIUAAwABGhwAARS6AAAAAQAAAIUAAwAAAAEWcgACFKgWcgAAAAMAAAABFmIAAhSYFJgAAAADAAEWUgABFlIAARSIAAAAAwAAAAEWQgACFHgX8AAAAAEAAAABAAgAAgAKAAID/QSPAAEAAgJSAskABgAAAAgAigB6AGoAWgBKADoAKAAWAAMAAAABC3QAAReqAAEAAACDAAMAARmIAAEXmAAAAAEAAACDAAMAAAABC1AAAheGF4YAAAADAAEVZgABC0AAARd2AAAAAwABFWwAAQswAAEXZgAAAAMAARVyAAELIAABF1YAAAADAAEVeAABCxAAARdGAAAAAwABCwAAAQsAAAEXNgAAAAEAAAABAAgAAgAKAAID/gSPAAEAAgI9AskABgAAAAQAQgAyACAADgADAAAAAQrIAAEIlgABAAAAgQADAAEY3AABCIQAAAABAAAAgQADAAAAAQqkAAIIcghyAAAAAwABCpQAAQqUAAEIYgAAAAEAAAABAAgAAgAKAAID/wSPAAEAAgLHAskABgAAAAYAZgBWAEYANgAkABIAAwAAAAEKWAABExwAAQAAAH8AAwABGGwAARMKAAAAAQAAAH8AAwAAAAEKNAACEvgUwgAAAAMAAAABCiQAAhLoCiQAAAADAAAAAQoUAAIS2BLYAAAAAwABCgQAAQoEAAESyAAAAAEAAAABAAgAAQnsATsABgAAAAUAXgBMADgAJAAQAAMAAAABCdYAAgnWCdYAAQAAAH0AAwABF+gAAQnCAAEJwgABAAAAfAADAAIX1BfUAAEJrgAAAAEAAAB7AAMAAAABCZoAAwmaCZoJmgAAAAMAAQmIAAEJiAACCYgJiAAAAAEAAAABAAgAAQluATgABgAAAAgAigB6AGoAWgBKADoAKAAWAAMAAAABCVIAAQlSAAEAAAB5AAMAARdmAAEJQAAAAAEAAAB4AAMAARNUAAEJLgABCS4AAAADAAER4gABCR4AAQkeAAAAAwAAAAEJDgACCQ4KkAAAAAMAAAABCP4AAgj+EcIAAAADAAAAAQjuAAII7gjuAAAAAwABCN4AAQjeAAEI3gAAAAEAAAABAAgAAgFaAAIEjwJtAAYAAAAIAIoAegBqAFoASgA6ACgAFgADAAAAAQooAAEIpgABAAAAdgADAAEWugABCJQAAAABAAAAdgADAAES6gABCgQAAQiCAAAAAwAAAAEJ9AACCHIIcgAAAAMAARSeAAEJ5AABCGIAAAADAAEIUgABCdQAAQhSAAAAAwABCcQAAQnEAAEIQgAAAAMAARP4AAEJtAABCDIAAAABAAAAAQAIAAIArgACBI8CawAGAAAABgByAGAATgA6ACYAEgADAAAAAQmAAAIJgAf+AAEAAAB0AAMAARYQAAEJbAABB+oAAQAAAHMAAwACFfwV/AABB9YAAAABAAAAcwADAAAAAQlEAAMJRAfCB8IAAAADAAEJMgABCTIAAgkyB7AAAAADAAETZAABCSAAAgkgB54AAAABAAAAAQAIAAEHhAHGAAEAAAABAAgAAgAKAAIEjwJuAAEAAgJXAskABgAAAAUAXgBMADgAJAAQAAMAAAABCNYAAgdUB1QAAQAAAHAAAwABFWYAAQdAAAEHQAABAAAAcQADAAIVUhVSAAEHLAAAAAEAAABwAAMAAAABCJoAAwcYBxgHGAAAAAMAAQiIAAEIiAACBwYHBgAAAAEAAAABAAgAAgAKAAIEjwJsAAEAAgJXA8sABgAAAAUAVABEADQAIgAQAAMAAAABCEwAARMGAAEAAABuAAMAARTeAAES9AAAAAEAAABuAAMAAAABCCgAAhLiEuIAAAADAAERJAABCBgAARLSAAAAAwABCAgAAQgIAAESwgAAAAEAAAABAAgAAgEGAAIEjwQOAAYAAAAFAEQAxgA0ACIAEAADAAAAARDiAAESkAABAAAAbAADAAEUaAABEn4AAAABAAAAbAADAAAAARC+AAISbAYwAAAAAwABEK4AARCuAAESXAAAAAEAAAABAAgAAgCgAAIEjwQPAAYAAAAGAHIAYABOADoAJgASAAMAAAABEHoAAhIoEigAAQAAAGkAAwABE/4AARIUAAESFAABAAAAagADAAIT6hPqAAESAAAAAAEAAABpAAMAAAABED4AAxHsEewFsAAAAAMAAAABECwAAxHaEdoR2gAAAAMAARAaAAEQGgACEcgRyAAAAAEAAAABAAgAAgAKAAIEjwQQAAEAAgLKA8sABgAAAAYAfgBqAFQAPgAoABIAAwAAAAEP3AADEYoRihGKAAEAAABlAAMAARNeAAERdAACEXQRdAABAAAAZwADAAITSBNIAAERXgABEV4AAQAAAGYAAwADEzITMhMyAAERSAAAAAEAAABlAAMAAAABD4QABBEyETIRMhEyAAAAAwABD3AAAQ9wAAMRHhEeER4AAAABAAAAAQAIAAIADAADBI8ECASPAAEAAwJXAskCygAGAAAABQBeAEwAOAAkABAAAwAAAAEPLgACBiIEoAABAAAAYwADAAESsgABBg4AAQSMAAEAAABjAAMAAhKeEp4AAQR4AAAAAQAAAGMAAwAAAAEO8gADBeYEZARkAAAAAwABDuAAAQ7gAAIF1ARSAAAAAQAAAAEACAACAAwAAwSPBBsEjwABAAMCxwLJAsoABgAAAAUAXgBMADgAJAAQAAMAAAABDqAAAgzWBBIAAQAAAGEAAwABEiQAAQzCAAED/gABAAAAYQADAAISEBIQAAED6gAAAAEAAABhAAMAAAABDmQAAwyaA9YD1gAAAAMAAQ5SAAEOUgACDIgDxAAAAAEAAAABAAgAAQ44AVcABgAAAAUAXgBMADgAJAAQAAMAAAABDiIAAg4iDiIAAQAAAF8AAwABEaYAAQ4OAAEODgABAAAAXgADAAIRkhGSAAEN+gAAAAEAAABdAAMAAAABDeYAAw3mDeYN5gAAAAMAAQ3UAAEN1AACDdQN1AAAAAEAAAABAAgAAQ26AVQABgAAAAcAeABoAFgASAA4ACYAFAADAAAAAQ2gAAENoAABAAAAWwADAAERJgABDY4AAAABAAAAWgADAAAAAQ18AAINfAuyAAAAAwAAAAENbAACDWwNbAAAAAMAAQuSAAENXAABDVwAAAADAAEEQAABDUwAAQ1MAAAAAwABDTwAAQ08AAENPAAAAAEAAAABAAgAAgAKAAIECgSPAAEAAgI9AsoABgAAAAQAQgAyACAADgADAAAAAQ0EAAEARAABAAAAWAADAAEQigABADIAAAABAAAAWAADAAAAAQzgAAIAIAAgAAAAAwABDNAAAQzQAAEAEAAAAAEAAQI9AAEAAAABAAgAAgAKAAIEHQSPAAEAAgLJAsoABgAAAAQAQgAyACAADgADAAAAAQySAAECBAABAAAAVgADAAEQGAABAfIAAAABAAAAVgADAAAAAQxuAAIB4AHgAAAAAwABDF4AAQxeAAEB0AAAAAEAAAABAAgAAgAMAAMEjwQUBI8AAQADAkcCVwLKAAYAAAAGAH4AagBUAD4AKAASAAMAAAABDB4AAw9kAxIDEgABAAAAUwADAAEPoAABD04AAgL8AvwAAQAAAFMAAwACD4oPigABAuYAAQLmAAEAAABUAAMAAw90D3QPdAABAtAAAAABAAAAUwADAAAAAQvGAAQPDAK6AroCugAAAAMAAQuyAAELsgADDvgCpgKmAAAAAQAAAAEACAACAVQAAgQGBI8ABgAAAAUAXgBMADgAJAAQAAMAAAABC3wAAgJwAnAAAQAAAFAAAwABDwAAAQJcAAECXAABAAAAUQADAAIO7A7sAAECSAAAAAEAAABQAAMAAAABC0AAAwI0AjQCNAAAAAMAAQsuAAELLgACAiICIgAAAAEAAAABAAgAAgDSAAIEBQSPAAYAAAAIAJgAiABqAFoASgA6ACgAFgADAAAAAQr0AAEB6AABAAAATgADAAEOegABAdYAAAABAAAATgADAAAAAQrQAAIBxABCAAAAAwAAAAEKwAACAbQMbgAAAAMAAAABCrAAAgGkCrAAAAADAAAAAQqgAAMBlAAYABIAAAABAAECyQABAAECGQADAAAAAQqCAAIBdgF2AAAAAwABCnIAAQpyAAEBZgAAAAEAAAABAAgAAQpaAcUAAQAAAAEACAACAAoAAgQfBI8AAQACAlcCygAGAAAABQBeAEwAOAAkABAAAwAAAAEKKgACCioBHgABAAAATAADAAENrgABChYAAQEKAAEAAABLAAMAAg2aDZoAAQD2AAAAAQAAAEsAAwAAAAEJ7gADCe4A4gDiAAAAAwABCdwAAQncAAIJ3ADQAAAAAQAAAAEACAABALYCOAABAAAAAQAIAAIADAADBI8ECwSPAAEAAwJAAlcCygAGAAAABgB+AGoAVAA+ACgAEgADAAAAAQmMAAMAhgCAAIAAAQAAAEgAAwABDQ4AAQBwAAIAagBqAAEAAABIAAMAAgz4DPgAAQBUAAEAVAABAAAASQADAAMM4gziDOIAAQA+AAAAAQAAAEgAAwAAAAEJNAAEAC4AKAAoACgAAAADAAEJIAABCSAAAwAaABQAFAAAAAEAAQJXAAEAAQJAAAEAAAABAAgAAgAKAAIEjwJ5AAEAAgI7AsoABgAAAAUAXgBMADgAJAAQAAMAAAABBEQAAgRECNYAAQAAAEYAAwABDFoAAQQwAAEIwgABAAAARQADAAIMRgxGAAEIrgAAAAEAAABFAAMAAAABBAgAAwQICJoImgAAAAMAAQP2AAED9gACA/YIiAAAAAEAAAABAAgAAQPcAD0ABgAAAAUAXgBMADgAJAAQAAMAAAABA8YAAgPGA8YAAQAAAEMAAwABC9wAAQOyAAEDsgABAAAAQgADAAILyAvIAAEDngAAAAEAAABBAAMAAAABA4oAAwOKA4oDigAAAAMAAQN4AAEDeAACA3gDeAAAAAEAAAABAAgAAQNeAlQAAQAAAAEACAABA1AAPAAGAAAABQBUAEQANAAiABAAAwAAAAEDOgABAzoAAQAAAD8AAwABC1IAAQMoAAAAAQAAAD4AAwAAAAEDFgACAxYHqAAAAAMAAAABAwYAAgMGAwYAAAADAAEC9gABAvYAAQL2AAAAAQAAAAEACAACAAoAAgSPAnoAAQACAjsCQgAGAAAABABCADIAIAAOAAMAAAABAr4AAQBEAAEAAAA8AAMAAQrWAAEAMgAAAAEAAAA8AAMAAAABApoAAgAgACAAAAADAAECigABAooAAQAQAAAAAQABAkIAAQAAAAEACAABBtgBLQAGAAAABQBeAEwAOAAkABAAAwAAAAEGwgACBsIGwgABAAAAOgADAAEKbAABBq4AAQauAAEAAAA5AAMAAgpYClgAAQaaAAAAAQAAADgAAwAAAAEGhgADBoYGhgaGAAAAAwABBnQAAQZ0AAIGdAZ0AAAAAQAAAAEACAABBloBzAABAAAAAQAIAAEGTAEsAAYAAAAEAEIAMgAgAA4AAwAAAAEGOAABBjgAAQAAADYAAwABCeQAAQYmAAAAAQAAADUAAwAAAAEGFAACBhQGFAAAAAMAAQYEAAEGBAABBgQAAAABAAAAAQAIAAEF1gJJAAEAAAABAAgAAQXIAEYABgAAAAUAXgBMADgAJAAQAAMAAAABBbIAAgWyBbIAAQAAADMAAwABCXIAAQWeAAEFngABAAAAMgADAAIJXgleAAEFigAAAAEAAAAxAAMAAAABBXYAAwV2BXYFdgAAAAMAAQVkAAEFZAACBWQFZAAAAAEAAAABAAgAAgCkAAIEjwKOAAYAAAAHAHgAaABYAEgAOAAmABQAAwAAAAEFLAABBQAAAQAAAC8AAwABCO4AAQTuAAAAAQAAAC8AAwAAAAEFCAACBNwFCAAAAAMAAAABBPgAAgTMBMwAAAADAAEAkgABBOgAAQS8AAAAAwABBKwAAQTYAAEErAAAAAMAAQTIAAEEyAABBJwAAAABAAAAAQAIAAIACgACApsEjwABAAICRgJJAAYAAAAHAH4AbgBeAE4AOAAmABQAAwAAAAEEXgABBIoAAQAAAC0AAwABCEwAAQR4AAAAAQAAAC0AAwAAAAEEOgACBGYAEAAAAAEAAQI7AAMAAAABBCQAAgRQBCQAAAADAAAAAQQUAAIEQARAAAAAAwABBDAAAQQEAAEEMAAAAAMAAQP0AAED9AABBCAAAAABAAAAAQAIAAECegHIAAEAAAABAAgAAgEiAAIEjwKdAAYAAAAFAF4ATAA4ACQAEAADAAAAAQO0AAICUgJSAAEAAAAqAAMAAQegAAECPgABAj4AAQAAACsAAwACB4wHjAABAioAAAABAAAAKgADAAAAAQN4AAMCFgIWAhYAAAADAAEDZgABA2YAAgIEAgQAAAABAAAAAQAIAAIAoAACBI8CoAAGAAAABgByAGAATgA6ACYAEgADAAAAAQMwAAIDMAHOAAEAAAAoAAMAAQccAAEDHAABAboAAQAAACcAAwACBwgHCAABAaYAAAABAAAAJwADAAAAAQL0AAMC9AGSAZIAAAADAAEBgAABAuIAAgLiAYAAAAADAAEC0AABAtAAAgLQAW4AAAABAAAAAQAIAAIACgACBI8CnAABAAICSQLHAAYAAAAFAFQARAA0ACIAEAADAAAAAQKUAAEBMgABAAAAJQADAAEGggABASAAAAABAAAAJQADAAAAAQJwAAIBDgEOAAAAAwABAP4AAQJgAAEA/gAAAAMAAQJQAAECUAABAO4AAAABAAAAAQAIAAECOABYAAYAAAAFAF4ATAA4ACQAEAADAAAAAQIiAAICIgIiAAEAAAAjAAMAAQYOAAECDgABAg4AAQAAACIAAwACBfoF+gABAfoAAAABAAAAIQADAAAAAQHmAAMB5gHmAeYAAAADAAEB1AABAdQAAgHUAdQAAAABAAAAAQAIAAEBugJGAAEAAAABAAgAAQGsAFYABgAAAAUAWgBKADQAIgAQAAMAAAABAZYAAQGWAAEAAAAfAAMAAQWEAAEBhAAAAAEAAAAeAAMAAAABAXIAAgFyABAAAAABAAECxwADAAAAAQFcAAIBXAFcAAAAAwABAUwAAQFMAAEBTAAAAAEAAAABAAgAAgAKAAID5QSPAAEAAgJSA8sABgAAAAQAQgAyACAADgADAAAAAQMqAAEDJAABAAAAHAADAAEFAgABAxIAAAABAAAAHAADAAAAAQMGAAIDAAMAAAAAAwABAvYAAQL2AAEC8AAAAAEAAAABAAgAAgAKAAIEjwJyAAEAAgJPA8sABgAAAAQAQgAyACAADgADAAAAAQLEAAECvgABAAAAGgADAAEElgABAqwAAAABAAAAGgADAAAAAQKgAAICmgKaAAAAAwABApAAAQKQAAECigAAAAEAAAABAAgAAgAKAAIEjwJ1AAEAAgJRAsoABgAAAAgAogCSAHwAZgBQADoAKAAWAAMAAAABAdQAAQCcAAEAAAAYAAMAAQQiAAEAigAAAAEAAAAYAAMAAAABAbAAAgB4ABAAAAABAAECSQADAAAAAQGaAAIAYgAQAAAAAQABAq8AAwAAAAEBhAACAEwAEAAAAAEAAQJGAAMAAAABAW4AAgA2ABAAAAABAAECwwADAAAAAQFYAAIAIAAgAAAAAwABAUgAAQFIAAEAEAAAAAEAAQLKAAEAAAABAAgAAgAKAAIEjwJzAAEAAgJRA8sABgAAAAQAQgAyACAADgADAAAAAQEKAAEBgAABAAAAFgADAAEDWAABAW4AAAABAAAAFgADAAAAAQDmAAIBXAFcAAAAAwABANYAAQDWAAEBTAAAAAEAAAABAAgAAgAKAAID5ASPAAEAAgJQA8sABgAAAAQAQgAyACAADgADAAAAAQEUAAEARAABAAAAFAADAAEC7AABADIAAAABAAAAFAADAAAAAQDwAAIA8AAgAAAAAwABAOAAAQDgAAEAEAAAAAEAAQJQAAEAAAABAAgAAQDCAMQAAQAAAAEACAACAAwAAwSPAnQEjwABAAMCUQJSA8sABgAAAAYAhABwAFoARAAuABIAAwAAAAEAFgADAIwAjACGAAEAAAARAAEAAQJRAAMAAQJaAAEAcAACAHAAagABAAAAEgADAAICRAJEAAEAWgABAFQAAQAAABEAAwADAi4CLgIuAAEAPgAAAAEAAAARAAMAAAABADQABAAuAC4AKAAoAAAAAwABACAAAQAgAAMAGgAaABQAAAABAAECUgABAAEDywABAAECTwABAAAAAQAIAAEBhABQAAYAAAAGAH4AagBUAD4AKAASAAMAAAABAWwAAwFsAWwBbAABAAAADwADAAEBqAABAVYAAgFWAVYAAQAAAA4AAwACAZIBkgABAUAAAQFAAAEAAAANAAMAAwF8AXwBfAABASoAAAABAAAADAADAAAAAQEUAAQBFAEUARQBFAAAAAMAAQEAAAEBAAADAQABAAEAAAAAAQAAAAEACAABAOQATwAGAAAABQBeAEwAOAAkABAAAwAAAAEAzgACAM4AzgABAAAACgADAAEBDAABALoAAQC6AAEAAAAJAAMAAgD4APgAAQCmAAAAAQAAAAgAAwAAAAEAkgADAJIAkgCSAAAAAwABAIAAAQCAAAIAgACAAAAAAQAAAAEACAABAGYCSAABAAAAAQAIAAEAWABOAAYAAAAEAEIAMgAgAA4AAwAAAAEARAABAEQAAQAAAAYAAwABAIQAAQAyAAAAAQAAAAUAAwAAAAEAIAACACAAIAAAAAMAAQAQAAEAEAABABAAAAABAAECRwABAAAAAQAIAAIACgACA94EjwABAAICXAPBAAYAAAAEAEgAOAAgAA4AAwAAAAEAUAABAEoAAQAAAAMAAwABABIAAQA4AAAAAQAAAAMAAQABBI8AAwAAAAEAJgACACAAIAAAAAMAAQAWAAEAFgABABAAAAABAAECXAABAAEDwQADAAAAAQAIAAEASgAiAjwCNgIw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/eQ8PDw8PDw8PDz95Dw8PDw8PDw8PP3kPDw8PDw8PDw8/eQ8PDw8PDw8PDz95Dw8PDw8PDw8PP3kPDw8PDw8PAPAPDw8PDw8PDw8PHg8PDw8PDw8PDw8eDw8PDw8PDw8PDx4PDw8PDw8PDw8PHg8PDw8PDw8PDw8eDw8PDw8PDw8PDx4PDw8PDw8PDw8PHg8PDw8PDw8PDw8eDw8PDw8PDw8PDx4PDw8PDw8PDw8PHg8PDw8PDw8PDw8AG4AAP7UAlgD/AADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AEMARwBLAE8AUwBXAFsAXwBjAGcAawBvAHMAdwB7AH8AgwCHAIsAjwCTAJcAmwCfAKMApwCrAK8AswC3ALsAvwDDAMcAywDPANMA1wDbAN8A4wDnAOsA7wDzAPcA+wD/AQMBBwELAQ8BEwEXARsBHwEjAScBKwEvATMBNwE7AT8BQwFHAUsBTwFTAVcBWwFfAWMBZwFrAW8BcwF3AXsBfwGDAYcBiwGPAZMBlwGbAZ8BowGnAasBrwGzAbcAAAE1MxUBNTMVJzUzFRU1MxUVNTMVJzUzFRU1MxUVNTMVFTUzFRU1MxUBNTMVFTUzFRU1MxUVNTMVFTUzFRU1MxUVNTMVATUzFRU1MxUVNTMVFTUzFRU1MxUVNTMVFTUzFRU1MxUVNTMVATUzFRU1MxUVNTMVFTUzFRU1MxUVNTMVFTUzFRU1MxUVNTMVFTUzFQE1MxUVNTMVFTUzFRU1MxUVNTMVFTUzFRU1MxUVNTMVFTUzFRU1MxUBNTMVFTUzFRU1MxUVNTMVFTUzFRU1MxUVNTMVFTUzFRU1MxUVNTMVATUzFRU1MxUVNTMVFTUzFRU1MxUVNTMVFTUzFRU1MxUVNTMVFTUzFQE1MxUVNTMVFTUzFRU1MxUVNTMVFTUzFRU1MxUVNTMVFTUzFRU1MxUBNTMVFTUzFRU1MxUVNTMVFTUzFRU1MxUVNTMVFTUzFRU1MxUVNTMVATUzFRU1MxUVNTMVFTUzFRU1MxUVNTMVFTUzFRU1MxUVNTMVATUzFRU1MxUVNTMVFTUzFRU1MxUVNTMVFTUzFQE1MxUVNTMVFTUzFRU1MxUVNTMVJzUzFRU1MxUVNTMVAhw8/ag8PDw8PLQ8PDw8PP7UPDw8PDw8PP5cPDw8PDw8PDw8/eQ8PDw8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ATYBN/7JAAL/9gAyAmICnwADAAcAACUJAgU3JwcBLP7KATYBNv7K6OjoMgE2ATf+yejo6ekAAAIAPAAAAhwC0AAHABsAADMDNRMzExUDJzM2Njc3NScmJicjBgYHBxUXFhbwtLR+rq5DBAcbD2JiDxsHBAccD2NjEBsBREcBRf67R/68PA42HbsfvB02Dg42Hbwfux41AAEAAAA8AlgClAADAAA1ESERAlg8Alj9qAAAAgAAADwCWAKUAAMABwAANREhESUhESECWP3aAfT+DDwCWP2oMgH0AAEAlgDSAcIB/gADAAA3ESERlgEs0gEs/tQAAgCWANIBwgH+AAMABwAANxEhESczNSOWASz6yMjSASz+1DLIAP//AAAAPAJYApQARwMlAlgAAMAAQAAAAgAAADwCWAKUAAMABwAANREhESUhESECWP3aAQT+/DwCWP2oMgH0AAIAAAA8AlgClAADAAYAADURIRElIRECWP3aAfQ8Alj9qDIB9AAAAgAAADwCWAKUAAMABgAAAREhEQUhEQJY/agCJv4MApT9qAJYMv4MAAMAAAA8AlgClAADAAcACwAANREhESUhESETETMRAlj92gH0/gzhMjwCWP2oMgH0/eQCRP28AAH/9gA8AmICngACAAAnAQEKATYBNjwCYv2eAAABAAAAMgJiAp4AAgAANREBAmIyAmz+ygAB//YAMgJiApQAAgAAJQEhASz+ygJsMgJiAAH/9gAxAlgCngACAAAlAQECWP2eAmIxATcBNgAC//YAPAJiAp4AAgAFAAAnAQElIQMKATYBNv3nAcbjPAJi/Z4yAb8AAgAAADICYgKeAAIABQAANREBBSUlAmL90AHA/kAyAmz+yuPj4wAC//YAMgJiApQAAgAFAAAlASEBEyEBLP7KAmz+yuP+OjICYv4PAb8AAv/2ADICWAKeAAIABQAAJQEBAxEFAlj9ngJiMv5AMgE2ATb95wHG4wAAAQAAANICYgH+AAIAADURBQJi0gEslgD////2ANICWAH+AEcDMQJYAADAAEAAAAIAAADSAmIB/gACAAUAADURBQUlJQJi/dABjv5y0gEsllZWVgD////2ANICWAH+AEcDMwJYAADAAEAAAAEAlgDSAcICCAACAAA3ExOWlpbSATb+ygD//wCWANIBzAH+AIYDNcQ8AABAAEAAAAD//wCW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AAAVkAAAFaIAABZeAAAWcAAAFoIAABeMAAAXngAAF7AAABhMAAAY8gAAGRgAABlIAAAZWgAAGdoAABnuAAAaSAAAGloAABpsAAAafgAAGpIAABqkAAAatgAAGsgAABtOAAAbYAAAG3IAABuEAAAblgAAG6gAABu6AAAbzAAAHHwAAByOAAAcoAAAHOAAAB18AAAdjgAAHaAAAB20AAAdxgAAHjoAAB6KAAAenAAAHq4AAB7CAAAe1AAAHuYAAB74AAAfCgAAHxwAAB9MAAAfXgAAH3AAAB+CAAAgMAAAIEQAACBWAAAgaAAAIH4AACCQAAAgogAAILQAACDGAAAg2AAAIOoAACD8AAAhDgAAISAAACEyAAAhRAAAIVYAACFoAAAhfAAAIY4AACKCAAAilAAAIqYAACPWAAAj6gAAJIgAACUOAAAlJgAAJT4AACYSAAAmJAAAJjYAACbUAAAnogAAKD4AACjqAAApjAAAKaAAACmyAAApxAAAKdYAACnoAAAp/AAAKg4AACogAAAqMgAAKkQAACpWAAAqaAAAKnoAACqMAAAqngAAK4wAACueAAAsQAAALKIAAC1mAAAtfgAALZAAAC2iAAAttAAALcYAAC3YAAAuPgAALlAAAC5iAAAudgAALqIAAC66AAAuzgAALuIAAC72AAAvCgAALyAAAC80AAAvSAAAL1wAADAKAAAwHgAAMDYAADCAAAAwmAAAMNwAADDuAAAxAAAAMU4AADFiAAAxdgAAMYgAADGgAAAx/AAAMqYAADMIAAAzHAAAMy4AADNAAAAzUgAAM9YAADPoAAA0fAAANJAAADSiAAA0tAAANMYAADTYAAA06gAANPwAADUOAAA1IAAANTIAADVEAAA1VgAANhYAADYqAAA2PAAANk4AADZgAAA2cgAANoQAADaWAAA3cgAAOAoAADgeAAA4MAAAOTgAADnaAAA6igAAOyoAADuOAAA7ogAAO7QAADvGAAA8kAAAPKQAADy2AAA9zAAAPd4AAD32AAA+ugAAPvwAAD9EAAA/mAAAP/oAAECeAABAsAAAQQgAAEEcAABBLgAAQUAAAEFSAABBZAAAQXYAAEGIAABCAgAAQhoAAEIuAABCQgAAQlQAAEJoAABCegAAQowAAEM4AABDSgAAQ1wAAEOaAABEIgAARDYAAERIAABEWgAARGwAAETc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AAC+ugAAvroAAL66AAC+zAAAvswAAL7MAAC+zAAAvswAAL7MAAC+zAAAvswAAL7MAAC+zAAAvswAAL7MAAC+zAAAvswAAL7eAAC+3gAAvvAAAL7wAAC/AgAAvxQAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/JgAAvyYAAL8mAAC/xgAAv8YAAL/UAADAGAAAwR4AAMH2AADCJAAAw2wAAMPuAADEkAAAxToAAMV4AADFlAAAxbgAAMXUAADF+AAAxigAAMbeAADHIgAAyA4AAMgeAADIRgAAyEYAAMiAAADJqAAAyagAAMmoAADJqAAAyagAAMmoAADJ6gAAyfwAAMp2AADLeAAAzQoAAM9QAADQPgAA0GQAANC8AADRdgAA0aAAANG0AADR4AAA0j4AANJ0AADSygAA0voAANNsAADTugAA1MYAANUKAADVYgAA1dwAANZ6AADXCgAA1y4AANdaAADXvgAA2CIAANi2AADZJAAA2YgAANnYAADaUAAA2mQAANp2AADaygAA20YAANtaAADbpgAA3AYAANwYAADcYgAA3KwAANzsAADdLgAA3XAAAN2EAADeLgAA32gAAODSAADhIgAA4XoAAOHaAADiYAAA42wAAOSmAADlagAA5eIAAOaQAADm5AAA5zYAAOd8AADn2AAA6DQAAOiQAADo+AAA6QoAAOlKAADpngAA6bAAAOrCAADsGAAA7doAAO4sAADutgAA70oAAPCcAADxsgAA8p4AAPQ+AAD0mAAA9LgAAPTKAAD05gAA9QoAAPUcAAD1PAAA9ZIAAPXKAAD15gAA9gIAAPYmAAD2QgAA9moAAPaSAAD21gAA9xwAAPeWAAD3sgAA+AIAAPgmAAD4QgAA+IYAAPi+AAD5GgAA+TYAAPmWAAD58AAA+gwAAPooAAD6PAAA+k4AAPpgAAD6cgAA+oQAAPqWAAD6qAAA+roAAPrMAAD63gAA+vAAAPsCAAD7FAAA+2oAAPuoAAD7xAAA++AAAPwEAAD8LAAA/FQAAPyYAAD83gAA/VgAAP10AAD9wgAA/eYAAP4CAAD+QAAA/ngAAP6UAAD+9AAA/04AAP9gAAD/cgAA/4QAAP+WAAD/qAAA/7oAAP/MAAD/3gAA//AAAQACAAEAFAABADAAAQBQAAEAvAABARAAAQFkAAEB8gABAqQAAQLUAAEDBAABA3AAAQQAAAEEYgABBMYAAQVUAAEGEgABBkwAAQaGAAEG7AABB4gAAQeIAAEHiAABB5YAAQeWAAEHlgABB5YAAQemAAEHpkAAwACAAgAMACAAAQAiAAAACxId4u4VDfDo6hT9/4MAAoOECxAQAPHxNy0gHiAtNoMQ59whGdvoFyQe4fb/AgD+AwuDhAvj4wAPD97EucG5xd6DAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACGhoaGAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACGhoaGAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwABQABAAIAAACAAAKDhYWFgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEABQAAAIWFgAD9g4WAAgAMAAIAAQACAAAAhYWFhQCAAgAMAEMAAQBFAAAAHPgGGRkZHxbw8Pbz8/Pw7/PzEh3i7hUN8OjqFP3/gwACgwUICP77/QWBCP8A9vb19vb2CIQLEBAA8fE3LSAeIC02gyHVz8zMzOLm8dzr8/Pz7erz8+fcIRnb6BckHuH2/wIA/gMLgxDq6vL7AQwBAe33AgoRFxcX6oQL4+MADw/exLnBucXegwCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMABsAAQAbAAANDAABAgICAgICAQEBAgEMBC//5PTk/wjr2+oIDYEKJe4T2wAMDADuJSUM4toKHAocCvUIFgv1/IEK1RDfLADa2gD41dUAgAIADAACAAEAAgAAAIWFhYUAgAIADABKAAEASiAAAAgREf718fHx9PuBGfz28vLy8vHy6/wKGRkZCvzr6/8MGBgYCv7rg4ML/gEA/Pn48/L0+f3+ghHd3d3s+QQMDAzr6+v5BxUjIyODGBcBAQEBAwECAQEBAQIBAQEBAgEBAgIEAQIX5QEMHxweKB8bHh4VBfse/+Dg4P8e4eH/ggj/Bgbz8/sFCAOBCSgoGQ3/6RH16dgAgAIADAA/AAEAQCAAAB8CBw4RERERDgcC/vr4+CAgDgL36enp6fcCDyAg+Pj6/oOCBPv2CgUBggH//4ELDyQkJBMJ9uzc3NzyggABhBQTAQEBAQEBAQECAQICAwIBAgQCAQET+ezk5OTk7PkIFR7iDiAgDuIeFQiABQUJCvb3+4EK/Pbkz/UKMQoIBACAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAGYAAQBoAAAAMh4eKCotLS0jICARDw0IBQUFEBkCBw4RERERDgcC/vr4+CAgDgL36enp6fcCDyAg+Pj6/oMICPT09Pf6AQUFgQcBAwUFAgQICIIE+/YKBQGCAf//gQsPJCQkEwn27Nzc3PKCAAGEMvb2AAMGBgYA+/sLDRIbIyMjGA8A+ezk5OTk7PkACBUeHuLi8gAOICAgIA4A8uLiHh4VCIMG6vn5+fr5/4EJ9vb8/fz48/Dq6oEFBQkK9vf7ghP8+Pb25M/Pz+P1Ch0xMTEdCgoIBIQAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAAtAAEALQAAABUSEvXy8O/v7+/w8vXq9QIXFxcXAfXqg4MF//7/AAEBgQne3t7zAP8MIiIigxXj4xMYIigoKCgiGBMfE//s7Ozs/xMfg4MF/PXxDwwFgQk8PDwmD/HaxMTEgwCAAgAMADMAAQAzAAAAgxUSEvXy8O/v7+/w8vXq9QIXFxcXAfXqgwMQ8fEQgwX//v8AAQGBCd7e3vMA/wwiIiKDgxXj4xMYIigoKCgiGBMfE//s7Ozs/xMfgwP2Cgr2gwX89fEPDAWBCTw8PCYP8drExMSDAIACAAwAAgABAAIAAACFhYWFAIACAAwAMwABADMAAACDFRIS9fLw7+/v7/Dy9er1AhcXFxcB9eqDAxDx8RCDBf/+/wABAYEJ3t7e8wD/DCIiIoODFePjExgiKCgoKCIYEx8T/+zs7Oz/Ex+DA/YKCvaDBfz18Q8MBYEJPDw8Jg/x2sTExIMAgAIADAAOAAEADgAABgUBAgICAgIFFPbt9u32gAQk7RHcAAXsCiYKJgqABNIQ4S4AgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIaGhoYAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAAFAAEAAgAAAIAAAoOFhYWAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMADwAAQA8AAAAHPsJHBwcIhnz8/n29vbz8vb2FBT29u3t9vbt7fb2gwUICP77/QWBCP8A9vb19vb2CIIHJCTt7RER3NyEHOvl4uLi+PwH8gEJCQkDAAkJ7OwKCiYmCgomJgoKgxDq6vL7AQwBAe33AgoRFxcX6oIH0tIQEOHhLi6EAIACAAwAAgABAAIAAACFhYWFAIACAAwADAABAAwAAAUEAQICAgIEFADu9+wE/yPyFgAE5w8jDyME/8UW3AAAgAIADABIAAEAQyAAACMCBw4RERERDgcC/vr4+CAgDgL36enp6fcCDyAgIAcH+Pj4+v6DggT79goFAYIB//+BEA8kJCQTCfbs3d3d8gAUFPDwgQABhBUUAQEBAQEBAQECAQICAwIBAgUCAgIBFPns5OTk5Oz5CBUe4g4gIA7iCh4VCIAFBQkK9vf7gQv89uTP9Qoy7xwKBACAAgAMAAUAAQACAAAAgAAGg4WFhYACAAwABQABAAIAAACAAAaDhYWFgAIADAAFAAEAAgAAAIAABoOFhYWAAgAMAAUAAQACAAAAgAAGg4WFhYACAAwABQABAAIAAACAAAKDhYWFgAIADAAFAAEAAgAAAIAABoOFhYWAAgAMAA4AAQAOAAAGBQECAgICAgUR6RfvF+mAAPCBARQABeUh3xvfIYAAIIEB5gCAAgAMABEAAQARAAAIBwACAwICAgICgQUR6RfvF+kDD/AA8IEBFACBBeUh3xvfIYACFAAggQHmAIACAAwAAgABAAIAAACFhYWFAIACAAwADgABAA4AAAYFAQICAgICBQ8WD/Hs8QXcJQEl3AAF5+PnGR0ZBTDQANAwAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwABQABAAIAAACAAAKDhYWFgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEABQAAAIWFgAAKg4WAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQAFAAAAhYWAAP2DhYACAAwAAgABAAIAAACFhYWFAIACAAwAPQABAD0AAAAc+wkcHBwiGfPz+fb29vPy9vYPDxYWDw/x8ezs8fGDBQgI/vv9BYET/wD29vX29vYIANzcJSUBASUl3NyEHPXv7OzsAgYR/AsTExMNChMT5+fj4+fnGRkdHRkZgxXq6vL7AQwBAe33AgoRFxcX6gAwMNDQgQPQ0DAwhACAAgAMAAIAAQACAAAAhYWFhQCAAgAMACUgAQAaAAAMCwABAQIBAQIBAQICAQsKAQECAQECAQECAgEKDhnx8f0NGRkN8fGACfr27N3d7PUjAPWACvbnIyMS7t3d5xkZC///BgofMTEdCMYACACAAgAMAAIAAQACAAAAhYWFhQCAAgAMAB0AAQAbAAAADBIS6uoXF+z17BgZ6uqDgAYBAfDwAQECgQESEoQM5eUhIfzSEzIP0f8hIYOCAR4egQACgQHj44QAgAIADAACAAEAAgAAAIWFhYUAgAIADAAIAAEACAAAAwIBAgICBd32gAHcAALsKAWAAToAAIACAAwABQABAAUAAACAAPGDhYAACYOFAIACAAwABQABAAUAAACAAPGDhYAACYOFAIACAAwAAgABAAIAAACFhYWFAIACAAwABQABAAUAAACAAPuDhYAAGIOFAIACAAwAEQABABUAAACDAw8P5+eFAwrx9g+CAdzchIEHCgr29jIyDw+DgAI8AMSCATo6hACAAgAMAEAAAQA5AAAAHBAQ5f/8/f7+Af8c8PAXFxcSCgD96hQA/PTu6enpg4IG1N7p6ene04NCAK8AqQCGCFgoFAUFFCdTf0EApACvhBze3hEICAH++vX17yIi8fHx8O7t7Q/vDg4ODw8PD4OCBgYCCxELAgWDDb/K09bU0/b209XV0ce/hIACAAwAKAABACMAAAARFBTgDQ4RExMT7Owf9PPv7e3tg4IDzsmwh0D/aoMCMkFnQQCLAJaEEeLiGff28/Hx8R4e5woLDQ8PD4OCBDxIYHBugwTEvK2kpoSAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAD0AAQA5AAAAGvPzAg8VFfPy7uzs7BMT4A4PEhQUFO3t7fX/AoOAB9vb2+PxMkFnQQCLAJaDAamcQv96/1n/ToEC8fP6hRoKCgX24uIKCw0PDw/i4hn39vPx8fEeHh4UBPuDgAk/Pz8qGsS8raSmgwJQXHRBAIMAgYECCgkEhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAEAAAQBCAAAAgB4HDhEREREOBwD58u/v7+/y+gAKFxcXFwkA9unp6en1g4EE//r2CgWEEwUJ9vr/ANvb6vYKFiUlJRYK9urbg4Ae+ezk5OTk7PkACBQcHBwcFAgA8uDg4ODzAAwgICAgDYOBBQUJCvb2+4IU+/b1CgkFADExHQr25M/Pz+T2Ch0xgwCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhoaGhgCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAUAAQACAAAAgAACg4WFhYACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAUAAACFhYAA/YOFgAIADABYAAEAVgAAACsKCiMnLS0tCgoKFB4ABw4RERERDgcA+fLv7+/v8voAChcXFxcJAPbp6enp9YMAHoIBCQ+BAxQZHh6BBP/69goFhBMFCfb6/wDb2+r2ChYlJSUWCvbq24Mr7e0LDAsLCzg4OCEQAPns5OTk5Oz5AAgUHBwcHBQIAPLg4ODg8wAMICAgIA2DAN2GAwXz3d2BBQUJCvb2+4IU+/b1CgkFADExHQr25M/Pz+T2Ch0xgwCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAGYAAQBoAAAAMvYEFxcXGBobFgUABw4RERERDgcA+fLv7+/v59/z9/Hx8e7t8fEAChcXFxcJAPbp6enp9YMICAj++/8DBQQCggT/+vYKBYQcBQn28fHxAQP29vX29vYI29vq9goWJSUlFgr26tuDMufh3t7e8xMjJhYA+ezk5OTk7PkACBQcHBwcDQTx/gUFBf/8BQUA8uDg4ODzAAwgICAgDYMI6ury+wUXIR8YggUFCQr29vuCHfv29QoH/vzu+gMLERcXF+oxMR0K9uTPz8/k9godMYMAgAIADABEAAEARgAAACMPFfHrAAcOEREREQ4HAPny7+/v7/L6AAoXFxcXCQD26enp6fWDhQT/+vYKBYQTBQn2+v8A29vq9goWJSUlFgr26tuDI+zyFA4A+ezk5OTk7PkACBQcHBwcFAgA8+Xl5eXzAAwbGxsbDIOFBQUJCvb2+4IU+/b1CgkFADExHQr25M/Pz+T2Ch0xgwCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAFEAAQBWIAAAAgEEA4MmAwQBAQQICgoK+vrp6e/v6en6+goKCggEAfP7CgoKCvvz693d3d3rg4EFAf75BwL/iAcgIPDwEBDg4IYN4uLv+QcRHh4eDwf58eKDHBsAAgEBAQEBAgIBAQQCAgICAwEBAwEBAQEDAQEBG+z09vb29vTs7u3sBRUFFQXs7e745ubm5hcoKCgGBgcLD/f7/4MQ1RPnLAAGBgYzHw/359Pn9w8AAgAMACQgAQApIAALCgEBBAQCAQECAgEBChL+8f7q6v4cHA3+gQgMGAD19QEXIyMNDAEBAQICAQICAQEDAQIM5vT9FBQL9CIi9Nvb9IIJ8+vj3gAUFO/dygCAAgAMADAAAQAwAAAAFg8P5+cA+/Ls7Oz4AOfn5wAKFxcXCwDng4IT8fHx9v0ABg8PDwDt7e33AAkUFBSDFuzsKCgHDRMUFBQPBygoKO7n29vb6O4og4ITDw8PDggA9/Hx8QAeHh4MAPTi4uKDAIACAAwATgABAEwAAAAlGxgdGQgBCBMZGRkZEwgB+e7n5+fn7fLwAQoPDw8PCgH38fHx8feDgAIDBAOCBf328Q8KBIIVAQcP8fX7/QDd3eXxDxojIyMbD/Hl3YMl6uX6+v0A+/Ls7Ozs8vsABA4UFBQUFxgeAPTY2NjY8QAQKCgoKA2DgAAHhAUCBQX7/P6CFf77+wUHCAcAMzMXBfvpzs7O6fsFFzODAIACAAwAMQABADEAAAAXEhL9/fn29vbq3/EfBurq6v0OISEhDv3qg4MFBAcIAwMMgQsUFADw8PD+ChYjIyODF+Xl7vsLFBQUHCMU2/EgICDu6Nvb2+juIIODBf/59Pfx7IEL3t4ADw8P+u3hz8/PgwCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAFcAAQBYAAAAKgEGCgwN5eX3AQ0bGxsI+woNDQ0NCQQA/PPyGhoJAPTl5eXz++vs8/Pz+P+Dgib++/vu3Nzc6fUDFxsVFA8NCgT///8DAwMQIyMjFQkA8e709PT2+P2EKvz37ObnIyMR/+/d3d3k7AXz3d3d4+/4CBcW2trq9wYZGRkOA+0FGRkZEgaDgScECAoKHDExMR0L/+vm2Nfi7/T8////+/b2487Ozt/t+g8VIyQfEAwEhIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAfgABAH8AAAA9Hh4oKi0tLSMgIBEPDQgFBQUQGQEGCgwN5eX3AQ0bGxsI+woNDQ0NCQQA/PPyGhoJAPTl5eXz++vs8/Pz+P+DCAj09PT3+gEFBYEHAQMFBQIECAiCJv77++7c3Nzp9QMXGxUUDw0KBP///wMDAxAjIyMVCQDx7vT09Pb4/YQ99vYAAwYGBgD7+wsNEhsjIyMYD/z37ObnIyMR/+/d3d3k7AXz3d3d4+/4CBcW2trq9wYZGRkOA+0FGRkZEgaDBur5+fn6+f+BCfb2/P38+PPw6uqBJwQICgocMTExHQv/6+bY1+Lv9Pz////79vbjzs7O3+36DxUjJB8QDASEgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADABHAAEARwAAABoSEhIOBwP09NjY3+fs7Ozu8PH29vsIGRkZCPuBBSAD+Orq6oOAAhMOBYIIKv7w7/H3+/v+gg7b29vs+QYXFxf0JSUlGhOEIuDg4Oby+hER//L9CxMTEwz98gEB9+vb29vq9/X16vkCDQ0Ng4AC8/j9ggjL5wICAgEA//+CDisrKxwM/e/v7w/V1dXk84QAgAIADABMAAEATAAAACT/BAsPDw8ZGRkK//Ln5w8PCgP/+fTx8fHx9fv/CBkZGePn5+f3g4EK/vn26uoJEyMjIw+BAf//ghABBQr2+f4A4eHu9gUFBvbv4YMkAfnr4uLi4uLi8wEOICDk5O36AQgWHh4eHhcKAfXi4uIbHh4eEIOBDgMHChAQ9ePOzs7k9vb4/YIQ+/f2CgcDACgoGAro6OoKFSiDAIACAAwACgABAAoAAAQDAQICAgMVBfvtAyP/IwAD4vEPHgPF/8UAgAIADAAOAAEADgAABgUBAgICAgIFCvYVBfvtBfEPI/8jAAX2CuLxDx4FFOzF/8UAgAIADAACAAEAAgAAAIWFhYUAgAIADAA5AAEAOQAAABr7+wUHCgoKAP397ezq5eLi4u32FRUFBfv77e2DCAj09PT3+gEFBYEOAQMFBQIECAgAIyP//yMjhBoGBhATFhYWEAsLHh0iKzMzMygf4uLx8Q8PHh6DBur5+fn6+f+BEPYA/P38+PPw6uoAxcX//8XFhACAAgAMAAIAAQAFAAAAhYWAAPuDhYACAAwAJgABACYAAAARAQ8SEhLq6ur7AQgWFhbu7u7xg4EB/PaBBvbp3d3d6faBAfb9hIAQ9+Li4h4eHhIA7uLi4h4eHgiDgQEHDoEGDx0yMjIdD4EBDgmEAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwABQABAAIAAACAAAKDhYWFgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAA+AAEAOgAAAB0HByouNDQ0ERERGyUBDxISEurq6vsBCBYWFu7u7vGDAB6CAQkPgQMUGR4egQH89oEG9und3d3p9oEB9v2EHQsLCwwLCws4ODghEAD34uLiHh4eEgDu4uLiHh4eCIMA3YYDBfPd3YEBBw6BBg8dMjIyHQ+BAQ4JhACAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAFEAAQBRAAAAJvYEFxcXGBobFgUABw8SEhLq6ur1AAoWFhbu7u7n3/P38fHx7u3x8YMICAj++/8DBQQCggL/+vaBBvbq29vb6vaBDPbx8fEBA/b29fb29giDJufh3t7e8xMjJhYA+evi4uIeHh4NAPLi4uIeHh4NBPH+BQUF//wFBYMI6ury+wUXIR8YggIFCQqBBgodMTExHQqBDAoH/vzu+gMLERcXF+qDAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAGQABABkAAAAMHhLqAgH//////hju44OCBsrT3+Lf08qGDODnJQ4GAwMD/vbdGSODggYjP05LTj8khgCAAgAMAEUAAQBJAAAAJBUP5/T09/v9/gMHBg/y/v4AAwUHDA8PFPHsFQoJBgMB//z49+qDgwYE++vi6/sEgwYE++vi6/sEhAjs7/4QFxD/7+yEJOHxFgQDAQEBAQMEAvQJ//7+AAEBAP385Q8c8f7+///+/v//AA2Dggg0PDgrIys4PDSBCDQ8OCsjKzg8NIMIv7nE2uXaxLm/hACAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAUAAQACAAAAgAACg4WFhYACAAwAAgABAAIAAACFhYWFAIACAAwAMwABADMAAAAXDRQR4erq+P4EEhMc7+zzIhcXCQL77u7gg4AACoEG+vrp4On6+oEABoEGFBMkLSQSE4QX7N7uKwYIBAD9+PnUEiIU1vv6/f4ABQMpg4AAB4EGODM2OTYzOIEAAYEGzNHQztDQy4QAgAIADAAhAAEAIQAAAA4UFA/m+vn+AAMGBRrx7OyDgAAHgQbi5eLg4eXigQAHhA7i4uws9/kAAgUJCtUUHh6DgADzgQZQSCESIUhQgQDzhACAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAUAAQACAAAAgAACg4WFhYACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwADgABAA4AAAYFAQECAgECBQYhBfbe+QXYJAAh3AAF9rn5CUUKBTLGAM46AIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAUgABAE4gAAAnERMRERELAxYWFgsB9uroEBEI//Xu7u4UFBobGxUJEBYWFgD36enp/YOBCwH/+fb29gAPISEhD4EA/4IB/P2BDwcHDAgA5eXv+A0NDQT+9eWDGRgBAgEBAQIBAQECAQIBAQEBAQICAQMCAwEBGO3w8P8W3t7uACIi6/YDDRoa4djiC94XIiyACgIICQn76NfX4Ofzggn7+ADxBScW9/cCAIACAAwABQABAAIAAACAAAqDhYWFgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAAEAAEABAAAAAAChYYAB4WGAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACGhoaGAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwABQABAAIAAACAAA2DhYWFgAIADAACAAEAAgAAAIWFhYUAgAIADABzAAEAcwAAADf2BBcXFx0U7vTx8fHu7fHxERMRERELAxYWFgsB9uroEBEI//Xu7u4UFBobGxUJEBYWFgD36enp/YMFCAj++/0FgQcB9vb19vb2CIELAf/59vb2AA8hISEPgQD/ggH8/YEPBwcMCADl5e/4DQ0NBP715YM3//n29vYMEBoaHR0dFxQdHent8PDw/xbe3t7uAA4iIuvr9gMNGhoa4eHY4uLmC/fe3t4XIiwsLBuDD+rq8vsBDAEA/QIKERcXF+qBDgECCAkJCfvo19fX4Ofn84IB+/iBD/HxBQMAJycWCvf39wINGSeDAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAkwABAI8AAAASBAQFBQUF9+4QEBD79Ona1vn+/4Eb/wEB/wEEBQP++/v78fHxAA0UGx/89wIGBQMA/4IVAvkCEBAQ7Ojd3d3d7fEeHh4SCgHx8YOBDwYJ+/j09PQLDSEhIRAFBQSCBf78+vr8/oIMBAoNDfbt4ODg8Pv7/YIbAQQFBQQBAN3d7fYNDQ0C+wn43fT0ChEhISERCoMBAgODFwgM7e3t9gQJEhL09PsBAP38+////v8A/YIHDg4OAvrw4uKDHP/////7+/0ACf7t7e0KEhkZGRkQDuLi4u/6Aw4Og4EPBwoAAQUFBQv47Ozs7ezs9YIFAgQFBQQCggwECvv79gIUFBQOCgoGghv+/Pv7/P4AFBQC9vv7+/8ACg4UBQUK/uzs7P0KgwCAAgAMAAUAAQACAAAAgAAKg4WFhYACAAwASQABAEgAAAAk7eng4PTq6hIS6urs6uDg6O3t7Ozs7O0BCxQUFBQLAfTq6urq9YOBAwkO4uKDBAoeHvL4gxEF+/8A3d3s9QoUIyMjFgr16t2DJBkZHR0uHR3m5iIiHy4dHRgZGRkZGRkZAfLd3d3d8gEPIiIiIg+DgQEGDoUACoEB8vuCEvn2CwYANDQfCvbhzMzM4/YKHTSDgAIADAA8AAEAPQAAAB3+BA4UFBQUDgT++vHuFhkL/vXs7Ozs9f4LGRbu8fqDgQT/+vYKBYMA/4ELDyIiIhQJ9uze3t7xgQABhB3/+O3n5+fn7fj/DRsc4ODw/w0jIyMjDf/w4OAcGw2DgQUFCQr29/uCEfjx8d/Ozs7j9QodMjIyHw8PCISAAgAMAAUAAQAFAAAAgAAIg4WAAP+DhQCAAgAMAAUAAQAFAAAAgAD+g4WAAP+DhQCAAgAMAGMAAQBjAAAAMAMDDQ8SEhIIBQX29PLt6urq9f7+BA4UFBQUDgT++vHuFhkL/vXs7Ozs9f4LGRbu8fqDCAj09PT3+gEFBYEHAQMFBQIECAiBBP/69goFgwD/gQsPIiIiFAn27N7e3vGBAAGEA/Dw+v2CKfr19QUHDBUdHR0SCf/47efn5+ft+P8NGxzg4PD/DSMjIyMN//Dg4BwbDYMG6vn5+fr5/4EJ9vb8/fz48/Dq6oEFBQkK9vf7ghH48fHfzs7O4/UKHTIyMh8PDwiEAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwASQABAEgAAAAkExMUFBQUFBMXICAWFBYW7u4WFgwgIBf/CxYWFhYL//Xs7Ozs9YOBAv/7BYME+PIeHgqDEuLiDgkA3d3q9QoWIyMjFAr17N2DJOfm5+fn5+fn5+Pj0uHe3hoa4+PS4+Pn//De3t7e8P8OIyMjIw6DgQMGC/b5ggH78oEACoUQDgYANDQdCvbjzMzM4fYKHzSDgAIADABfAAEAYgAAABEBAwgKCgoICAkRHysvJCQZDQSBAxkT7f2BFOng8vb29vr+AQwZGRkRBgHz5+fn84OCA/8AAQGCCvXm39/j+gsWFOz4gRfr7BQJGAL59vn9AOLi8gEIFh4eHg8A8eKDLgH36uLi4uDd2uDq8/bu8/Hh7fX12dwbECAgJg0fHh4eGAsB8+Li4ur3AQ0eHh4NgxQKCg0RFRQUFBQUDAH7+/X2CfMHIAmBFxYM8wAsHB0cFQ0KNzcjFAn68fHxBRQjN4OAAgAMAEgAAQBGIAAAgCcK4t0iHxsbGxsfIis0NCooKioCAioqIDQ0Kw4aKioqKhoOAvPz8/MCg4wE+fIeHgqDEuLiDgcA3d3u+gURIyMjEQX67t2DFxYBAgECAQEDAgEBAQECAwEBAQIDAQMDARb7D+fp6enn3t7N3NkL3s3e3v/Z2f8bG4IFBQv3APnygQAKggcOByoK99b3CgCAAgAMAFEAAQBOAAAAKBMTDw8PDxQTFyIiGBYYGPDwGBgOIiIX/wsYGBgYC//15+fn5/UKCvb2g4EC//sFgwT48h4eCoMW4uIOCQDd3er1ChYjIyMUCvXs3RDy8hCDJufm4uLi4ufn5+Xl1OPg4Bwc5eXU5eXn//Dg4ODg8P8OHh4eHg729oWBAwYL9vmCAfvygQAKhREOBgA0NB0K9uPMzMzh9gofNPGBAPGDgAIADABKAAEASgAAACMBBQ4UFBQUDgUB/fLs7Ozu7u74AQUOFe3n9xISEggB+O7u7haDgQX9+PYKBwKCGAIHCgwM9u/g4ODx+/v9APIKER8fHxIK8/ODIwH57efn5+ft+QEJExkZGR4eHg4D8t3dFg0D4uLi9AENHh4e5YOBBQMHCvb4/YIY/fj28/MKFycnJxoKCgcABPjq2tra6PYEBoMAgAIADAAFAAEAAgAAAIAACoOFhYWAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAQAAQACAAAAAPyFhoaGAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAcAABAHAAAAA2AxEkJCQjKB8MAQUMEREREQwFAf307+/v6+vr+AEFERjw7fsG+wH+/v77+v7+FRUVCAH46+vrA4MHCAj++/v/BQOCBf349goHAoIiAgcKDAz27+Dg4PH7+wMLCv8A9vb19vb2CAUKER8fHxIK8/ODNvPt6urqDTEzGQH56+Tk5OTr+QEJFRwcHBsbGw4D8uDgGRQXHfoJERERCwgREeXl5fQBDRsbG8eDB+rq8vsHHScYggUDBwr2+P2CIv349vPzChcnJycaCgoPEg/t9wIKERcXF+ok+Ora2tro9gQGgwCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAEoAAQBKAAAAI/8ECw8PDxcXFwf//OzmDhQJ//z18fHx8fX7/wgXFxfl6enp94OBDf759vT0ChEgICAPBQUDghADBwr2+f4A4eHu9g0NDvbv4YMj//fq4uLi5+fn8f0OHR7l7v3/CBYeHh4eFgj/8+fn5xYZGRkLg4ENAwcKDQ326dnZ2eb29vmCEP349goHAwAoKBgK/Pz+ChgogwCAAgAMACoAAQAqAAAAExQUCgoUFBQH/PT0/PXs7Oz09Ozsg4AFJCT//w8JggglJSUYD///JCSEE+fn9fXn5+f+CwsLEBsjIyMLCyMjg4AFwcH29uLuggjQ0NDU3fb2wcGEAIACAAwAXAABAFsAAAAsDQ3vABcXFxUVHR0VEBMRERERExAVHR0aFhbv7+/z8P8LFhYWFgv/9enp6en1g4AP29vb8gXs+/sZEQUFBQP/BIMD9OwKCoEBBf2BDeLi7/oKFiMjIxQK+vHigyzw8Nzc4uLi4tHj4+Xk5uTk5OTm5OXj49Hj3hsbG/vi//De3t7e8P8OICAgIA6DgBAmJiYqJ/b7+w8E+/v7AAX1+YIB9+yDASISgQ0vLxgF9uPMzMzh9gUaL4OAAgAMAAUAAQAFAAAAgAAIg4WAAAiDhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAC0AAQArAAAAFhIS6urq7uPj7fDu7u7uFhYWCgD26urqg4IEHhkZ8vWCAf79ggUPISEhEwqEFubmIiIdNh0dHx4bGhoa3t7e8P0NIiIig4UB8veCAfbxgQbs3MrKyuH2hACAAgAMAAIAAQACAAAAhISEhACAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQAFAAAAhYWAAAWDhYACAAwADAABAAwAAAUEAQICAgIEChAK6OwE2yUA2wAE8ezxHgUENssANgAAgAIADAAFAAEABQAAAIAACoOFgAAFg4UAgAIADAACAAEABQAAAIWFgAAFg4WAAgAMAAIAAQAFAAAAhYWAAAWDhYACAAwAAgABAAUAAACFhYAABYOFgAIADAACAAEABQAAAIWFgAAFg4WAAgAMAAIAAQAGAAAAhoaAAQUFg4YAgAIADAACAAEABQAAAIWFgAAFg4WAAgAMAAIAAQAFAAAAhYWAAP2DhYACAAwAAgABAAUAAACFhYAABYOFAAIADABPIAEAUiAAGRgAAQEBAQEBAgEBAgEBAgICAgICAgICAgMBGPsJHBwcIhnz+fb28/L2ChAK6OwHDQf58/kYCAj++/0FAP8A9vX29gjbJQDbAAb+9PQCBhoZAAEBAgEBAQEBAQEBAQECAgICAgICAgICAgIZ+vTx8QcLFgEQGBgYEg8Y8ezxHgX98v0NGA0Z6uryAQwBAe33AgoRFxfqNssANgD0AxAQA/QAgAIADAACAAEABQAAAIWFgAAFg4WAAgAMAAUAAQAFAAAAgAAJg4WAAAqDhQCAAgAMAB4AAQAeAAAADQoKEBkdHR0JCfX19QcQg4AG2tra4uslJYEB6/OFDfv7GgXs7Oz7+ygoKCglg4AGOTk5Iw7GxoEBCQSFAIACAAwABQABAAUAAACAAAmDhYAACoOFAIACAAwAGwABABsAAAAMEhLq6gQQ5eXmEwPq6oOCAfLygQABgQETE4QM5uYiIgLVFTUV1AAiIoOCARMTgQD5gQHj44QAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAISEhIQAgAIADAAgAAEAIAAAAA72+QMKCgoUFOLi4ur29vaDgQT58OwlJYEE7OLb29uEDg8F9ezs7Pv7KCgoIx4PD4OBBAsdKMvLgQQoLzU1NYQAgAIADAACAAEABQAAAIWFgAAUg4WAAgAMAAIAAQAFAAAAhYWAABSDhYACAAwAAgABAAIAAACFhYWFAIACAAwABQABAAUAAACAAAWDhYAAFoOFAIACAAwAJgABACgAAACDDvb5AwoKChQU4uLi6vb29oMDCvH2D4EE+fDsJSWBBOzi29vbhIEQCgoPBfXs7Oz7+ygoKCMeDw+DgAI8AMSBBAsdKMvLgQQoLzU1NYQAgAIADABNAAEATwAAACcNDerq3urp6uzp7PIJ5/j39ff18/PzFRUVDAf/9PT0DAwMBQD77evrg4IC9/cBgwQQH/f3AYMBCQ2BBgYPGxsbDQWBBgYOGxsbDgWEJ+joDw8VEBAVExAODhcJExMUFhQZGRnr6+v0/QUQEBDx8fH8BQ4WFhaDggPy8vz9ggX6+/Ly/P2CAQMCgQb37N/f3+v2gQb369/f3+v2hACAAgAMACsAAQAqAAAAFRIS6uru4+Ps8O7u7u4WFhYKAPbq6uqDggMKCuzyggH+/YIFDyMjIxMKhBXm5h0dNh0dHx4bGhoa3t7e8P0NIiIig4QB8veCAfbxgQbs3MzMzOH2hIACAAwABQABAAIAAACAAAqDhYWFgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAA8AAEAOwAAAB4FBe8CGBgYGAoA9ujo6BAQ6Ojs4eHs8O7w8PDw8PDvg4AD29vb7oEFDyEhIRMKgwMKCuzyggP+/QD/hh4GBgP04ODg4PD9DSAgIOTkGxs0GxsfHhscHBwcEgL5g4ALPz8/Khrs3MrKyuH2hQHy94IE9vEKCQSFgAIADAACAAEAAgAAAIWFhYUAgAIADABDIAEARAAAABUUAAEBAgEBAQECAQIBAgIBAQMDAQMBgBMHDxQUFA8H+fHs7PEAChQU9uzs9RT+/v30DAcCAgICC/T92trqFiYW6tqAHvnt5+fn5+35AAgTGRkZGRMIAPHd3d3d8QAPIyMjIw+DH/7+AwcI+Pj9AgIC/fj3CAcD/jAwHQj45NDQ0OT4CB0wg4ACAAwABQABAAIAAACAAAqDhYWFgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIaGhoYAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADABZIAEAWgAAAB0cAQEBAQECAQMBAQECAQEBAQIBAgECAgEBAwMBAwEc+vv+BQXi4vYABw8UFBQPB/nx7OzxAAoUFPbs7PWCGQoPABQe/v799AwHAgICAgv0/dra6hYmFuraCuHh+/v7+/soKCgSgR757efn5+ft+QAIExkZGRkTCADx3d3d3fEADyMjIyMPgwDdggABgiMF893d/v4DBwj4+P0CAgL9+PcIBwP+MDAdCPjk0NDQ5PgIHTCDgAIADAAFAAEAAgAAAIAACoOFhYWAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAGYAAQBoAAAAMgEPIiIiJyUfEwYABw4RERERDgcA+fLv7+/v9fz5//z8/Pn4/PwAChcXFxcJAPbp6enp9YMICAj++/0EBAMBggT/+vYKBYQcBQn2/QQE/wD29vX29vYI3Nzs9goUJCQkFAr27NyDMvPt6urqEzY3IwkA+ezk5OTk7PkACBQcHBwcGBr6CBEREQsIEREA8eDg4ODxAA8gICAgD4MI6ury+wgjKSANggUFCQr29vuCHfv29QoQDQrt+AIKERcXF+oyMh8K9uLOzs7i9gofMoMAgAIADABEAAEARgAAACMYEujvAAcOEREREQ4HAPny7+/v7/L6AAkSEhISCAD47u7u7veDhQT/+vYKBYQTBQn2+v8A3Nzp9goWJCQkFgr26dyDI/byCg8A+ezk5OTk7PkACBQcHBwcFAgA8+Xl5eXzAA0bGxsbDYOFBQUJCvb2+4IU+/b1CgkFADIyHQr24s7OzuL2Ch0ygwCAAgAMAAUAAQACAAAAgAAKg4WFhYACAAwAAgABAAIAAACFhYWFAIACAAwAfQABAH0AAAAB+v2DCwEA//8CBAIFCQgDAYIq8PDwAQ0cLCwJDgsGCAcEAgMB/fv5BRUVFRUF+e7e3t7e7vAjIyMVCv/w8IOBA/r1CAOCBf78+vr8/oIJBAoKCvbt39/f8oEAAYIdAQQFBQQBAN/f7fYKEyEhIRMI9ezf8/MKEyEhIRMKg4AAAoMLAgD9+/z+AgMDAgD+gioODg4D+vbp5QMNCQACAwMC/vz7/Qf+8vLy8v4HER4eHh4RDuLi4vD6Aw4Og4ED/PYKBIIFAgQFBQQCggEECoEI9gMUFBQQDw8Kgh3+/Pv7/P4AFBQD9gr+7Ozs/Qr2AxQHBwr+7Ozs/QqDAIACAAwASgABAEoAAAAlEhLq6vTg4Ofs7Ozs7Ozr6+zm4ODq7OrqAAoUFBQUCgD06urq6vSDggMeHvL3gwIF+/6DEwkO4uIUAN3d7PYLFSMjIxcL9urdgyXm5h0dLh0dGBgYGRkZGRkYGBcdHS4fIiIA8d3d3d3xAA4iIiIiDoOEAfL6ggT49QoIA4IBBQ6BD/YANDQfCvbizMzM4/YKHTSDAIACAAwAUgABAFAAAAAoFxfv7/Lu5eX57+8XF+/v8e/l5e3y8vHx8fHyBhAZGRkZEAb57+/v7/qDAPaBAPaBAwkO4uKDBAoeHvL4gxEF+/8A3d3s9QoUIyMjFgr16t2DKOvrIiIeHiIiMyIi6+snJyQzIiIdHh4eHh4eHgb34uLi4vcGFCcnJycUg4AB9/eCAQYOhQAKgQHy+4IS+fYLBgA0NB8K9uHMzMzj9godNIMAgAIADABJAAEASQAAACQWFhQWICAXExQRERERExMXICAMFhbu7v8LFhYWFgv/9enp6en1g4AE9uLiDgiDAfsFgwP38h4egg3d3ev2CxcjIyMVC/bt3YMk3t7h0uHh5+fn5OTk5Obn5+Hh0uPjGhr/8N7e3t7w/w4gICAgDoOAAPaBAQ4FggMHCvX4ggH68oQNNDQdCvbjzMzM4vYKHzSDAIACAAwALAABACoAAAAVEBDq6uHn6PPw8fDw8BMTEwf98+jo6IOCAwoKEQGCCgECBQUKEyEhIRQKhBXj4xcXKBoaHyImJCQk3t7e7P0LHx8fg4QBAQGCCv/47Oz24s/Pz+P2hACAAgAMAAUAAQACAAAAgAAKg4WFhYACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAXgABAF4AAAAs9fsBAwPb3e31DhAcHBwYGvkEBQUFBvf79/bzGxsH+/fy3t7e7PQT+fPz8/kOgwP+/gACgSby29vb2+n1/RAPEg4RCAICAgICAgQEESUlJSUTCgPx8O3y7fj9/v6DLPru29PYFA4E+vzw5+fn8PYA6tvb2+v39w0lG9/l7vf3BRISEgkA+woeHh4L/IMs/v4GEhkZHiMjIyMWDQP18+/u7/X7AgICAvTp6ePd3d3d6vcCCgwPEA4JAf7+gwCAAgAMAAUAAQACAAAAgAAKg4WFhYACAAwAAgABAAIAAACFhYWFAIACAAwAhAABAIQAAAA/BQUPERQUFAoHB/j29O/s7Oz3APX7AQMD293t9Q4QHBwcGBr5BAUFBQb3+/f28xsbB/v38t7e3uz0E/nz8/P5DoMICPT09Pf6AQUFgQsBAwUFAgQICP7+AAKBJvLb29vb6fX9EA8SDhEIAgICAgICBAQRJSUlJRMKA/Hw7fLt+P3+/oM/8fH7/gEBAfv29gYIDRYeHh4TCvru29PYFA4E+vzw5+fn8PYA6tvb2+v39w0lG9/l7vf3BRISEgkA+woeHh4L/IMG6vn5+fr5/4E29vb8/fz48/Dq6v7+BhIZGR4jIyMjFg0D9fPv7u/1+wICAgL06enj3d3d3er3AgoMDxAOCQH+/oMAgAIADAACAAEAAgAAAIWFhYUAgAIADAAFAAEABQAAAIAAC4OFgAALg4UAgAIADABbAAEAWwAAAAwSEhIPCAL/9vDw8PL5gR389vHx8fX39vr6ABMeHh4SAAQEAg0cHBwQAvfq6uqDgAIJBgKCDfz6/Pn29PPu7fH6AP3+ghPb29rm9QQRERHw8PD8CRQlJSUUCYQs4ODg5/L5BRUfHx8cEwoKDxgeHh4WB/0LCwL25ubm9AL//wL05ubm8PgBDQ0Ng4AC7vP7gg369vf1+f79/f39/wEA/4ITKysrFwr97+/vDw8P+e3g1dXV4u6EAIACAAwAGgABABoAAAALDw8P/O7x8e3r5+fng4ABGA+CBCMjIx0ZhAvi4uL6EBkZGhseHh6DgAHS6YIEzs7O0dOEAIACAAwAFwABABcAAAsKAAEBAQICAwICAgKACQgUFA8U7PHsAPGBAvTsJYEDJezbAIAJ8+Li7OIeDx4PD4ECFCPLgQPLIzUAAIACAAwAHAABABwAAA0MAQIBAQEBAgIDAgICAgwJ9gAIFBQPFOzx7ADxAfYWgQL07CWBAyXs2wAM8Q8A8+Li7OIeDx4PDwEV7YECFCPLgQPLIzUAAIACAAwAKAABACwAAAAWEgjv7wAIFBQUDw8UFOzs8fHs7OwA8fGDhQP07CUlhQUlJezb29uEFgj+HCYA8+Li4uzs4uIeHg8PHh4eDw8Pg4AB//+CAxQjy8uFBcvLIzU1NYQAgAIADABLAAEASwAAABEFBQ8RFBQUCgcH+Pb07+zs7PeBEQgUFBQPDxQU7Ozx8ezs7ADx8YMICPT09Pf6AQUFgQcBAwUFAgQICIED9OwlJYUFJSXs29vbhCXx8fv+AQEB+/b2BggNFh4eHhMKAPPi4uLs7OLiHh4PDx4eHg8PD4MG6vn5+fr5/4EJ9vb8/fz48/Dq6oEDFCPLy4UFy8sjNTU1hACAAgAMAAIAAQACAAAAhYWFhQCAAgAMACUgAQAmAAAACwoBAQECAQICAgIBAgoGEhLq6vULFu7u+4AJ/PoA+t7e+gD6ABEB8ebm5iIiIg4B8t7e3hoaGhCDgQEHDoEGDx8zMzMfD4EBDgaEgAIADAAFAAEAAgAAAIAACoOFhYWAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQAAAgAMADcgAQA3IAAREAACAQICAgIBAQECAQICAgIBEBLq6vULFgEECwvo6OXu+wYSBfoA+t7e+oEFCg8AFB76gQD8ERAAAwEBAgEBAgIBAwICAQECARDmIiIE1ba29vb2IwTy8vPn5g0JBhozMxoGAAEABd0JA4EAA4ACAAwABQABAAUAAACAAAqDhYAA7IOFAIACAAwAAgABAAUAAACFhYAA7YOFgAIADAACAAEABQAAAIWFgADsg4WAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQAFAAAAhYWAAOyDhYACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwATwABAE8AAAAlAQ8iIiInJR8TBgAKEhIS6urq9QAKFhYW7u7u9fz5//z8/Pn4/PyDCAgI/vv9BAQDAYIB/faBBvbs3Nzc7PaBDPb9BAT/APb29fb29giDJfPt6urqEzY3IwkA9Obm5iIiIg8A8d7e3hoaGhga+ggRERELCBERgwjq6vL7CCMpIA2CAQkKgQYKHzIyMh8KgQwKEA0K7fgCChEXFxfqgwCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMABkAAQAYAAAADB4V7f/9/v////8T6+KDggbY3uDg4N7YhgTg5CMFAoIE/freHCKDggY9Qj06PUI8hoACAAwAPQABAD0AAAAeFA/v/P3+/v7/ABPvAgQEBAQCAw7x7xAGBgQCAP3984OCBu3t4d3h7OyBBuzs4d3h7e2DBgsKFRsVCguEHt/nDwACAgIDBQf4Cvn7/f7+/v/wGSTxAwMDAgD+/xODggZaTy4kLk5agQZaTi0jLlBagwa6utDa0Lq6hACAAgAMAAUAAQACAAAAgAAKg4WFhYACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwALwABADMAAAAEGRoZ6gKCDwICABbn5ucXAAH////+AOmDgAD/gQbi5evs6+bihAYeHBUTFRwehBTo4+km/f7//wACAtgWHRjbAQD+//+BACaDgAACgQY8OjQyNDo8gQADgQbO0dPU09HOhACAAgAMAB0AAQAdAAAADRUVFenx9f8AAgoOFevog4AABYEG9uvi4+Ls+IYN6+XjIvX3/v8ABwriHSiDgAD5gQZkWjw0PFpkhgCAAgAMAAUAAQACAAAAgAAKg4WFhYACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAUAAACFhYAAD4OFgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEABQAAAIWFgAAPg4WAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAA4AAQAOAAAGBQEBAgIBAgUNHQ7x5vMF1CUAK9sABezI7hQ+FAUo0ADYMACAAgAMAAUAAQACAAAAgAAKg4WFhYACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACFhYWFAIACAAwATwABAEwAAAApCgoKCgoEAP349gUHBgD9+/v7AAIFBQUB+woK+/r29vb7AAMKCgoKCgoDg4MEBAoKCgWBAP6CAP+DD////v///wkJCQP/+/b29vyDAAGEC+zs7Ozs9gAHExT2+YEbAwoKCvb39vb2/QDs7AAKFBQUCgD17Ozs7Ozr8IODB/fs7Oz0+/v7ggD/gw8BAgIEBAT6+voABAsREREJiQACAAwALiABADQgAA4NAQIBBAIBBAIBAgICAQINAwYG/fr6BQoKBfv29vuADPYPBQ/29vYPDw8P9vYQDwEBAQEEAgEBAgMBAQICAQEP9+zs7AkUFBQA9vb2AAoKCg8FEBX2BfYVECMV9vDn8PYVgAIADAACAAEAAgAAAISEhIQAgAIADAArIAEAMgAAAA0MAQICAQECAwEBAwEBBAwQ8ugB+/L1+wEOHR3ogAUl6enp8/2BA9vo9Q4X5OQcHBsbBAoWHh4eFgoFGwX15eXl9QUbg4IJxsYQEBAOCwkHA4EIKysrGAf25eXlg4ACAAwAAgABAAIAAACEhISEAIACAAwACAABAAgAAAMCAQICAgr24oABJQAC8QUtgAHGAACAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAkAAQAJAAAEAwECAgIDChn24oEBJQAD8ckFLYEBxgCAAgAMAC8AAQAvAAAAFhcXDA8WGxse5eXn5woK9PTjDQ369fTog4AF4ODe3uPqgQHg4IQG4OAjI+rm4YMW/f3v7/Dw7+4NDQMDx8c5OSTb2yIjIyODgAUzMzEsKSqBATMzhAYzM9DQKzI1gwCAAgAMAAIAAQACAAAAhISEhACAAgAMAAUAAQACAAAAgAACg4WFhYACAAwALwABAC8AAAAVERMQ5vIPD+/vCxnu6e4WCe/vDw/16YOAAAOBAfb2gQH29oEABIEBDAyBAQwMhBX+2PoV+/HxCwsB6gIiAucBCxD28fwbg4AA+YEB9/eBAff3gQD9gQEBAYEBAQGEAIACAAwAXwABAF4AAAAuCg0UGx/38voKFB0dHRYKDw8LFRsbGxMK++zsFBQRDAr97+/v8vn+/vnz8PDw9gKDgRsCBAUF8d3d3ej4ChYWFvHx8fMCESQkJBgKCggEggz4+Pb29PPu7e/1+vn8hC4KAvjz8y8tGAr35eXl+wr7+wsA7u7u/gsfMSru9AAMERYdHR0ZEAgIDRccHBwXD4OBFwIGCgocMjIyHw385+fnHBwcBfPhzs7O64EBAQGCCwIJBgQDAgICAwUIBIWAAgAMACgAAQAjAAAAERMT7Ozs7vLzH+3tFBQUEg8O4IOCQf9q/3UCmL/Og0AAlgN5TzYyhBHi4g8PDw0LCuceHvHx8fP29xmDggRaXFNEPIMEkpCfuMSEgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAIWFhYUAgAIADAAgAAEAIAAAAA8FBRELERER8PAYGOrp6vMMg4AE3t7e0KaDAyQkpt+FD/v7B/Xw8PAcHODgKissEAyDgAQzMzMc6IMDxsboAoUAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAAJAAEACQAABAMBAgICAxDwGOiBASUAA+Qc4CCBAcYAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAAbAAEAHQAAAA0SExLp8PD5/gMMDRru64OAAAKCBAH28PYBhw3i4+cnBP/8/f369t4ZH4OAAPyBBjxGRUBFRzyGAIACAAwAAgABAAIAAACFhYWFAIACAAwAVQABAFUAAAArEREODAwMDAwMDhER7+/y9PT09PT08u/vEREH9erq6ur2CO/4ChYWFhYL+O+DggX9+/oNCQSFBQQJDfr7/YIT4R8fGA8N+vbq4eHh6vb6DQ8YHx+DK+7u7ero6Ojo6+7u7hISExUYGBgYFhMSEvT0/wwTExMTDP8MAfTt7e3t9AEMg4IFAwkL+vv+hQX++/oLCQOCEyjZ2eDu+gsVIigoKCIVC/ru4NnZgwCAAgAMAAIAAQACAAAAhISEhACAAgAMACkAAQAkIAAAExkaFA4TCg8PD+fn5/YOCRIZGfHxg4AGHR0dHR0RCoEGCgL6+vr6+oYLCgEBAQEDAwMBAQICCt3e6/bnIwr1390ZCPr6+voACTExMYGAAgAMAA0AAQASIAAGBQECAgICAgUPEOgX7/GBA90A3QAFBAECAgICBNHkINENgQI8ADwAgAIADAAOAAEADgAABwYAAQICAgICBgoM6AvzF/SBAucA54EG5ugP7w/wGIECIAAggQAAAgAMABggAQAYIAAHBgECAgICAgIGFAzrDPYX9oEE3wDfAN8HBgECAgICAgMG2ucH4v/aDIEEGAAYABiAAgAMAAsAAQALAAAGBQECAgICAgUSEO0T8O+BAOCCBeLkIOAcHoEAOoKAAgAMAC4AAQAuAAAAFRAQ6Ojs7Onn5+fp7Ozo8QEREREB8eiDggf29vb4+vv7/oEI29vb7PsKGxsbgxXk5CAg7PkLFBQUC/nsIPHo29vb6PEgg4IHDw8PDgsIBQGBCDAwMBkH9t/f34MAgAIADAA0AAEANAAAABcFBQ8P3d3s7Onn5+fp7Ozd8QEREREB8d2DgAEgIIEH9vb2+Pr7+/6BCNvb2+z7ChsbG4MB5+eBEyMj7PkLFBQUC/nsI/Ho29vb6PEjg4AB2tqBBw8PDw4LCAUBgQgwMDAZB/bf39+DAIACAAwAMgABADIAAAAZDw/t7fv5+vr6+vj77fsKHh4eHgr77RMT8fGDggb29vb09gEDgQne3t7xAPYFGBgYhxnn5xAQAP76+vr6/QAQAOzY2NjY7AAQ8PAZGYOCBg8PDw8OAQGBCSQkJBABDP3r6+uHAIACAAwARgABAEcAAACBHwcOFhYa8/P7+PHx8fH4+xER/fn5AQrz+wYPDw8PBvvzg4AE4uLi3tyBBvb29vr7+/yCAx4e3O6BCeLi4u77+wgUFBSDIfv7/f4BAQMjI+z8CgoKCvzs+/sqKioXCiPs6eLi4uLp7CODgAQjIyMXC4EGDw8PAvAeDYID3d0LCYEJIyMjHh/u8Ozs7IOAAgAMAD0AAQA9AAAAHQkJ6+sREfPz9vPx8fHx8/YREevr8/YBDw8PDwH284OCAfb2gQb29vb5+/v9ggwUFADi4uLv+/sGFBQUgx3z8xsb+/sjI+z7CgoKCvvs+/sbGyPs6OLi4uLn7CODggEZGYEGGRkZCvoeD4IM9vYAIyMjIB/4+Pb29oMAgAIADAACAAEAAgAAAISEhIQAgAIADABHAAEASSAAACMCBw0PDw8PDQcC/vv6+iIiDgL35+fn8fHn5+f3Ag8iIvr6+/6DggT79goFAYIB//+BDw8jIyMTCe7uExP27N3d3fKCAAGEFxYBAQEBAQEBAQIBAgICAgECAgEEAgIBARb56+Li4uLr+QgWIOQAHh4KHh7y5CAWCIAFBQkK9vf7gQ389uTO4/Ua5QoyCggEAACAAgAMAEcAAQBJAAAAIwMGCgsL4+P1Aw8eHh4UFB4eHg4D9uPjCwsKBgP9+Pb29vb4/YOBAAGCD/Ld3d3s9hMT7u4JEyMjIw+BAf//ggQBBQr2+4WAIvjq4OAcHA0A8uLi4vb24uLi8gANHBzg4Or4AAcVHh4eHhUHg4EXBAgKCh0yMjIdCuXlGhr1487OzuT29vj8ggX79/YKCQWEAIACAAwAAgABAAIAAACEhISEAIACAAwAAgABAAIAAACFhYWFAIACAAwAAgABAAIAAACEhISEAIACAAwALiABADIAAAAODQECAgIBAgMCAQEBAQIBDRQA8ewLBuwUFBQSEwvsDSIAIuIDAB4AKCEhIR8AAfb2gRMoKDIyMCEXHicnKOzr6/kFFycyMoOAAcPDgQPDwxgVggHx5oEG9d/Kysre7IQAgAIADABIAAEASAAAACP9BAwMDO3tEBDt7QwMDAX99Orq6ur0/QINDQ0NAv347e3t7fiDgQP07BUVgwPt7RQLghIMFOz0AN/f6OwUGCEhIRgU7OjfgyMDCAwMDBQU7OwUFAwMDAkDBQoKCgoFA/Li4uLi8QMVJSUlJRWDgQP89vPzgwMMDAsEghIGC/b8ACAgBuwV+uDg4PoV7AYggwCAAgAMADEAAQAxAAAAFxAiGAsLCwgFBPHxGRn74gQZGQTy4ODg84OABQwDAwgHBIQLFBQA8fEjIyMWCv7xgxft3ubt7e32BxMdHeLiECYT4uITGSYmJhqDgAXs8Pf0+f+EC97eABAQzs7O4e36EIMAgAIADABBAAEAQwAAAA8HB+sAFBQUFBITDwvs7BQUgQ7x8ezsCwgF+uzs7Ozs7OuDgArb29vuACghISEhH4IBIiKBAyIi4wSCAxAeAP+GDxkZDwDs7Ovr+QUXJzIy9vaBDigoMjIwIRceJycoKB4OBYOACz8/Pyoa9d/Kysre7IEBw8OBA8PDGBWCBPHmCgkEhQCAAgAMAAIAAQACAAAAhISEhACAAgAMAEQAAQBEAAAAgB8KDw8PDwoA9/Hx8fH0+wAKGBgY6Ojo9egYGBgJAPfo6IOBA/z1CgOCFwMK9fn+AN3d6/UQEPXr3e3tChQjIyMUCoOAH/Di4uLi8AAQHh4eHhcKAPfr6+sVFRUIFevr6/cACRUVg4EDCg7y9YIX9fIODAYAMzMnE+joEyczFRXs2c3NzdnsgwCAAgAMAAIAAQACAAAAhISEhACAAgAMAFMAAQBTAAAAKAEEDw8PDwcA8fEA9ufn5+fn5urx8/Hx8fH2/QELGRkZGQsB9efn5+f3g4ED+/sUDIIIKCgoHBQDA/T6ghMEAPv7/QDd3e/7AA0gICAJAPvv3YOAJ/Pi4uLi8gAZGQAPHh4eHiAeGx4eHh4eHhUIAPLi4uLi8gAPHh4eHg+DgAICBAWEH8nJyeYA+/sB/v////36BQUA/zIyGwX65c3NzeT6BRsygwCAAgAMAEUAAQBFAAAAIRAQBvr39/f7/v759PT0+APqAwkbGxsJA+rqBg4eHh4NBuqDgwT/BAMCAoEC/PsBgRHe3t7x+QIVFRX09PQDChIiIiKDB+Pj7v0WFhYKgRcLFxcXBPge8ebe3t7m8R4e7+fe3t7m7x6DgwL8/P6BAQICgQABgREbGxsUCgH7+/sFBQX+9e3m5uaDAIACAAwACAABAAgAAAMCAQICAg/754ABJQAC8QotgAHGAACAAgAMAAUAAQACAAAAgAAKg4WFhYACAAwACQABAAkAAAQDAQICAgMPHvvngQElAAPxzgotgQHGAIACAAwALQABAC0AAAAVDw8QEA4ODu/v8fEUFOzs6BcX6+np6YOABODg5+PNgQHg4IQG4OAjI8/f5YMV+Pjq6urq6RcXDQ3R0TQ0IOXlHh8fIIOABDIyMiMTgQEyMoQGMjLPzxYrNoMAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAIWFhYUAgAIADAApAAEAKQAAABURExHu9xAQ8PAJEe/t7xQG8PAQEPjrg4MB9vaBAfb2hAEKCoEBCgqEFfHi8RwN8/MNDfXrDx4P6/MNDfPzDB2DgwH7+4EB+/uEAQUFgQEFBYQAgAIADABkAAEAXgAAAIAuBBYV6O30AAkOHh4eEQ4HBxEVISEhFgkGAO7u6BUX/AAG/fX09PT/Cgr38fHx/QmDL/39+/v77Nra2trt9v4TExPy8vL/BgoaJiYmJhkKCgsDAwMDAAEFAfn6+vvx+v/9/YMO/vnu7B4eDf4I+Ofn5/YIgR4F9ujo6O77BAgRISDu8fsIBAsXHh4eCwEBBB4eHhIIg4EcEB4eICUlJSUWDP7u7u4SEhIB9e3h29vb2+Tn5/aECQEC/Pf7CQ4FBQOFAIACAAwAIwABACMAAAAREBDs7Ozu8fMf8PAUFBQSDg3gg4IEztLY3N2DBDIvKCMihBHk5BISEg8LCdkcHO7u7vHz9SeDggQyNisYD4MEzsvO19yEAIACAAwAAgABAAIAAACFhYWFAIACAAwAGwABABsAAAAMEBDo6A4a7+/wHQ3o6IOCAfLygQABgQETE4QM5OQgIAzfHz8f3gogIIOCARMTgQD5gQHj44QAgAIADAAFAAEAAgAAAIAACoOFhYWAAgAMACIAAQAiAAAAEAoKEQkUFBbw8BgY7+vs7fsMg4AE3t7e27WDBCUludz5hRD8/Aj08fHxHBzg4CssLR0NDYOABDMzMxfegwTGxtjyAYUAgAIADAA+AAEANwAAABsQEOH//f3+/wD/IPDwFhYWFRQREeoU7Ozr6urqg4IGz9nk5OTZzoNCAK8AqACLAmZAL4ECMUNzQQCgAK+EG97eDQYGAf789vfzIiLw8PDx8/T2D+8FBw0QEBCDggYGAwkMCQMFgwwPA+zZy8b29sjM4P0PhIACAAwADgABAA4AAAYFAQICAgICBRDoF/AX6IAA74EBFAAF5CDgHOAggAAcgQHiAIACAAwAAgABAAIAAACEhISEAIACAAwACQABAAkAAAQDAQICAgMQ8BjogQElAAPkHOAggQHGAIACAAwAAgABAAIAAACEhISEAIACAAwAAgABAAQAAACEhAACg4QAAAIADAAQIAEAECAABAMAAgICAxQU7OyAAh0AHQQDAQICAgPi9goeA8MAwwCAAgAMAAIAAQACAAAAhISEhACAAgAMAAIAAQACAAAAhYWFhQAAAgAMADsgAQBDIAAUEwEBBAMCAQQBAgECAgEBAgEBAQECExAQDhDw8PLw8A796urq8gIWFhYCggABhAHkHIED8uTk8oEAHBUUAQMBAQIDAgEBAwICAgEBAgEBAQECFOvt7e3rFRMTExXwAxgYGBD86Ojo/IACBfr8gQ78+gUAL9L6BRgvLxgF+tKAAgAMAAIAAQACAAAAhISEhACAAgAMACkAAQAoAAAAExobHA76AhEREenp6er1AxYaGvLyg4AGCgsLCwwIBoEGBvTo6Ojo6IYT4uLm9Pjx5OTkICAgEQL05OLiHh6DgAbn6Ojo6fH2ggUOHh4eHh6GgAIADAANAAEAEiAABgUBAgICAgIFDxDoF+/xgQPdAN0ABQQBAgICAgTR5CDRDYECPAA8AIACAAwADgABAA4AAAcGAAECAgICAgYKDOgL8xf0gQLnAOeBBuboD+8P8BiBAiAAIIEAAAIADAAYIAEAGCAABwYBAgICAgICBhQM6wz2F/aBBN8A3wDfBwYBAgICAgIDBtrnB+L/2gyBBBgAGAAYgAIADAALAAEACwAABgUBAgICAgIFEhDtE/DvgQDgggXi5CDgHB6BADqCgAIADAAnAAEAJSAAABMREenp9vLx8fHz9un2BhwcHAb26YOFAv8AAYEI29vb8QAPJSUlgwsKAQIBAQEBAwMBAgMK5CD/ChQUAOja2iCACSUlJRsRADAiA/UAAAIADAAsIAEAKCAADg0BAgIBAQECAQEBAgECAQ37Ctj28/Hx8/bYAxcXAwAegwH/AYEE4OD0DSAMCwACAgIBAQEEAQICAgvsACj/ChQUKPba2vaACsQAJSUbETAwIgP1gAIADAAqIAEALgAAAA0MAQIBAQECAgEBBAIDAgwP7fz6+vr87fwY/BPxgAn4+Pj5/wDl5QcTgRfn5xAQAQEEBAQAARAB8Nzc3PABEPDwGRmDggUbGxsQCgiBCCsrKxkL//Dw8IcAgAIADABGAAEARwAAAIEfAgoSEhTy8vHx7Ozs7PHxEhL18fH7BfLx/wwMDAz/8fKDgATd3d3g54EG9vb2+/r8+4IDICDn8IEJ4+Pj7/z6CBMTE4Mh9fX3+vv7/BsbAgUKCgoKBgP5+SYmJhEEGwLy39/f3/ICG4OABB4eHhILgQYZGRkYFPz9ggPf3wYDgQkkJCQO/RUG9PT0g4ACAAwAPSABAD0AAAATEgECAgIBAQEDAQECAgEBAgEBAQISC+gT+vj38/P4+BPo+vgWFhYW+IAG9gD29vb7+4EIFgDh4e37+wkWHejoEBD6+iMjCQwRERERDAr6+hAQIwn56enp6fkJI4OCARQUgQYUFBQTEPv+ggzx8QAjIyMN/BID8fHxgwCAAgAMAAIAAQACAAAAhISEhACAAgAMAEQAAQBFAAAAIf4ECw8PDw8LBP768/AYGwv+9efn5/b25+fn9f4LGxjw8/qDgQT/+vYKBYMA/4EPDyQkJBQJ7OwKCvbs3Nzc8YEAAYQhBv/x6enp6fH/BhQkJenp9wYUJSUl//8lJSUUBvfp6SUkFIOBBQUJCvb3+4IV+PHx387OzuP1Dg7s7AodMjIyHw8PCISAAgAMAEQAAQBFAAAAIQIGDRDo5fQCCxkZGQoKGRkZCwL05egQDQYC+/Tx8fHx9fyDgQABgQ/x3Nzc7PYKCuzsCRQkJCQPgQD/gwQFCvb6/4QhAfPj4h4eDwHz4uLiCAji4uLzARAeHuLj8wEIFh4eHh4WCIOBFQgPDx8yMjIdCuzsDg71487Ozt/x8fiCBfv39goJBYSAAgAMAAIAAQAFAAAAhYWAAAWDhYACAAwAAgABAAUAAACFhYAABYOFgAIADAAFAAEABQAAAIAACYOFgAAKg4UAgAIADAA8IAEAOQAAABMSAAICAgIBAgEBAQECAwEBAQIBAhIJEur16urt9/jw7u4WFgsA6uoSBxDyAPIQABkMggf9AA8hIRMKAIEb5uYiIgoKIiIdHyIiHhsaGhre3t7w/Q0iIiLm5oMA8YUB8fGCAP+CAfbxgQbs3MrKyuH2gQDxg4ACAAwASAABAEgAAACADP8CAgLr6w4O6+sCAgKBE/309PT0/QAKFxcXFwoA9efn5+f1g4ED/AAQEIMD8PAAA4IAA4EE/ADn5/WBBAsZGRkLgQH154MjBvz7+/sICODgCAj7+/v9BgwUFBQUCwb47Ozs7PgGEx4eHh4Tg4ED/fzz84MDCgoFAoISAwX8/QAoKBL8Be7Y2NjuBfwSKIMAgAIADAAuAAEALwAAABYbFhQQEBAPC/DwGBjp6wsYGAv85ubm+4OAAAKBAAKFCwMDAOHhIyMjDgL04YMW9uHr9PT0AxIcHOHhGDYb4uIbIy0tLSKDgATt8vLs9oQL4eEAAwPZ2dnk7vcDg4ACAAwATwABAEkAAAAm7OwLFBgYGBgLAPbo6OgQEAkJEBDo6PX16Ojo7OHh7fDu8PDw8AILg4AL2tra4usADyEhIRMKgQMQEPLygQjy8hAQHhkZ8vWCA/796/OFgQ0O+eDg4ODw/Q0gICDk5IEU5OQgIAoKICAbNBsbHx4bHBwcHBwZg4ALOTk5Iw7s3MrKyuH2gQHx8YUB8fGCAfL3ggP28QkEhQCAAgAMAAIAAQACAAAAhISEhACAAgAMAEkgAQBKAAAAFxYBAQIBAgMDAQQBAQECAQEDAQEBAQEBARYFDA8PDPvx8QAKFxfp6ekXFxcJAPbp6YAV/vUKAQAJ9d3d6/UR9evzChUjIyMVCoAi+Ovi4uLi6/gACBYeHh4eFgkA9+/v7xEREQgR7+/v9wAIERGDgQUECAn39/yCGP349gkHAwAsLBsJ9vYJGywKCvfm1NTU5veDgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAAeAAEAIQAAAAcSHeLuFf3//4IDAujv74WEBjcvIR4hLjaBAd3dhBDn3CEZ2vP5/v7+BAojMzPPz4OEBt7IuLq4x96BATIyhIACAAwAAgABAAIAAACEhISEAIACAAwAAgABAAIAAACEhISEAIACAAwAAgABAAIAAACEhISEAIACAAwASQABAEsAAAAj+/sFBQAHDhEREREOBwD58u/v7+/y+gAKFxcXFwkA9unp6en1gwMU8PAUgQT/+vYKBYQTBQn2+v8A29vq9goWJSUlFgr26tuDIx0d4+MA+ezk5OTk7PkACBQcHBwcFAgA8uDg4ODzAAwgICAgDYMD4hwc4oEFBQkK9vb7ghT79vUKCQUAMTEdCvbkz8/P5PYKHTGDAIACAAwAAgABAAIAAACEhISEAIACAAwAAgABAAIAAACEhISEAIACAAwAGgABAB0AAAAGEh3i7hX9/oQCAQLog4QINy8kHh4eJC82hA7n3CEZ2vP4/v7+/v8ECiODhAjeyru6urq8yt6EgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAAOAAEADgAABgUBAgICAgIFBfsF+w/xgAQg4ADwEAXxD/EP8Q+ABMY6AB3jgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAAcAAEAHAAAAIEAF4MB19eBAdfWhYAC3gYigQciIiLxGd7e3oSBAN+DBUtKGhpPUIWAAjv+xYEHxcXGFec6OzuEAIACAAwAAgABAAIAAACEhISEAIACAAwAAgABAAIAAACEhISEAIACAAwAAgABAAIAAACEhISEAIACAAwAAgABAAIAAACEhISEAIACAAwANwABADkAAAAbEREODAwMDOrq6vYIERHv7/gKFhYW9PT09PLv74OCAv37+oEE+vbq4eGBBOHh6vb6gQL6+/2GG+7u7Ono6OgTExMM//T0DAwB9O3t7RgYGBcUEhKDgQMCBQoLgQQLFSIoKIEEKCgiFQuBAwsKBQKFAIACAAwAUwABADwgAACBFhQUFhseHh4eFwoB9+ni4uLi5ers7P//gQwHCgoKCgcB+/b29vb6hYAJ3d3n5eHd3Q0JA4IJAwkN3d3g5Obd3YEO5ubh4g0ZIyMjGQ3i4efnhBMSAAIFAQICAQECAQUDAgIBAgQBA4EH4ODpAAgXICCBBvTk5PQcHACAAzw89/2BC/33PDwAeDz3zvc8eIACAAwABQABAAUAAACAACODhYAA54OFAIACAAwABQABAAUAAACAACiDhYAA9oOFAIACAAwABAABAAQAAAAAKISFAPaEhQCAAgAMAAQAAQAEAAAAACiEhQD2hIUAgAIADAAEAAEABAAAAAAjhIUA8YSFAIACAAwABAABAAQAAAAAHoSFANiEhQCAAgAMAAUAAQAFAAAAgAAjg4WAAPGDhQCAAgAMAAUAAQACAAAAgAACg4WFhYACAAwABQABAAIAAACAAAKDhYWFgAIADAA0AAEAMQAAABgBAREUEBAQ7Ozs/hESEurqFxfs9ewYGerqg4AI3t7e293s7N3vggYBAfDwAQECgQESEoQG5OQA79LS0oIOBArl5SEh/NITMg/R/yEhg4AILi4uEgAdHfb8hAEeHoEAAoEB4+OEgAIADABGAAEARAAAACMTFA8PDw8TExciIg4YGPDwGBgYIiIX/wsYGBgYC//15+fn5/WDggH7BYMD9/IeHoMS4uIOCADd3ev2CxcjIyMVC/bt3YMj5+fi4uLi5ufn4+PU5eUcHOXl1OPj5//w4ODg4PD/Dh4eHh4Og4EDBwr1+IIB+vKHEA4FADQ0HQr248zMzOL2Ch80gwCAAgAMAFUAAQBVAAAAKRISEg8IAv/28PDw7/Hy8fHx9ff26urqABMeHh4SAAQEAg0cHBwQAvfq6oOAAgkGAoIK/Pr89+/x9fwA/f6DE9vb2+b1BBEREfDw8PwJFCUlJRQJgyng4ODn8vkFFR8fHxoTFx4eHhYH/Q0NDQL25ubm9AL//wL05ubm8PgBDQ2DgALu8/uCCvr29/X6/Pz9AQD/gxMrKysXCv3v7+8PDw/57eDV1dXi7oMAgAIADAAjAAEAIQAAABIUFBDo/Pf3+v///wMHBgIY8Ozsg4MK3ez07+np6e/07N2HB+Pj3x4CAP//gwYB/v3jIR8fg4MKOD0+Ozg4ODs+PDeHAAACAAwAQCABAFUgABUUAAIBAQEBAQICAgEBAQEBAwQCAgYEFAoMDw8SGycR9u7v/wH4+P8K4Pgg+AD+gwj++icAHgz67/iCA/LcBBobGgABAQIBAQEBAQICAQEBAgIBAwEDAwEDAQMBARri4uDb3t7j5fIPRxEbIiAYCuviF/jq4eoKFx8aCgYEBgYEAAPbANAcFhETBAADCSkyKQL28vYCAIACAAwAZAABAF4AAACALvcDDw8PCPb2AQwMDAsE+gAD6esYEhIA+vfq39/f7O/5+fLv4uLi8vcADBMY6+n8gy/9/f3/+vH7+vr5AQUBAAMDAwMLCgoZJiYmJhoKBv/y8vITExP+9u3a2tra7Pv7+/2DHwL47uLi4vz///Xi4uLp9vz4BA8S4N/u+PwFERgYGAr7gQ34ChkZGQj4AvLi4hQRB4OCCQMFBQ4J+/f8AgGEHPbn5+Tb29vb4e31ARISEu7u7v4MFiUlJSUgHh4QhACAAgAMAEIAAQBCAAAAHxAQCgUHFCMFBfb2LxDx6Ojo6PQFFv/s7e0VFRUWBgkQgwf17ufp9hAlJYENIlg0Cvjz9efd3d3d6wKBAAKDAPiDH+Tk5uXeybb09AkJDQ8VHSEhIRkX/A4ZGBnd3NzWGP3kgwcSFhgR/t7GxoEN0uTq9gYVHiUyMjIyJw6BAPqDAAeDAIACAAwAKwABACoAAAAVEhLq6u7j4+zw7u7u7hYWFgsA9urq6oOCAwoK7PKCAf79ggUPISEhEwqEFebmHR02HR0fHhsaGhre3t7w/Q0iIiKDhAHy94IB9vGBBuzcysrK4faEgAIADABIAAEARgAAAIAiBw4RERERDgcA+fLv7+/v8voAChcXFxcJAPbp6enp9ekbG+mDgQT/+vYKBYQXBQn2+v8A3Nzs9goUJCQkFAr27Nz5+Roag4Ae+ezk5OTk7PkACBQcHBwcFAgA8eDg4ODxAA8gICAgD4eBBQUJCvb2+4IY+/b1CgkFADIyHwr24s7OzuL2Ch8yGBjp6YMAgAIADAAgAAEAIAAAAA4DBhAXFxcPD+/v7/cD9vaDgQT58OwlJYEE7OLb29uEDgT66uHh4fHxHR0dGBMKCoOBBAsdKMvLgQQoLzU1NYQAgAIADAACAAEAAgAAAISEhIQAgAIADAAbAAEAHQAAAA0SExLr7hoODQUA+/Hx6YOAAP6EBP4KEAr+hQ3n4+IfGd73+////gAFJ4OAAASDBsS4u8C7ucSEAIACAAwAMQABADMAAAAZDw/n5+f0AAwZGRnx8fH3/AUJAvn6+vf08+iDgwTv3t7e74MA/4IH+vwGBgYMDwqEGePjHx8fDQHz4eHhHR0dEgYHBwcGAQEFCwwVg4IGFSIzMzMiFYEBFAqCBgUMEBAQCgKFAIACAAwAAgABAAIAAACEhISEAIACAAwAXgABAF4AAAAsEhIUEBMTExMH/vjy7u4WFgv88Ofn5+738/P38OXl5fD3Fv/s7e0VFRUW9woSgyz39vbw7fP3+v7+/gEFCAgXIiIiEQPy7+/vFBQUBPfr29vb2+kA/v4A/v7+/vqDLObm6+/r5eXl6fH6CxQU2Njq9wMUFBQD9wcH9wkdHR0J9xIkLy4v8/Ly7Pfu5oMsAQQFAgIEAwD+/v7+/v7+6czMzN/xAxoaGuXl5fkKGzAwMDAlDP7++P7+/v76gwCAAgAMAAIAAQACAAAAhISEhACAAgAMACoAAQAqIAAAE+3/FxcX7OwUFAoK9/fv7+/z8vb2g4ED5tMjI4EBIiKBBh8f2dvZ2dmEDQwAAQEBAgICAgICAQECDAHz5eUh6vEUHBwaFBSBCgkU0ADPAMwqMzMAAIACAAwASAABAEoAAAAjEBAQCwQA+vTx8fHx7uzt597e6Oro6AELGRkZGQsB9+fo6Oj1g4ACBQQBgwMCBfv+gxMJDuLiFADd3ez2CxUjIyMUC/bq3YMj5OTk7PkABhUeHh4eHBkZGBsbLB0gIAHy4uLi4vIBECAgICAPg4AC9ff8ggX89vUKCAOCAQUOgQ/2ADQ0Hwr24szMzOL2Ch00gwCAAgAMAEIAAQBDAAAAIBEREQwE/vvz7u4WFgv+9enp6en1/hT96uvrExMTFP4IEYMC9goFgwH//4ENDyMjIxQJ8fDd3d3d6wKBAAKDAPqDIOTk5Ov4/wgVHBzg4PD/DSAgICAN/xAiLSwt8fDw6v/15IMDCPb3+4IR/Pbx8d/Ozs7j9RAiMjIyMicOgQD6gwAFg4ACAAwATQABAE8AAAAlERERDgcA9vb09OPs8vHv7+/v8voABw4R6en1AAoXFxcXGAD26emDAvYKBYMLJCQaKCgjGg8J9vr/gg//+vbs3Nzc7PYKFCQkJBQKgyXk5OTs+QAZGQ8P7gshIhwcHBwUCAD57OQgIA8A8eDg4ODxAA8gIIMSCuzs8fb29sTEs8jIuqqlrwoJBYIPBQkKHzIyMh8K7OLExMTY7IMAgAIADAAfIAEAIAAAAAkIAQEBAgICAQICCAgUFA/x7OwA8YAH9OwlACXs2wCADfPi4uLx8RQUHh4eDxQUg4EDFCPLy4EFy8sjNTU1hIACAAwAAgABAAIAAACEhISEAIACAAwAOgABADkgAAAdEBAODw8P7Ozs/Q0N9vXx8fHx8vDw8wUUFBQUBPbzg4IA/oMC8+XlggP9+AD+ggjl5fMA+AkaGhqDEhEBAQICAQEBAgEDAQICAQMBAQIR7PHxGRkZBfACDw8QFBDn5+f8gQQFAAUYLIEB5gWBBCwF5t7TgAIADAACAAEAAgAAAISEhIQAgAIADAAkIAEALwAAAAwLAQECBAECAgEBBAICCxAQFPH+DfMCD+zw8IIF8ekA6enxghfs7Ozs7OwUFBQD8PAQEP3s7OwUFBQVFBSDggEBBYEDBRkvL4EDLy8ZBYEBBQKGgAIADABbAAEAXQAAACgIDA8PDw8KDQ387Ozs7PX8BA0NDfPz8/wDCxQUFBQI+Pj78fHx8fT4+4MABYOBI/vyGg/+ADErIRrz5tzc3ObzGhrz5tzc3ObzGiEwNgUDDxry+4ID/Pn5/IQt9/bx8fHxAxISFRkZGRkOA/rw8PAQEBAG/fPn5+fn8PPzAg8PDw8KBwYBAv7++YOBIwoL6/T9ANPT4Ov/DiAgIA7/6+v/DiAgIA7/6+DY2AUC9OsLCoIDBggIBoQAgAIADAAFAAEABQAAAIAADIOFgAAag4UAgAIADAACAAEAAgAAAIWFhYUAgAIADAACAAEAAgAAAIWFhYUAgAIADAAFAAEAAgAAAIAACoOFhYWAAgAMAAUAAQACAAAAgAACg4WFhYACAAwAAgABAAIAAACFhYWFAIACAAwABQABAAIAAACAAAqDhYWFgAIADAACAAEABQAAAIWFgAD9g4WAAgAMAEoAAQBIAAAAJxMUDw8PDxMTFyIiDhgY8PAYGBgiIhf/CxgYGBgL//Xn5+fn9RUV7+6DggH7BYMD9/IeHoMS4uIOCADd3ev2CxcjIyMVC/bt3Ycn5+fi4uLi5ufn4+PU5eUcHOXl1OPj5//w4ODg4PD/Dh4eHh4O394eGIOBAwcK9fiCAfryhxAOBQA0NB0K9uPMzMzi9gofNIcAgAIADAAFAAEABQAAAIAA/YOFgAD/g4UAgAIADAAFAAEAAgAAAIAACoOFhYWAAgAMADoAAQA6AAAAHff3BwoGBgbi4uL0BxAQ7Ozs7vHzH/DwFBQUEg4N4IOACN7e3tvd7Ozd74QEztLY3N2DBDIvKCMihB0CAh4N8PDwHh4eIijk5BISEg8LCdkcHO7u7vHz9SeDgAguLi4SAB0d9vyEBDI2KxgPgwTOy87X3IQAgAIADABaAAEAVSAAACsBBAkNDQ0NCQQB/ffz8/Pz9/4BDBMTExMMAfbt7e3t9gAFCgoKBQD89vb2/IOBAf//gQEBAYIBAQGBBf7/AOXl8IEEEBsbGxCBDfHlDAwGAPz29vb8AAYMgxsaAQECAQEEAgEBAgECAQEBAQECAQEBAQECAwMDGvrx7OzsBhQUFA8H89/f39/zDSEhISEO/PYFCoAZAgX7+wD7+wUCADUYBfvoy8vo+wUYNfYFCvyAAgAMABAAAQAQAAAHBgECAQEBAgIGChMSEiTr9gbbHiD0ANsABvbo9PT6JBQGMMLMAwAwAACAAgAMADgAAQA4AAAAGgQEDRgkJCQP/vPk5AwKBgH+/fz8/Pz189AEBIOADdvY4PgHFCQkJBUKCgcCggcCBgkE8/bb24Qa6urz49jY2Oz9ECYm6ujs9wAFDRQUFBAOPhAQg4ANMSQP9PDfycnJ3Ozs8vqCB/7+//bu9TU1hACAAgAMAEIAAQBCAAAAHwEGDxQU7Oz3AAgUFBQUCQAYGCAPD/j4+/v17Ozs7PL8g4ER/Pj29urd3d3o9g0WISEh9CUlgQgoAf7+Bw32+PyEHwf+9O7uKioWBvbi4uLi9Qb7+9nz8xcXBAQRHh4eHhoQg4EB/v+BDRUtLS0RAAjz3NzcA9XVgQjZ2QsLCwkA//6EAIACAAwAGCABABkAAAAHBgECAQECAgIGGRQX6uwZ8QQK4f//5YEL3d3n59ggGRnd3RkZg4AC5uYqgQITFhaGgAIADABGAAEASAAAACICAwsP5+b0AQkZGRkZCgDz5+cPD/f36Ojh5OTw+ffx8fHx94OBDgIGBvTd3d3yBP8PIiIiEoMFJSXn5+DtgQT/Af8EA4QiAe3f5yMgDgDt3d3d3e7/Cx4g6ekYGB8gIx8fGxkZGRkZGQuDgRAQHh4oMjIyGwUF8NfX1/EEBIEBy8uBCAEA///+AgUFAoQAgAIADABHAAEAQyAAACH/BQ0REREOChHl4+Pf5/Dv7u/v7/P6AAoXFxcKAPfq6ef0g4EF//z78+bjgRf19evz8/P09/v9/wHd3e77BBAQEAX77t2DFRQAAgIBAQEBAQEBAQIBAQEBAQQCBAIU/+/p6fDw3SARFBccGRcXFxfx3w8hgAQEEQwZG4EM8vH1+fn6/QEALf/T/wCAAgAMABUAAQAVAAAACBcc4uIFBfb28oOAAx8f8/OBACGECM3RGRnd3Q8PDIOAA8bGycmBAMyEAIACAAwAcQABAHEAAACANQMHCgoKDBMNHyMjIw4A9efn5+v58fb29vb8AA0cHBwL+P8KDQ0NDQgA+vn9/f37BQv25OTk9IOBNP75+Pf3+vcAAwYRIiIiFAcB//f48vb4+wDd3ejz/AoUEQwNBwH+/////QAHDwsRFQv98ujdg4A19+vk5OTq4/zv4+Pj8wANGxsbEgghHhwcHA0A8ODg4Obxyd3f39/n9gAKFx8fHyM7EhsgICAQg4E0BAcICwsECgPy6d3R0dHe6vMECgIFBQgEAC4uIRIF+fIA9PPx8Pf////38PHw8gHz+QURIC6DAAACAAwAQyABADogABUUAAIBAQECAgQDAQEBAQEBAgEBAQEDFBsdIRkQEhEB7+/v8/fvABcYGg0A6YATCxUNDQwFAAMFDhsdAPD8BhMjIwUSEQABAQECAgIFAQIBAQEBAgIEAhHg7+zp5OnpCBEXFxEQI/HfDyGAEA4PCwcG/wD87/Xn5QAtAdMBAIACAAwARwABAEoAAACAIgcNDw8PDw0HAPnz8fHx8fP6AAoZGRkZCQD25+fn5/UPFPHsg4EE//r2CgWEFgUJ9vr/ANzc7PYKFCQkJBQK9uzcCwD2hIAi+evi4uLi6/kACBUeHh4eFQgA8uzs7OzzAAwUFBQUDfb7CgWDgQUFCQr29vuCGPv29QoJBQAtLR8K9uLT09Pi9gofLfYKCvaDgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAA6AAEAOgAAAIAaCA8PDw8IAPjx8fHx+AAECgoKCgQA/fb29vb9g4ED+/INBoISBg3y+wDp6e/yDREXFxcRDfLv6YOAGvz29vb2/AAECgoKCgQA+PHx8fH4AAgPDw8PCIOBAwIB/v6CEv7+AQIAFhYLAf706urq9P4BCxaDAIACAAwAEAABABAAAAcGAQIBAQECAgYPDQ4OEPT2BugcFPgA6AAG9vj29vgRDwYV7Or9ABUAAIACAAwANAABADQAAAANBAT3AhAQEAgA+PDwCQaBCPz4+Pjw6u/7+4OADNza5fwFDRcXFwsCAgGCBgQG/+/p6OiEGPPz//v4+Pj+BAoQEPf0+wQJEhISDAkbDQ2DgAwKBgL+/vXt7e31/v7/ggb+/fr2+BMThACAAgAMADogAQA5AAAAEhEBAQICAQECAQEBAgECAgECAgERBAjw+gAHEREG/wAGCvf8+fb2gBD+++np6fsEEBD7F/8iC/z7/oAL+/DwCgoGAPz29vb7ggvy9PQMDBERDQ0NDQSDgRgCBQUJExMTCQcE/v7+/ezs///1/gUFBQcDhIACAAwAGSABABsAAAAHBgECAQECAgIGDA4Q9PUM8wYN9v//9fcAC/Pz9fXvCA4O8/MMDIOACfn5C///CgkJ+/uEAIACAAwAQQABAD8AAAAfAgQIC/Lx+gIIERERCAT99/gMDPb28/Py8/Lv8vb29vyDgQ8GCQn76enp9PwGDw8PCQUFgQQYGAgNBoIC/Pz/hB/++O/wCQcB/vnz8/P7BAgQEfPzCgoMDAoGAwcGCgoKA4OEDAcODg4HAfv09PT3+vqBCuvr+P3/AwMDAQEChACAAgAMAEMAAQBCAAAAgB4ECwsLEA4P8+/p8fTv6+/19fX6AAYPDw8GAPnx8fH5g4EE/fv9+PaBFvX1//38/Pz7+/0A6urz+wIMDAwC+/Pqg4Ae+/X19fj5+hAQFAsOCAEFCwsLAwD79fX1+wAFCwsLBYOBAwIC//6CFgYGBgQEBAQCAgIAFBQLAvnw8PD5AgsUg4ACAAwAEwABABQAAAAFChfy8goKgQDsg4ABGBiDACOEB+r4AQHs7AwMhIAD7Ozs7IEA7oSAAgAMAGoAAQBqAAAAgDIDCgoKA/4LDAwMDAcB+vPz8+/u/Pr29vb9AAgPDw8IAfH9DAwMBAD88/PzAAr89/Hx8fiDgSP7+vj19wQHCg0RFBQUEg4KBgT28/b6+wDq6u3x9f8EEQ4GBAOCCgMEBgsOA//18O3qg4Ay+/Hx8e728fX4+Pj8AQQGBgYHCgkSDw8PBQD7+Pj48+/o5vDw8PoABA0NDRgWEw8JCQkFg4EjAwQDBwX8/Pz58u7u7vP6/Pv8AwUABAMAEBALBQEDAv35+ff5ggr59/r4/AIDAAQLEIMAgAIADABDAAEAQwAAAB8NEBYODA8UEAoKCgT/+vT09PDy8P8GDg4OBv/58PDw+YOACQsLAQMEBAQFBQOCEQMFAQUIAPT0/QUMFhYWDAX99IMf8fDs9fL3//vz8/P6AAQLCwsJCAYA+/X19fsABQkJCQWDgAn6+vr8/Pz8/v7+ghH+/v///gAQEAf+9ezs7PX+BxCDAIACAAwABwABAAcAAAADCgf2+YOHA+wCFP6DhwCAAgAMAFsAAQBcAAAACQ8PCgwKCgoKCASBDg8NCQgC+/v7+PIDAwcB8oERCAgJCQkJCQgICfr6CAgKB/b5g4AJ8/n9AwgJCgoKBIEA/4IKBAkD+/T4/vz29vaBBvb2CQwPDw+CAfb2iC77+xID8fHx/ggPGRn7+QEICw8PDw0EJycnIRgPDwcHAwMB/f3+/gMhIRAQ7AIU/oOACRkkGwoD+ezs7PeBAP6CCgYJBQkGGxwcGRkZgQcZGenn4+TrB4EBGRmIgAIADAA3AAEAOwAAAIEEAQEBAQGBAgHy8oEPCgoFBQv49vYKCvv7Cgf2+YOABvb2CQwPDw+CAfb2gwD2gQT29vYHB4gdBwcDAwH9/f7+AyEhGhrr6/X19RMTE+vrCQnsAhT+gxH/GBjo5uLj6gb//xgY/wD29gqBBAoKCvz8iACAAgAMAFAAAQBIIAAAGAoKBQUL+Pb2Cgr7+wAFCgr7+/4AAgQEBAOCDwcHB/j4/f349fX1/AoH9vmDggD2gQT29vYHB4UM/Pb29v8FCQ8PDwEKCoEGCgf//wIFA4gYFwECAQEBAwIEAgMDAgIBAgIBAgICAQEBARfr9fUTE+sJ9xX47AEB7vcLEg8KBuwCFP4B9gqBAQr8gQoJFP72//EA+f4ABYQAgAIADAAaAAEAGgAAAIAKBAoKCgQA/Pb29vyDgQj9+vXu7u71+v2EgAr47u7u+AAJEhISCYOBCAsUHCQkJBwUC4QAgAIADAAHAAEABwAAAAMZFOzxg4cD5+cZGYOHAIACAAwAKCABADIAAAAMCwEBAgMBAgMBAgMBAgsECgr79vYECgr79vYLBgUBAAEFAP/7+vv/gBb47+/v+AAHERERBwD47+/v+AAHERERB4ME4uLr8fiCA/jx6+KBCAkPFh4eHhYPCYQAgAIADAAjAAEAIgAAABEUD+fsBQYJCQkFBfv79vb2+vuDgwQKCgcFBYMEBQUHCgqDCefnGRkA+vHx8fmBBAcPDw8GhIME4uLr8fiDBPjx6+Lig4ABAAgAVAAAACn/+fHx8fH5/wYPDw8PBv/58fHx8fn/Bg8PDw8G//nx8fHx+f8GDw8PDwaDgQoGCgAECgoKBAAKBoIKBgoABAoKCgQACgaCCgYKAAQKCgoEAAoGhACAAgAMACoAAQAqAAAAExEWFurq7xARFRUVERD38/Ly8vb3gwH22IEB2PaBCfz7+vb29vb5+vuFC+jm5hoaGAD48fHx+IEFBQ8PDwj/gwEe4oEB4h6BCQUKEBQUFBQPCQOFAIACAAwAKCABACwAAAAMCwABAQEBAgIEAQICAgsZGRTy7QcRB/ju7viACiMJCSMJBf//AAUJE+bm6BgaGvv28fHx9/wFCg8PDwoFg4ASI+HhIwDr6/D1+v/////48/Dr64MAgAIADABGAAEARAAAACIeHh4nMjIyJh4jIx4YDwoKCgf+9vYVFhoaGhYV/Pj39/f7/IOACPb29gQPGygoKIIGAwoPCwwRFIIJ/Pv69vb29vn6+4Ui4t0P+N3d3fcP5+cFDBUZGRkVDAUF9e3m5ubt9fX6BAQE/fSDCRQ3NzcZAOjJycmFBPr3+PsUgQkFChAUFBQUDwkDhQCAAgAMAEMgAQBHAAAAFRQAAQIBAQEBAQICBAEBAgECBAECAgIU4ur29vb6Awri4s7a4t3/Cf/w5ubwFAEB9vL29fDtAAvm2dkBCwcBAQIHCyL28uni4uLn8fb2GR7sAx4eHgPsFBQGAfz8/AIHEBUaGhoVEIOBFwIBAAUJCAXs7MnJyeYAGTc3NwDs7PH2+4ME+fTx7OyDAIACAAwABAABAAQAAACEAAWDhAD4gwAAAgAMABwgAQAcIAAIBwEBAgECAQIBBwkZGQn25+f2BxkJ9ufn9gkZCAcAAQEBAgEDAYAG+PHx+AAPDwfx8fgADw8A+IACAAwAfAABAHsAAAA78g0gJh0OCQcOIi0nB/wbIhgGAQUIDhEREe/v7/P5/AD66d/kBfnZ0t3x+Pfx4tvh8w/99/oCAv7+BgoEgxcK9xAXEQQBCQkHBQgU8+jl7fn+APnk192BId3X5PkA/fjs5efyEwcEBgcHAQQRGBD2CSMsIxAKChEjLCODMxDu19vp9/v8+enY0/gG4ufy+/39+/Lr6+sVFRUOBgQDBA4ZHvkILScXCAQGCRcnKxPxCASCBAECAf76gxf0DOvw+f///Pr49/nsEyAeEwcEBAYTIiiBECgiEwYEBQgTHiAT7Pn3+Pr8gQ768ewM9NPZ6/z///zr2dODgAIADABEAAEARAAAAAEJDIEBCQ+BBwwP9vMNEPf0gQH38YEJ9PEKDfPw8AoQ9oOABwoK9fULC/b2gQH29oEH9vYLC/X1CgqBBgoKAPX1CwuDH/Pr8fHw7ezs8uoNFfLqDRUPDxATFBQOFvPrDhYT8O0Qg4AH4uIFBfv7Hh6BAR4egQceHvv7BQXi4oEG4uIABQX7+4MAgAIADAACAAEAAgAAAISEhIQAgAIADAAHAAEABwAAAAMUFezrg4cD590ZI4OHAIACAAwABwABAAcAAAADFRTr7IOHA9zmIhiDhwCAAgAMAAQAAQAEAAAAAPuDhAARg4QAgAIADAAEAAEABAAAAAAFg4QAFoOEAIACAAwAJwABACkAAACABQQUFBQUCoIH+PHx8fHx8/mEgQTy9goOCYEJIyAcEwr27ePc2YOABu/i4uLi6PWBBwgVHh4eHhYIhIARCAP/AP36+wC/wNPvAP8QLT4/gwCAAgAMACgAAQApAAAAgQcGDQ8PDw8OCIEG//bs7Ozs/IOACdnc4+32ChMcICOBBAkOCvbyhIEH9+ri4uLi6/mBBgsYHh4eHhGDgBE/Pi0Q/wDv08C/APv6/QD/AwiDgAIADABRAAEAUwAAABzn8gEKCg8QDw8PDw8MEQ8KCgHy5/Hx5+jg4ufo8oEI8+jn4uDo5/Hxg4EP/PXwEREQEBDu7u7s7hALBIIRIyMjFhDu9///AQEJEfDq3d3dhCfi5+fm5+fm5AX29gXk5ufn5+fm4goKABMjIyMjFAoKFSMjIyQUAAoKgxH//wYOEv/q4eHhHR0dFf/y9PuCEsTExNPe6/X//wEBChMhMTs7O/+DAIACAAwAUQABAFMAAAAIDw8YGB8dGRkNgRwOGRkdHxgYDw8YDf729fHw9fHx8fHx8PH19v4NGIOAEd3d3erwEQkBAf//9+4QFiMjI4IPBAsQ7uzu7u4QEBAREfD1/IUn9vYA7N3d3d3s9vbt3d3d3e4A9vYeGhkaGRkaHfsKCvscGhkZGhkaHoMS/zs7OzEhEwoBAf//9eve08TExIIR+/Ty/xUdHR3h4eHq/xIOBv//gwAAAgAMABAgAQAPIAAEAwECAgIDD/vn+4ACI90ABAMAAgICA90ZGRmBAcQ8AAACAAwADyABABAgAAQDAQICAgMFGQXxAd0jgQQDAAICAgPn5+cjgAI8xAAAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAAHAAEABwAAAIcDEu/vEoOHA+IeHuKDAIACAAwAAgABAAIAAACEhISEAIACAAwABwABAAogAACHAxTx8RSDAgEBAgH7BQEe4oACAAwABwABAAcAAACHAxPw8BODhwPiHh7igwCAAgAMAAIAAQACAAAAhISEhACAAgAMAAcAAQAHAAAAhwAegQAeg4cAv4EAv4MAgAIADAACAAEAAgAAAISEhIQAgAIADAALAAEACwAAAAcUD+fsGRTs8YOLB/b2KCjY2AoKg4sAgAIADAALAAEACwAAAAcUD+fsGRTs8YOLB/b2KCjY2AoKg4sAgAIADAALAAEACwAAAAcUD+fsGRTs8YOLB/b2KCjY2AoKg4sAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAAPAAEADwAAAAsYERrs6uwbFB3v7e+DjwvbAt4PNQ/K8c3+JP6DjwCAAgAMABUAAQAVAAAACxAVEeXs4xMYFOjv5oOAAP6EAP6HCwHeAjYPM/DN8SX+IoOAAP+EAP+HAIACAAwADAABAAwAAAAFFhcV6O3og4MAAYQF2fTZCSoLg4MA/4QAgAIADAAMAAEADAAAAAUXEhfp6OqDgAD/hwX21fQmCyaDgAABhwCAAgAMAA8AAQAbAAAACwwODu/v8Q8REfLy9IOPC/f19SgoJtrY2AsLCYOAALqBALqBALqBALqEAIACAAwADwABAA8AAAAFExUV9vb4g4AA7IEA7IQF7uzsHx8dg4AA9oEA9oQAgAIADAALAAEACwAAAIsHFPHxFBTx8RSDiwfiHh7i4h4e4oMAgAIADAAPAAEADwAAAI8LFPHxFBTx8RQU8fEUg48L4h4e4uIeHuLiHh7igwCAAgAMACEAAQAeAAAADhfp9ukXHiMqLgkJLSojH4OBAAGBCf8EDRIS7+/x+f+DDskQBRDJpqanpvr6pKSnqYOECeHh4uLiHh4dGxqDgAIADAAJAAEACQAABAMBAgICAxQAFOwBFPGBA90A3RkB4h6BgAIADAAhAAEAHgAAAA4X6fbpFx4jKy8KCi0qIx+DgQABgQn/BA0SEu/v8fn/gw7JEAUQyaiop6b7+6SmqauDhAnj4+Li4h4eHBkYg4ACAAwAOQABADMAAAAaKzI3P0MKCkE+NzMr/Qr9Fx4fHh0eHx8X6fbpg4AJ/wQNEhLv7/H5/4EAAYEG//8BAQH//4EAAYQatZSUk5L7+5CSlZe1/PH8yai0u7q7tavJEAUQg4AJ4+Pi4uIeHhwZGIQG4/UA//0IGIcAgAIADAAZAAEAGQAAAAopDwoKECn78+7v+oOAAxIS7++BAgH/AYQKw+P7++PDCisZKAqDgAPi4h4egQIdAOiEAIACAAwAJgABACYAAAASPSMKCiQ9DwcCAw4pHCn78+7v+oOAAxIS7++BAgH/AYQCAf8BhBKYuPv7uJjfAO7938POwworGSgKg4AD4uIeHoECHQDohAIdAOiEAIACAAwARAABAEMAAACAAgUOFIEZ9vb2/QAEEB0mJh4Q+uzs7BQUFBseIBkPBP6DHxkZGBQU8fHx9/j4+Pn6+vv7+wQUHg8PHh4cHBwbGhoZgx/d4ODc8fHx8fHn4+Tm6vH6AAMKDw8P7Ozs9Pv7+fXu5IMU5+fm4uIeHgoNDw8PERUXGRkZFA8Pggf68fHx7+zp54OAAgAMAFUAAQBXAAAAHOjzAgsLDxAPDw8PDwwQDwsLAvPo5+fo6eHj5+fygQzz5+fj4eno5+cUFOzsg4EP/PXwEREQEBDu7u7s7hALBIIRIyMjFhDu9///AQEJEfDq3d3diCvd4uLh4uLh3wDx8QDf4eLi4uLh3QUF+w4eHh4eDwUFEB4eHh8P+wUF3d0ZGYMR//8GDhL/6uHh4R0dHRX/8vT7ghLExMTT3uv1//8BAQoTITE7Ozv/hwCAAgAMAAwAAQAMAAAGBQECAgICAgUU9uz2FOyAASPdggXT8Q/x8S2AAcQ8ggACAAwAIyABACQgAAwLAQICAgICAgICAgICCwoeCvYK9uL2FOwU7AHdI4IBI92EDAsAAgICAgICAgMCAgIL4uLiHuIeHh7iHuIegAE8xIIBxDyDAIACAAwAAgABAAUAAACFhYAA8YOFgAIADABRAAEAUQAAAA8JDAYGCQ8GBgwP9vMNEPf0gQH38YER9PEKDfPw8AoQ9uLi9vbi4s7Og4AHCgr19QsL9vaBAfb2gQf29gsL9fUKCoELCgoA9fULCwDd3SMjhifz6xcX8O0XF/LqDRXy6g0VDw8QExQUDhbz6w4WE/DtEOfn5+fn5yMjg4AH4uIFBfv7Hh6BAR4egQceHvv7BQXi4oEL4uIABQX7+wA8PMTEhgCAAgAMAAQAAQAEAAAAAP6EhQD+hIUAgAIADAAGAAEABgAAAAIm/9iDhgLq/xSDhgCAAgAMAAIAAQAGAAAAhoaAAf8Bg4YAgAIADAACAAEABQAAAIWFgAAKg4WAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhoaGhgCAAgAMAAIAAQAFAAAAhoYBAwGEhoACAAwABAABAAQAAAAA9oSFAAqEhQCAAgAMAJcAAQCVAAAAPwUF8vQCCAP28gUF+/sFBgkJCQUF+/v29vb6+wUGCQkJBQX7+/b29vr7Hh4eJzIyMiYeIyMeGA8KCgoH/vb2FRYLGhoaFhX8+Pf39/v8gwwP7e/x/AEGERMW8eUbgQn9+/v29vb2+/v9gQQKCgcFBYMOBQUHCgoA9vb2BA8bKCgoggYDCg8LDBEUggn8+/r29vb2+fr7hT/s7MrRzdvOz8rs7AoK+/Xs7Oz0+/sCCgoKAfv79ezs7PT7+wIKCgoB++vmGAHm5uYAGPDwDhUeIiIiHhUODv72C+/v7/b+/gMNDQ0G/YMM8CECBAABAf7/3w4V6oEJCQ8WHh4eHhYPCYEE4uLr8fiDDvjx6+LiFDc3NxkA6MnJyYUE+vf4+xSBCQUKEBQUFBQPCQOFAIACAAwAPAABADIgAACEFgMEBAQDAPz7+/v9AAMEBAQDAPz7+/v9hx8K5+cKCgoF//r29vb6/wUKCgoGAPv29vb7AAYKGfb2GYMQDwACAwIEAgQBAQEDAQEBAgKBC/fsCRT37OzsCRQUFIEP5yPx/xX/6/T6BA8E+vTdGQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAIAAQACAAAAhYWFhQCAAgAMAAQAAQACAAAAAP6EhYWFAIACAAwAKwABACsAAAABEyOBAQsZgQMCEevcgQHz5YEB/e2DgAcZGfb2Cwvo6IEH6OgLC/b2GRmEAd7HgQHuzoED9N4aMIEBCiqBAQMag4AH3d0ZGefnIyOBByMj5+cZGd3dhACAAgAMADcAAQA8AAAAAQ4OgQH+FYEBBRyBAwwO8e+BAf/ogQH34IEB8PCDggnn5wsL8vIWFv39gQn9/RYW8vILC+fnhgHo4YEB8+KBAfXkgQP27xgfgQENHoEBChuBAQkQgxv27OwKCvHxDw/29hQUCgoUFPb2Dw/x8QoK7Oz2g4ACAAwABQABAAUAAAAB9gGDhQEIAYOFAIACAAwABAABAAQAAAAA+ISFAAiEhQCAAgAMAAUAAQAFAAAAAfb2g4UBCgqDhQCAAgAMAFsAAQBeAAAAgQT/AQDi4oEk4uIeHh4nMjIyJh4jIx4YDwoKCgf+9vYVFhoaGhYV/Pj39/f7/IOAE+zj4OLiAOLExOIA9vb2BA8bKCgoggYDCg8LDBEUggn8+/r29vb2+fr7hQJkZG5BAIIAhCg3NxoaNzfp5Bb/5OTk/hbu7gwTHCAgIBwTDAz89O3t7fT8/AELCwsE+4MUFCcmP1BQFB5aWh4UNzc3GQDoycnJhQT69/j7FIEJBQoQFBQUFA8JA4WAAgAMAAIAAQAFAAAAhoaBAP+DhoACAAwAlwABAJUAAAA7/BcgJh8PCQcPIi0nGxAbIRcGAQUIDhEREe/v7/P5/AD76t/k8eXZ0t3w9/fx4tvh6QX99vkCAv//BwoEgQbt7/0D/vHtgQH29oM/HgsQFxEEAQgIBQQIFPPo5Ov3/QD55Nfd9vbd1+T5APz36+Tn8hMHAwMFBQEEERgQCh0jKyIQCgoRIyojD+3v8Qj8AQYRExbx5RuDMxDu19vp+Pv8+enY0/kH4ufz+/39+/Lr6+sVFRUOBgQDBA4ZHvkILScXCAQGCRcnKxPxCASCEQIDAv767OzKy9bb183K7OwKCoME9Azr8PmBEPz69/f57BMgHhMHBAQGEyIogRAoIhMGBAQIEx4gE+z59/f5+4Eb+vHsDPTT2ev8///869jT8CECAgEBAf//3w4V6oMAgAIADAACAAEAAgAAAIWFhYUAgAIADABoAAEAaQAAAAEJDIEiCQ8BAQwP9vMNEPf09fX38fX19PEKDfPw8AoQ9gAEFBQUFAqCB/jx8fHx8fP5hIAHCgr19QsL9vaBAfb2gQf29gsL9fUKCoEGCgoA9fULC4EE8vYKDgmBCSMgHBMK9u3j3NmDD/Pr8fHw7e3t8uoNFfLqDRWBARATgREOFvPrDhYT8O0QAO/i4uLi6PWBBwgVHh4eHhYIhIAH4uIFBfv7Hh6BAR4egQceHvv7BQXi4oEZ4uIABQX7+wAIA/8A/fr7AL/A0+8A/xAtPj+DgAIADACVAAEAlAAAAAEJDIE/CQ8BAQwP9vMNEPf0Bgb38f//9PEKDfPw8AoQ9vH8DBUUFBMUFA8PFBEUFBQVDfzx9vbx8u3s7Ovt9wEB8ezs7ATs8vH29oOABwoK9fULC/b2gQH29oEH9vYLC/X1CgqBBgoKAPX1CwuBD/z18BISERER7+/v7e8QCwSCByMjIxYQ7+/3gQgCAhMS8Ord3d2EP/Pr8fHw7e3t8uoNFfLqDRUrKxATJCQOFvPrDhYT8O0Q4ufo5+fn5uQF7OwF5Obn5+bo5uIKCgATJCMjIxgODw8IDiQjIyQUAAoKg4AH4uIFBfv7Hh6BAR4egQceHvv7BQXi4oEY4uIABQX7+///Bg4S/+ri4uIeHh4V//L0+4IHxMTE097r6vWDBxQTITE7Ozv/g4ACAAwAUgABAFIAAAABCQyBIwkPAQEMD/bzDRD39P//9/H///TxCg3z8PAKEPYPD/v75+f7+4OABwoK9fULC/b2gQH29oEH9vYLC/X1CgqBBgoKAPX1CwuCAyMj3d2ED/Pr8fHw7e3t8uoNFfLqDRWBARATgREOFvPrDhYT8O0Q3d0ZGRkZGRmDgAfi4gUF+/seHoEBHh6BBx4e+/sFBeLigQbi4gAFBfv7ggPExDw8hACAAgAMAHQAAQB0AAAAgBgDBAQEAwD8+/v7/QADBAQEAwD8+/v7/QkMgQEJD4EHDA/28w0Q9/SBAffxgQn08QoN8/DwChD2gyAKCgYA+/b29vsABgoKCgX/+vb29vr/BQoACgr19QsL9vaBAfb2gQf29gsL9fUKCoEGCgoA9fULC4OANvfs7Oz3AAkUFBQJAPfs7Oz3AAkUFBQJ8+vx8fDt7Ozy6g0V8uoNFQ8PEBMUFA4W8+sOFhPw7RCDIOvr9PoEDw8PBPr06/Hx+f8JFRUVCf/58QDi4gUF+/seHoEBHh6BBx4e+/sFBeLigQbi4gAFBfv7gwCAAgAMAGsAAQBrAAAAFQoJEeXd6AsMDw8PCQnw7Ozs7PHyCQyBAQkPgQcMD/bzDRD39IEB9/GBCfTxCg3z8PAKEPaDAfbYgQHY9oEJ/Pv69vb29vn6+4IHCgr19QsL9vaBAfb2gQf29gsL9fUKCoEGCgoA9fULC4Mz7uDmGhQeAPjx8/T7BAQJEhEPCP/z6/Hx8O3s7PLqDRXy6g0VDw8QExQUDhbz6w4WE/DtEIMBHuKBAeIegQkFChAUFBQUDwkDggfi4gUF+/seHoEBHh6BBx4e+/sFBeLigQbi4gAFBfv7gwCAAgAMAJEAAQCRAAAAAQkMgRoJDwEBDA/28w0Q9/TsFBQPBgD78ezs7Oje2NiBDPYEFhYWCwD37Ozs9/GBF/TxCg3z8PAKEPby9vz8/Pby49/Z2dnf44OABwoK9fULC/b2gQH29oEE9vYFBAKCBgMICgoOFRmBEPv7+wMKFiMjIxMFCwv19QoKgQYKCgD19QsLgQn//Pr29vb2+vz+hT/z6/Hx8O3t7fLqDRXy6g0V9tbW3u/7BxYeHh4ZDwoK5+L27+Tk5PP7BBQUFBATDw8OFvPrDhYT8O0Q8Ovm5ubrB/D6/wQEBP/5g4AH4uIFBfv7Hh6BAR4egQQeHvf6/4MYAQD8+fwAFBQ8PDwaAObExMTj+/v7BQXi4oEG4uIABQX7+4EJCAsQFBQUFBALBoUAgAIADAB0AAEAdAAAAAEJDIEBCQ+BDwwP9vMNEPf0DA/28w0Q9/SBAffxgRn08QoN8/AJDPTxCg3z8PAKEPbxCQ/38AoQ9oOABwoK9fULC/b2gQH29oEB9vaBAfb2gQf29gsL9fUKCoEBCgqBAQoKgQ4KCgD19QsL9fULC/X1CwuDN/Pr8fHw7ezs8uoNFfLqDRXy6g0V8uoNFQ8PEBMUFA4W8+sOFvPrDhbz6w4WE/DtEBPw7RAT8O0Qg4AH4uIFBfv7Hh6BAR4egQEeHoEBHh6BBx4e+/sFBeLigQHi4oEB4uKBDuLiAAUF+/sFBfv7BQX7+4MAgAIADACkAAEApQAAAAEJDIEBCQ+BFwwP9vMNEPf0DA/28w0Q9/QMD/bzDRD39IEB9/GBKfTxCg3z8AkM9PEKDfPwCQz08QoN8/DwChD28QkP9/AKEPbxCQ/38AoQ9oOABwoK9fULC/b2gQH29oEB9vaBAfb2gQH29oEB9vaBB/b2Cwv19QoKgQEKCoEBCgqBAQoKgQEKCoEWCgoA9fULC/X1Cwv19QsL9fULC/X1CwuDP/Pr8fHw7ezs8uoNFfLqDRXy6g0V8uoNFfLqDRXy6g0VDw8QExQUDhbz6w4W8+sOFvPrDhbz6w4W8+sOFhPw7RAPE/DtEBPw7RAT8O0QE/DtEIOAB+LiBQX7+x4egQEeHoEBHh6BAR4egQEeHoEBHh6BBx4e+/sFBeLigQHi4oEB4uKBAeLigQHi4oEW4uIABQX7+wUF+/sFBfv7BQX7+wUF+/uDgAIADADUAAEA1QAAAAEJDIEBCQ+BHwwP9vMNEPf0DA/28w0Q9/QMD/bzDRD39AwP9vMNEPf0gQH38YE59PEKDfPwCQz08QoN8/AJDPTxCg3z8AkM9PEKDfPw8AoQ9vEJD/fwChD28QkP9/AKEPbxCQ/38AoQ9oOABwoK9fULC/b2gQH29oEB9vaBAfb2gQH29oEB9vaBAfb2gQH29oEH9vYLC/X1CgqBAQoKgQEKCoEBCgqBAQoKgQEKCoEBCgqBHgoKAPX1Cwv19QsL9fULC/X1Cwv19QsL9fULC/X1CwuDBQf/BQUEAYE/Bv4hKQb+ISkG/iEpBv4hKfz0Fx/89Bcf8uoNFfLqDRUPDxATFBQOFvPrDhbz6xgg/fUYIP31IioH/yIqB/8iKh8H/yIqJwQBJCcEASQnBAEkJ/r3JB369xod8O0aE/DtEIOAB+LiBQX7+x4egQEeHoEBHh6BAR4egQEeHoEBHh6BAR4egQEeHoEHHh77+wUF4uKBAeLigQHi4oEB4uKBAeLigQHi4oEB4uKBHuLiAAUF+/sFBfv7BQX7+wUF+/sFBfv7BQX7+wUF+/uDgAIADABNAAEATQAAAIcBCQyBAQkPgQcMD/bzDRD39IEB9/GBCfTxCg3z8PAKEPaDEBn29hkK5+cKAAoK9fULC/b2gQH29oEH9vYLC/X1CgqBBgoKAPX1CwuDhx/z6/Hx8O3s7PLqDRXy6g0VDw8QExQUDhbz6w4WE/DtEIMQ4h4e4uIeHuIA4uIFBfv7Hh6BAR4egQceHvv7BQXi4oEG4uIABQX7+4MAgAIADABIAAEASAAAAAUQDfPwCQyBAQkPgQcMD/bzDRD39IEB9/GBB/Tx9vbwChD2gwIeCgqBBwoK9fULC/b2gQH29oEH9vYLC/X1CgqBBB719QsLgyHp6w4W8+vx8fDt7Ozy6g0V8uoNFQ8PEBMUFA4WCgoT8O0QgwK/4uKBB+LiBQX7+x4egQEeHoEHHh77+wUF4uKBBL8FBfv7gwCAAgAMAG0AAQBuAAAABRAN8/AJDIEBCQ+BBwwP9vMNEPf0gQH38YEa9PE6LyMeHh4eFAoKCgL7+/v7+/4GDg7wChD2gwIeCgqBBwoK9fULC/b2gQH29oEH9vYLC/X1CgqCFgUSHhQYEwoKLSomHRQeFAgCAB719QsLgzTp6w4W8+vx8fDt7Ozy6g0V8uoNFQ8PEBMUFA4WxtPk7Ozs7PL/CgoSHygoKCghFQ4OE/DtEIMCv+LigQfi4gUF+/seHoEBHh6BBx4e+/sFBeLigRf46tXDCgcEBQrJyt35CsPT7gACvwUF+/uDgAIADAACAAEAAgAAAIWFhYUAgAIADAAYAAEAGAAAAAH29oEB9vaBAxQV7OuDBxn29hkL6OgLhwH09IEB9PSBA+fdGSODB90YGN3nIiLnhwCAAgAMABgAAQAXAAAAAf39gQH9/YEDFBXs64MHGfb2GQvo6AuHATAwgQEwMIIC9jI8gwfdGBjd5yIi54eAAgAMACMAAQAhAAAAAxQT4umBCgoK9/kHDQj69/Tjg4IMEuUbD+rt7/wBBhMVMIQQ7OIeHg8P8fHP0eXt5tLPDyiDggf9FerwHgEBAYMA04QAgAIADAAFAAEAAgAAAAH/AYOFhYWAAgAMABwAAQAcAAAAAQQEgQEEBIEHFBXs6xQV7OuDBxn29hkL6OgLiwHq6oEB6uqBB+HXEx3h1xMdgwfdGBjd5yIi54sAgAIADAACAAEAAgAAAIaGhoYAgAIADAANAAEADQAAAIEDFBTs7IUAHoUAHoOBA+LiHh6FAL+FAL+DAIACAAwABwABAAcAAACHABmBABmDhwC/gQC/gwCAAgAMAAIAAQACAAAAhISEhACAAgAMAAIAAQACAAAAhISEhACAAgAMAFkAAQBWAAAAMA0NERENDff3AQHr6+zx8fHw7+7v8vLy8u3r6wEB9/fr/AoZGRkK/Ovr/wwYGBgK/uuDig4CBQIB/vj19vj7/f39/f+EEdzc3Oz5BAwMDOvr6/kHFSQkJIMw/v7l5f7+AwMDAwgIEh8fHw306fMMHh4eEggIAwMDAx7/8eDg4PH/Hh4A8uHh4fH/HoONCwL68fT7BRERCAcDAYQRKCgoGQ3/6enpERERAvXp2NjYg4ACAAwAQAABAEEAAAAhBgby8v4EDhQUFBQOBP768e4WGQv+9ezs7Oz1/gsZFu7x+oOFBP/69goFgwD/gQsPIiIiFAn27N7e3vGBAAGEIfj4/f3/+O3n5+fn7fj/DRsc4ODw/w0jIyMjDf/w4OAcGw2DhQUFCQr29/uCEfjx8d/Ozs7j9QodMjIyHw8PCISAAgAMAGQgAQBlAAAAIB8AAQIBAgEBAQEBAQECAQEBAQECAgEBAQEBAgIBBgQEAh8MDwUA9PLxDQ8MBgYKDQ3x8PIADA3y8PX8/PLwEvvw+x8RDgUFCxAQ9PT3+wAICQnu7/T78/QPDQwF+/T2BRD88Av+/f3/AAMFBQP7/f+CDf37+wICAgEA/Pz8BQQCghIDBAYA+e3m5ubt+QAHExoaGhMHgwL9/f6CDf79+wMEBAEA/fr4+QEBgxoDBPv5+/4AAgUGBBoaEwgA+e3m5ubt+QAIExqDgAIADABqAAEAaAAAADMKCgwLDeXl+woKCg0NDQ0LCgr29vbz8hoaBfb26+3z8/P19vb2BxsbGwj79goK+uXl5ePcg4EO/fz7++za3BUVFA8NDAQBgg0DBQMDEiUk8PT08/P0/IEP3Nnn9QMXGxwRJCYWCQf99YMz9fXv5ecjIwz19QXz3d3d6fX1+voJFxba2uv6+u0FGRkZCfr6+uzd3d3Fs/r19QUZGRkVDIOADQEBCAoKHzU03djX4u/4hQz79vbjzc0cIyQfEAf/gQ8yLxsLCvzrJf7Nzd/t+Q0ZgwCAAgAMAFkAAQBWAAAALBMTDw8PDxQTFyIiGBYYGPDwGBgOIiIXCgr29v8LGBgYGAv/9efn5+f1///29oOBAv/7BYME+PIeHgqDBeLiDgkAJIESJN3d6vUKFiMjIxQK9ezdEPLyEIMq5+bi4uLi5ufn5eXU4+DgHBzl5dTl5efi4h4e//Lg4ODg8v8NHh4eHg329oWBAwQG+/2CAfrygQAKhQMOBwDsgQ/sNDQZBfvnzMzM5fsFGzTxgQDxg4ACAAwAYgABAGEAAAAv/AILDw8PCwsPDwsLDw8PCwL8/Prz7BQaDPzy5+fn9vbn5/b25+fn8/wNGhTs8/r8g4Es/fbxEhL5+QcH7u4ZFA4KCgoF/vv7Ei0tLSIZ7u4HB/n5EhLx6N3d3fkPDwwFhC//9+ng4OD39+Dg9/fg4ODp+AANICUe4uj4AAwcHBwKChwcCgocHBwM//fo4h4lHw2DgQ0DCArs7AoK9vYUFPb4/YIb9+ni4tfJycni9hQU9vYKCuzsCh43NzcpHh4YCYSAAgAMADoAAQA6AAAAgRr3CRQUFAoKFBQUCPz09Pz27Ozs9PTs7Ozv9PeDgArb29vp+xMT7u4OB4ILIyMjFw/u7hMT8fT7hYEaFAXx8fH29vHx8QAGFBQaJi0tLRkZLS0tIxMKg4AKPz8/Khrk5BQU3OqCC87OztTdFBTk5AoJBIUAgAIADAA6IAEARwAAABIRAQICAgIBAwIDAgICAQEBAgECERQFFAUU+PHx+Ozy7Oz4CBwc+AMe+wThgQsCAgT7HgDh4eECEiMh7Ozx8ezs8fHs7O77DBQUFA387igoDw8oKCju59vb2+fuKIOAB+LiBQXs7BQUghX/+/bw7ezs7AUF4uIAFBQUAvbq2NjYg4ACAAwAUQABAFAAAACBDAQNFBQUFBQUFBQUDwaCEgEBLi4WAPjr6+vr6+vr6+vm4N2JgAzOy8/e7evr7fL29/r+ggH//4EVEiMjIwz79efc19vk5uXg3d0AD+zsD4OGHPrw5d/f3+j3AAUPGRzl4fD9DBoaGh0hJSgoKBsJggH29oWADDwzIRQUEQj+9vHx8PiCGfju7Ozbzs7O2e70/wkQFBQUIDM8PADsFBTsg4ACAAwAMwABADMAAAAXFBQVFRQUFRUUFA8P8fHu7u3t7u7t7e7ug4AJKCYDBRgW8/UiIoEJIiLs7hEP/P4hH4QX5ub29ubm9vbm5vb2CgoaGgoKGhoKChoag4AJ0tgA+tziCgTDw4EJw8MQCuLoBgDY3oQAgAIADAAqAAEAKgAAAIcOFBQP5vr5/gADBgUa8ezsg4AD5+cAGYECGQAHgQbi5eLg4eXigQAHhIcO4uLsLPf5AAIFCQrVFB4egwn2FBT27AoK7ADzgQZQSCESIUhQgQDzhACAAgAMAAQAAQAEAAAAhAAFg4QA8YMAgAIADAAOAAEADgAABgUBAgICAgIFChTsFOz2BdsA2wDbAAXs5yPdGRQFOgA6ADoAgAIADAAHAAEABwAAAAMUFOzsg4cD4uIeHoOHAIACAAwAAgABAAIAAACEhISEAIACAAwAPAABADwAAACAGv0IFBQUFAj9APHxAPXt7Ozs8fHs7Ozt9QDx8YMbDw8G/PsFBfrx8fEUFBQWEQXu7hIS++/q7OzsD4MbBffy9vb29vP4BQUFBQ0gLS0tBQUtLS0gDQUFBYMD9vb094EVCQwKCgrY2Njn+gAUFOvrAAYZKCgo9oMAgAIADAAPAAEADwAAAI8LCvHxCg/29g8O9fUOg48L9hQU9uwKCuzxDw/xgwCAAgAMAA0AAQANAAAGBQECAgICAgUKFAoUCuwD2xLtJYEF9tj22PYUAzDhEdCBgAIADACAAAEAgQAAAD8KB/b5FBQUBPv49vj9BQwPFBQU7Ozs/goLDAoF//nz7OzsFBQUBPv49vj9BQwPFBQU7Ozs/goLDAoF//nz7Ozsg4QqBf3x8fHu6+fk5OTs8fb28fcFBQUIDA8SEhIKBQAKDwf7+/v49fHu7u72+4EN+wEPDw8SFhkcHBwUDwqDP/vpBRfn5+f0AAYLCwgFBf729vYZGRkMAPr19fj7+wEKCgrn5+f0AAYLCwgFBf729vYZGRkMAPr19fj7+wEKCgqDgzsKGR4jIyMhHhsZGRkQBQoK+/Xx8fHz9vn7+/sFDwr2BQoPDw8NCgcFBQX88fb25+Hd3d3f4uXn5+fx+/aDgAIADABBAAEAQQAAAB8KB/b5Cgr7Bg4PDw8KCg8PDw4G+woK+/3z5+fn5/P9+4ODGw/s7Ozq7/sSEu7uBREWFBQU8fHx+gUF+/wGDw+DH/vpBRf29vbt287Ozvb2zs7O2+329vb2AwgFBQUFCQP2g4MV9igoKBkGAOvrFBQA+ufY2NgKCgoMCYED9/T29oMAgAIADABBAAEAQQAAAB8KB/b5AP0IFBQUFAj9APHxAPXt7Ozs8fHs7Ozt9QDx8YODGw8PBvz7BQX68fHxFBQUFhEF7u4SEvvv6uzs7A+DH/vpBRcF9/L29vb28/gFBQUFDSAtLS0FBS0tLSANBQUFg4MD9vb094EVCQwKCgrY2Njn+gAUFOvrAAYZKCgo9oMAgAIADAA1AAEANQAAABkKB/b5AAQNFBQUFA0EAPHxAPfs7Ozs9wDx8YODFQoKBPr2Cgb89vb2GxsbEgr27+Xl5QqDGfvpBRcKBPv29vb2+wQKBQUOITIyMjIgDgUFg4MD8fH1+4EIBAsPDw/V1dXqgQQWKysr8YMAgAIADAA0AAEANQAAABgKB/b5Dw8ACRQUFBQJAA8PAPzz7Ozs7PP8hIMVCuXl5e/2ChIbGxv29vb8Bgr2+gQKCoMZ++kFF/v78uDOzs7O3/L7+/b8BgoKCgoG/PaDgwTxKysrFoEI6tXV1Q8PDwsEgQP79fHxg4ACAAwADgABAA4AAAYFAQICAgICBRMKE+327QUU8QDxFAUF4fbhHwofBeIeBR7i+4ACAAwAAgABAAIAAACEhISEAIACAAwAHAABABwAAAAL9wcSB/cBCPny/AwBgwsH9gEL+/D3CAH2BxGDCxjkz+QYAukdNSDtAoML3A/65BgtFOH6D9zHgwCAAgAMADMgAQA/AAAAEA8AAgICAgIBAgQBAgICAQIEgQ0FDw8F9uz2BQ8PBfbs9g8O9Q8OCQUFCQ/7+vXx8fX7gxv79vHx8fb7BQoPDw8KBPv28fHx9vsFCg8PDwoEgxHdHh7d5+fv8vf7+/v79/Lt5+eBCQgLEBQUFBQQCwaFAIACAAwACgABAAoAAAQDAQICAgMK9gr2A+gL9hkD+wX7BQMj5xndgAIADAAPAAEADwAACAcAAQEBAgICAgcKB/b5CvYK9oMD6Av2GQf76QUX+wX7BYMDI+cZ3YACAAwAHgABAB4AAAAMBQXy9AIIA/byBQX7+4MMD+3v8fwBBhETFvHlG4MM8fHP0Nvg3NLP8fEPD4MM8CECAgEBAf//3w4V6oMAgAIADAAeAAEAHgAAAAz7BQX7+w4M/vj9Cg77gwwPG+XxExEPBP/67+3qgwwP8fEPDzEwJSAkLjEPgwzw6RQO3fz8/f39//8fgwCAAgAMACMAAQAmAAAAgwwFBfL0AggD9vIFBfv7g4AP4uIAD+3v8fwBBhETFvHlG4MQ8fEPD/Hxz9Db4NzSz/HxDw+DgA88PADwIQICAQEB///fDhXqg4ACAAwAIwABACYAAACDDPsFBfv7Dgz++P0KDvuDgA/i4gAPG+XxExEPBP/67+3qgxDx8Q8PD/HxDw8xMCUgJC4xD4OADzw8APDpFA7d/Pz9/f3//x+DgAIADAASAAEAEgAACAcBAgICAgICAoAGEQUR6vvqAAfnFPEA8RTnAAf75vvmJA8kBQcp3RkAGd0pAIACAAwABQABAAUAAACFAfsFg4UBCvaDAIACAAwAQAABAD8AAAAdFBQUBPv49vj9BQwPFBQU7Ozs/goLDAoF//nz7Ozsgx0FCgL29vbz8Ozp6enx9vv79vwKCgoNERQXFxcPCgWDHefn5/QABgsLCAUF/vb29hkZGQwA+vX1+Pv7AQoKCoOADA8UGRkZFxQRDw8PBvuBDPHr5+fn6ezv8fHx+wWEgAIADAAHAAEABwAAAwIBAgIAI4ECFPEKAL+BAucj4gCAAgAMABkAAQAZAAAADBQR8uwEBQUB///7/P2DhAYCAgoNCgIChAzs4R8U1/r6/f4BBAUog4QG0NPV1dXT0IQAgAIADAB6AAEAcwAAAIAFAwoKCgoCgQT19fX3/IEF/fb29vb9gQQQEBAMBYEd9/gADBARCQD58fHx8fkABg8PDw8GAAgIAPTw7/L8g4EA/oEAAoIE9vb2+P2CAAKBAP6CEAoKCggDAOzs5ub1CgAUFBQJgQT37Ozs94EKCRQUFBoaC/YA9+yDPPb08fHx8fkAAgkLDQsICAoNDw8PDwYA//f18/X4+AD27+/x8/z/AAYPDw8PBgD58fHx8fkACRERDw0EAQKDgQMDBfv7ggD/hgP9+wUFggABhB4ZGQ8EAAXu5+fn8vsFDhkZGQ4F+/Ln5+fx/AD7EhYZg4ACAAwAGQABABkAAAAMEB7i8BgCBAIBAQEB6IOEBigjHyAfJCiEDN/eICHi+/3/AAEEBh2DhAbDv8LGwb/EhACAAgAMABgAAQAZAAAABh4Q6P79//+CAhjw4oOCBtjd4ODg3diGDODfHgUDAQD//PrjISKDggY9QT06PkE8hoACAAwAKgABACoAAACBEvcJFBQUFAj89PT89uzs7Ozv9PeDgAbb29vp+w4HggcjIyMXD/H0+4WBEhQF8fHx8QAGFBQaJi0tLS0jEwqDgAY/Pz8qGtzqggfOzs7U3QoJBIUAgAIADAAOAAEADgAABgUBAgICAgIFDwr28RnnBSUAJQAlAAXi7BQe4h4FxgDGAMYAgAIADAAYAAEAGAAAAIEAFIMA0oEA04WAAt0CI4EFIyPlG93dhIEA2oMDSBoaToWAAjv/xYEFxcUT8Ts7hACAAgAMACEAAQAhAAAAARgMgQvu/v8CBP8BAwQY+OqDgAEjI4EH3+Dp7Ozp39+GD8TV5+cA7Ovt7+zu7+3SFBWDgAHJyYEHOUA1LS01PzmGAIACAAwAWgABAFwAAAAr/wMKDw8PDw0PFRoZGRkZGRoaGhrg/hMP//Hx8fH7/wkZGRkZC//25+fn5/aDgQT9+/sABIII+vQDA/bx7vP7gRbv18zP4/b7+wDd3e/7AAkgICANAPvv3YOAKvnr4uLi4uLi5eLg4uLi4uLi4eEiPUxDLx4eHh4MAPLi4uLi8QAPHh4eHg+DgBH/AAUF+v3////+Afv7Cvrs7fiBFu/XzMzc7AUEAjIyGwX65M3NzeX6BRsygwCAAgAMADEAAQAzAAAAGQoK5+fn9gAKGRkZ9vb2+vwGB/309fXx7+7og4ME8OPj4/CDAP+CB/r8BgYGDA8KhBnn5yMjIxQB7N3d3RkZGQ4GCAoLCgUFCQ8QGYOCBhUjMzMzIxWBARQMggYFDBAQEAoChQCAAgAMAAsAAQALAAAABxQU7OwUFOzsg4sH7OwoKNjYFBSDiwCAAgAMAGkAAQBeAAAANQYX+un7AAgICAgA+/fu7u7u9/sMDAwM++rq6uoFChISEhIKBQH4+Pj4AQUWFhYWBf709PT0/oOFA/77BQKCDgIF+/4A5eX7BRoaGgX75YED/vsFAoIQAgX7/gDm5vsFGhoaDgX78uaDNeMBHf/7+fDw8PD5+/0GBgYG/fvt7e3t+wkJCQkFBfr6+voFBQUQEBAQBQX39/f3BQwTExMTDIOFAAKBAP6CAP6BAwIADw+BAvHx8YEAD40BDw+BA/Hx8fmBAQcPg4ACAAwAnwABAKMAAAA/CB4P+f//AwMDA/////n5+fn///8KCgoK///8+/v7+ff27Ozs7Pb3+fv7+/z39v39/f329/jy8vLy+A4PFBQUFBUPDgwKCgoKDA4WIiIiIhUOCPz8/PwGg4MC9fX/ggMLCwsCgQH+9YEA/4EAAogAAoEA/4YC9fX+gQMBCwsLggH/9YEAAYEA/4IA/4EEAQDr6/qBBAcVFRUIgQH664Mg5RIc7+/q5eXl5evv8/f39/fy5+rg4ODg5+fp7vDy+P36gxb6/fjy8O7p8u3p6enp7PL2+vr6+vYKB4MVBwoNFBQUFA0KAv////8CChIVFRUVEoODDQ4OBwDx6uPj4+rxAAYOgRD/APHw8fHx8fHx8fHx8PEAAoYNDg4HAPHp4+Pj6fEABw6BAAGBAP+CAP+BBAEACwsIgQT59vb2+YEBCAuDAIABAAgADgABBgUAAgICAQMFFAAU7OvsgAQQ8ADwEIACAAwAYQABADQgAAAvAwgODg4HA//39/f//wMKCgoD//vz8/P7AwcODg4HA//39/f//wQKCgoE//vz8/P7gwQWFhALB4IDBwsQFoEI+vXx6urq8fX6gg769fHq6urx9foAFhYQCweCAwcLEBaDEA8BAgQCBAIEAgQCBAIEAgQCD+zi/AYF+xUf7OL8BgX7FR8P3uwA7AAOIg4ADiIO3uwA7IACAAwAOAABADgAAAAZFBTx8QAEDRQUFBQNBADx8QD37Ozs7PcA8fGDgBjb2wAKCgT69goG/Pb29hsbGxIK9u/l5eUKgxn29gUFCgT79vb29vsECgUFDiEyMjIyIA4FBYOABjo6APHx9fuBCAQLDw8P1dXV6oEEFisrK/GDAIACAAwANwABADgAAAAYDw/s7A8PAAkUFBQUCQAPDwD88+zs7Ozz/ISAGNvbAArl5eXv9goSGxsb9vb2/AYK9voECgqDGfv7Cgr7+/Lgzs7Ozt/y+/v2/AYKCgoKBvz2g4AHOjoA8SsrKxaBCOrV1dUPDw8LBIED+/Xx8YOAAgAMAAIAAQACAAAAhISEhACAAgAMADAAAQAwAAAAgBQEDRQUFBQNBADx8QD37Ozs7PcA8fGDFQoKBPr2Cgb89vb2GxsbEgr27+Xl5QqDFQoE+/b29vb7BAoFBQ4hMjIyMiAOBQWDA/Hx9fuBCAQLDw8P1dXV6oEEFisrK/GDAIACAAwAPAABADwAAAAbCgr7Bg4PDw8KCg8PDw4G+woK+/3z5+fn5/P9+4MbD+zs7Orv+xIS7u4FERYUFBTx8fH6BQX7/AYPD4Mb9vb27dvOzs729s7Oztvt9vb29gMIBQUFBQkD9oMV9igoKBkGAOvrFBQA+ufY2NgKCgoMCYED9/T29oMAgAIADAAvAAEAMAAAABQPDwAJFBQUFAkADw8A/PPs7Ozs8/yEFQrl5eXv9goSGxsb9vb2/AYK9voECgqDFfv78uDOzs7O3/L7+/b8BgoKCgoG/PaDBPErKysWgQjq1dXVDw8PCwSBA/v18fGDgAIADAAhAAEAIwAAAAQeEusDAYMH/hju4/39CwuDggbJ0t/i39PKggMN7u4NgxDf5yYNBwICAfz23Rkk9fUJCYOCBiI4R0ZHOSKCA+8bG++DAIACAAwANQABACIAAACBA+LiBQWBAR4egwH7+4MGBRrm/CUA3IOAE+3tAA3t7Q0A7e0ADe3tDQDh4QDtgQPt7RDtg4EBHh6DAeLijAMBwQBCg4MA5IEA5IMA5IED5AAmJoUAyYSAAQAIADwAAAAb2uzs2iQUFCT9//7699jY9/r+//39AQUoKAUA/YOAAegWgRYW6wAeHiEfGNcq6OHg4uLf3+gq1xgiIYMAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADABIAAEASgAAACMQEBALBAD69PHx8fHu7O3n3t7o6ujoAQsZGRkZCwH35+jo6PWDgAIFBAGDAwIF+/6DEwkO4uIUAN3d7PYLFSMjIxQL9urdgyPk5OTs+QAGFR4eHh4cGRkYGxssHSAgAfLi4uLi8gEQICAgIA+DgAL19/yCBfz29QoIA4IBBQ6BD/YANDQfCvbizMzM4vYKHTSDAIABAAgAAwAAAQAAAP+AgAIADAAcAAEAGwAAAAv0DBcL8/8M9OfzC/+DCwz0/wvz5/QM//MLF4MKFurU6hYA6hYsFuqEC+oWAOoWLBbqABbq1IOAAgAMAH8AAQB5AAAAgD0EDhQUFBQOBQD79PHx8QsLDw8PCQQFBQUFBQUEDA8PBwoPDw8KAgD59vb29voABQX7Ag8PDw8C+/Ln5+fn8oMHAQEDBAb7/f+CAv349oEDCgoKBYIDAQAKBYIg/vf29vb2/w8aGhoK+wb34+PjAe7u9vYJChISEg0KAPjug4As+PDs7Ozs8foABxAUFBTs9vLs7Oro7Ozs7Ozs6Ors7Ov27Ozs7/gACRQUFBQGgwz37Ozs7PQACxQUFBQLgwQBAQD/AYUC/f4FgwELBoIICAoAAgoKCgUBgRz9BfDg3d3d8QABDiQkJAEWFggA//b09PT3AAoOFoMAgAIADABjAAEAZwAAADL2AAoKCgoZJCceGRkZFQ8KBPv39x8fGA4KBPnx8fH9Bg4d8fj7KQ0M9gIWIQb44uLi4vCDgwnyBBAI7PT+//z9gg/9/QEBBhQhISEVBgH78eXghAwfAN3d7gMcHgbyAPPdgwkF9+vr6+sAEggIgiUFDhQYHyQk9/f+ChQaIygoKC8z+t4MFw7i/QQOBe/o+QsdHR0dF4OBCxQo8QkeFtfZ6fD0+oIP+vHt7eXa1tbW2N7j5OXeJoEA+oEM3AAoKBH86eTp8SgnKIMAgAIADAANAAEADCAABwYBAwEDAgICBg8jIw/xD/GAAewUgwQDCAICAgPxD/sZg4ACAAwAnQABAJ0AAAA/8/cDDRDj4unzGBYaGhoZIBERFhYWCQQEBw4SEhII+QUB8/AdHhMF+fTq6uru8gH48vLyAA0NB/nw8PADGAUGEQwcHBwUDA0M/O7u7voKgxz///369vbs3Nzc3Obu9gkJDxIOEQ0LFBEWHRgMBoMrBgoKFCMjIyMXDgX8+vT09fX5+O3w6+fr8/r///Lx8vT2/wwPERMOBwMA+fSDP//v4t/gFxQH///z6urq9//+7uHh4eDt7eri3d3d7fv7Eh4d5un3+/sEExMTAfYDFSIiIiEZGRsdICAgEP/w7+0M7Ozs8vUIDBIWFhYMBYMc///9/gICDx8fHx8VC//w7/D08PL05ebm7fn78/mDKwH5+ezg4ODg7PgBEBIPCwYGBhEMDAkFAwQC//8WFgr69fLt7erq9AEECBASgwAAAgAMAEggAQAuIAAXFgUBBQEHAQIBAgMBAgECBwUCAwIBBAICFgcH+/kBAwUFA//9+/v9CvYK/Pb2BQr2gAQBAAH0+IECCQwJgQD4gQEHD4EA8YEODSUBAQEBAwECBAIBBAICDfv29vb2BAr2BQoK/PYKgAwGCvb6APr27PYKFAoGAAIADABjIAEAMiAAIB8FAQUBBgEBAQIBAgECAwECAQIDAQEDAQECAQEBAQIBAR8HB/v5BP/w9AEDBQUD//37+/0KAfv3+wH7+wEFDAwFAYAIAQABAAYGAPT4gQIJDAmBAPiCCgUFBQD7+/sABAoKEA8SAQEBFAEBAgEBAQIDAQIDD/b4DAr2AAMKCgMACvv29gqAAQUFgwj7+vv7AAoG+vYAgAIADABPAAEATgAAACgMDAcH+fn09AQE6vDx+f0ACAkP9vYJCQkIBgYFAPz5Av/79vX08/Hx8YOAARMTgQETE4QE//r3+v+EEQoEAgYKCwkACwsACgwKBgIECoQB+/uBDgUFBQX6+gH8/Pz9/f/++YET9vb2+fv9//35AvkD/v3+/wMEBASDgAHx8YEB8fGEAP+CAP+EA76+0vGBAfPigQfh8vz78NfFxIQAAgAMACIgAQAQIAALCgECAQIBAwEBBAIECgIFBQD9+/0BCgH2gQABgwP1BQv7BAMNAwIEA/rxAQ8DDvnxBoACAAwABwABAAcAAAADGRTs8YOHA+fnGRmDhwCAAgAMAAsAAQALAAAABxQP5+wZFOzxg4sH9vYoKNjYCgqDiwCAAgAMAAcAAQAHAAAAAxQU7OyDhwPi4h4eg4cAgAIADAALAAEACwAAAAcUFOzsFBTs7IOLB+LiHh7i4h4eg4sAgAIADAAOAAEADgAABgUBAgICAgIFFAoU7PbsBRTxAPEUAAXi9uIeCh4F2BQAFNgAgAIADABTAAEAVQAAACj3/AcPDw8PBQD78fHx8fwE9gQRFBkZGRkKAPXn5+fn8PcBDREQ9PT294OBBP78+woIgh0HCvYEGRwY8fb3+PYKFiUlJRYK++/b29vh6+8GBAGEKAgA7uLi4uL1BQ8eHh4eFA3p3fz07Ozs7PkFEB4eHh4TCAH37+0ZFxMMgwb29v0KFOLvgh7u4vb59/TmBxYUA/bi2dDQ0NniFCArKysmHxv49/b2gwCAAgAMABYAAQAWAAAKCQECAgICAgICAgIJFAoUChTs9uz27AkU8RPwAPAT8RQACeL24vbiHgoeCh4J4h7iHgAe4h7iAIACAAwAbAABAHIAAAAkDw/tDw8MBwQFCAsMDAzw8BLx8PT5+/n39fPz8wUECgoKCgQFBYMOBQUMEhISEgwF/fj4+Pj9g4IJqam82ebav6aVkoMJS0k5IhgjPldqboID+PEPCYISCQ/x+ADv7/v7BQoREREKBfv774Md9vYjAwMEBgcC9ezl5eUXF+oHBgYGBgsXIigoKAD9gwL9AAKDDgIA+/Hx8fH7AAQPDw8PBIOCBjw5KRcPMH1CAMYBAAEOgwbEytrq8M6BQv83/v7+8oID+vYKBoISBgr2+gAPDwj8BPzx8fH8BPwID4MAgAEACAAHAAAAnQL9+vuHqIACAAwADQABAA0AAAAGHhvl4g8A8IOEABCEBtjXKSjYACmDhADahACAAgAMABYAAQAWAAAAARIHgQHu+YmAASMjgQPd3QAjgQAjgwHh9IEBIA2JgAHExIEDPDwAxIEAxIMAAAIADACaIAEAgiAAMjEAAgECAgEBAgQBBAQCAgECAQECAgEDAgICAQICAQEBAgICAgEEBAMCAgIBAQIBAwICAjEVFxkZFRIQKQwA7ADs6efn6ezw19fw1+wVFSkQEBIVGRkVDADsAOPX8Ozp5+fp7BUpEDEpDBEXHR0XFAALAOLX9O7o4+Po6/UU69f0APXr6OPj6O701+IpCwAUFx0dFxEMDCkU6yopAAIDAQUCAQQCAQMBAgMEAgIDAgICAQECBQMBAgQDAwEBAwIBBAMCAgICKfH09vTh6fEAEAgACBAKExUfFR8Q8fHp4fT29PEACAAIEB8VEwoQEPHh6wTh6/P28IEA6YEKFh8VDwoPCPAPHxWBBw8KEhUfCOH3gQjw8/bw6+vh8A+AAgAMABoAAQAaAAAACgoK9vYeG+XiDwDwgwAjgQcjIyMjIyMzI4MK+/sFBdjXKSjYACmDANiBB9jY2NjY2LLYgwCAAgAMAAIAAQACAAAAhISEhACAAgAMADcAAQA1AAAACQUHBgL8+/Hn5+eCCv4A/v8DCQoRGRkZggAEg4EGBg8VFRUKBYEBBQKCBvrx6+vr9vuBAfv+hIAD/v39/oQI7Ozs9wACAwMChAMUFBQJgwzi4t/b2NjY19ri4ufuggYDBwoKCggDgQL79OKDAIACAAwAfQABAHcAAACALAQOFBQUFA4FAPv08fHxCwsPDw8JBAUFBQUFBQQMDw8HCg8PDwoCAPn29vb2+oIN+wIPDw8PAvvy5+fn5/KDBx4eICEj+/3/ggL9+PaBAwoKCgWCAwEACgWCDv739vb29v8PGhoaCvsjFIIOHu7u9vYJChISEg0KAPjug4As+PDs7Ozs8foABxAUFBTs9vLs7Oro7Ozs7Ozs6Ors7Ov27Ozs7/gACRQUFBQGgwz37Ozs7PQACxQUFBQLgwS/v83b3YUC/f4FgwELBoIICAoAAgoKCgUBggkF8ODd3d3xAN3qgg6/FhYIAP/29PT09wAKDhaDAIACAAwAvwABAMUAAAA/9f8JCQkJGCMmHRgYGBQOCQP69vYeHhcNCQP48PDw/AUNHPD3+igMC/YCFiEG+OLi4uLw9gAKCgoKGSQnHhkZGSEVDwoE+/f3Hx8YDgoE+fHx8f0G+ykNDPUBFSAF9+Hh4eHvg4MJ8gQQCOz0/v/8/YIP/f0BAQYUISEhFQYB+/Hl4IQMHwDd3e4DHB4G8gDz3YMJ8gQQCOz0/v/8/YIO/f0BAQYUISEhFQYB+/HlgQwfAN3d7gMcHgbyAPPdgwkF9+vr6+sAEggIgj8FDhQYHyQk9/f+ChQaIygoKC8z+t4MFw7i/QQiGQP8DR8xMTExKxkL/////xQmHBwUFBQZIigsMzg4CwsSHiguFDg8PDxDRyL2ERgOBe/o+QsdHR0dF4OBCxQo8QkeFtfZ6fD0+oIP+vHt7eXa1tbW2N7j5OXeJoEA+oEM3AAoKBH86eTp8SgnKIELFCjxCR4W19np8PT6gg768e3t5drW1tbY3uPk5d6BDNwAKCgR/Onk6fEoJyiDAIACAAwBGgABAR8AAAAR/wkTExMTIi0wJyIiIh4YEw0EgT8oKCEXEw0C+vr6Bg8XJvoBBDIWFfYCFiEG+OLi4uLw9gAKCgoKGSQnHhkZGRUPCgT79/cfHxgOCgT58fHx/Qb7PCkNDPYCFiEG+OLi4uLw9gAKCgoKGSQnHhkZGRUPCgT79/cfHxgOCgT58fHx/Qb7KQ0M/wsfKg8B6+vr6/mDgwnyBBAI7PT+//z9gg/9/QEBBhQhISEVBgH78eXghAwfAN3d7gMcHgbyAPPdgwnyBBAI7PT+//z9gg79/QEBBhQhISEVBgH78eWBDB8A3d3uAxweBvIA892DCfIEEAjs9P7//P2CDv39AQEGFCEhIRUGAfvx5YEMHwDd3e4DHB4G8gDz3YMJBffr6+vrABIICIIvBQ4UGB8kJPf3/goUGiMoKCgvM/reDBcO4v0EDgXv6PkLHR0dHRcF9+vr6+sAEggIgisFDhQYHyQk9/f+ChQaJCgoKC8zDuL9BA4F7+j5Cx0dHR0XBffr6+vrABIICIIhBQ4UGB8kJPf3/goUGiQoKCgvMw7i/QQOBe/o+QsdHR0dF4OBCxQo8QkeFtfZ6fD0+oIP+vHt7eXa1tbW2N7j5OXeJoEA+oEM3AAoKBH86eTp8SgnKIELFCjxCR4W19np8PT6gg768e3t5drW1tbY3uPk5d6BDNwAKCgR/Onk6fEoJyiBCxQo8QkeFtfZ6fD0+oIO+vHt7eXa1tbW2N7j5OXegQzcACgoEfzp5OnxKCcog4ACAAwAbwABAHIAAAAVBQ8ZGRkZDwUFBQX/8fHx8f8FESYvGoEXCAcHCTg0LSgoKCQeGRMKBgYuLicdGRMIggIMFQqHgxby+wEBARoaGgLyAPPd3d3uAOjoCwsA/YEF7/f///z9ghP9/QEBBhQhISEVBgH78eUAGfb2GYMVFAb6+vr6+PUdHR0lLCwsLCYdGgsF/IEdDSsvJvEYGA8PDxQdIycuMzMGBg0ZIykzNzc3PkIdh4EYFCjxAQ8PD/b29vPxKCcoKCgcEyMj5+cA/oEF1Nbo8PT6ghP68e3t5drW1tbY3uPk5d4A3RkZ3YOAAgAMAAoAAQAKAAAEAwECAgIDFOwA7IAC8RQAA+IeAB6AAh7iAIACAAwAJwABACQAAAASCgri4ispIh8X6fbpFx4jKizi4oOCBPHx8/r/gQABgQT/BQwPD4QS9vYyMqSmqavJEAUQyaiop6YyMoOCBB4eHBkYhATj4+Li4oSAAgAMAFUAAQBXAAAACBkZGBgfHRkZDYEgDhkZHR8YGBkZGA3+9vXx8PXx8fHx8fDx9fb+DRgUFOzsg4AR3d3d6vARCQEB///37hAWIyMjgg8ECxDu7O7u7hAQEBER8PX8iSv29gDs3d3d3ez29u3d3d3d7gD29h4aGRoZGRod+woK+xwaGRkaGRoe4uIeHoMS/zs7OzEhEwoBAf//9eve08TExIIR+/Ty/xUdHR3h4eHq/xIOBv//hwCAAgAMAAsAAQALAAAGBQECAgICAgUKFArsFOwB3SODBQ/xDy3TDwE8xIOAAgAMAAUAAQACAAAAAfsFg4WFhYACAAwADAABAAwAAAYFAQICAgICBRXtAO0Z8YAB8RSCBeIeAB7iHoABHuKCgAIADAAoAAEAKAAAABYUFOzsFBTs7BQU7Ozs7Ozs+A0SDfns7IOKC+gWANLm7v0BBRQdL4MW4uIeHuLiHh7x8S0ZGS0t6Obj4uLm6S2DigsW6gA7CwgDAv/29MWDAIACAAwAEAABABAAAAgHAQICAgICAgIHFe3e7d7tGfGAA+gL9hmCB+IeAR4BHuIegAMj5xndgoACAAwAJAABACQAAAASFBTs7BQU7Ozs7Ozs+A0SDfns7IOGC+gWANLm7v0BBRQdL4MS4uIeHuzsKBQUKCjj4d7d3eHkKIOGCxbqADsLCAMC//b0xYMAgAIADAAOAAEADgAABgUBAgICAgIFFOwA7ADsgAToC/YZAAXiHgAeAB6ABCPnGd0AgAIADAAyAAEAMgAAABcKCuLiLxfp9ukXMOLi4hYeHx4dHh8fFeKDggHo6IEAAYENGRkA9vb//wEBAf//CwuDDvb2MjKoyRAFEMmpMjIyFUD/fweeurq5oIIUMoOCASMjhA3d3QAZGazZ///+I1Hn54MAgAIADAAgAAEAIAAAAA4UFOzs7Ozs7PgNEg357OyDggvoFgDS5u79AQUUHS+DDvHxLRkZLS3o5uPi4ubpLYOCCxbqADsLCAMC//b0xYMAgAIADAB9AAEAgQAAABEUFBYVF+/vBRQUFBcXFxcVFBSCAfbvgwn3+QgOCfr39gICgQX19/39/f+CDhElJSUSBQAUFATv7+/r5oOBDv38+/vs2twVFRQPDQwEAYEZAQMGCeUbD+rt7vn+AxETKyUjI/D09PPz9PyBD9zZ5/UDFxscESMlFgkG/fWDPvb28OXnIyMM9vYF893d3en29vv7+fXzGRns7Nna3+Hg3Nnd7fn7++0FGRkZCfv7++3d3d3Ftfv29gYZGRkVDoOBDgEICgoeNTTd2Nfi7/gAAYEZ//8BBBXq8B4A//39/f7/4NfOzhwjJB8QCP+BDzIvHAsL++gk/s3N3+34DhmDAIACAAwAFgABABYAAAoJAQICAgICAgICAgkYDxjyDujx6A7yCRTxAPEA8RQFFAUJ4fbhH+EfCh/hHwniHgUeBR7i++L7gAIADAAeAAEAHgAADg0BAgICAgICAgICAgICAg0TChPtE+0T7fbtE+0T7Q0U8QDxAPEA8RQFFAUUBQ3h9uEf4R/hHwof4R/hHw3iHgUeBR4FHuL74vvi+4ACAAwANgABADYAAAALHR0eHh0d9/f29vf3gQbt7/0D/vHtgQH29oMYDxQU8fH29vHxFBQPD+3v8fwBBhETFvHlG4MB4eGBA+HhHx+BDh8f7OzKy9bb183K7OwKCoOAA+LiHh6BER4e4uIA8CECAgEBAf//3w4V6oMAAAIADABMIAEARiAAGBcBAgICAgICAgEBAgECAQIBAgECAgEBAgIABYEU+wD7AwQEA/z7+/0DBAQD/Pv7/QUAF937Cijd+woA+vb2+gUKCgb79vYABgoKKBYVAQICAgICAgIBAwEBBAEBAQMBAQEDAgDngRIZABn37OwJFBT37OzsCRQUFOcAFSPnGd0j5/EACRUJAOv0+gQPBPr0Gd2AAgAMADsAAQBIAAAAjxMRFhbq6u8QERUVFREQ9/Py8vL294MRCufnChn29hkK5+cKGfb2GfbYgQHY9oEJ/Pv69vb29vn6+4UB5+eDARkZgQMZGefngQvo5uYaGhgA+PHx8fiBBQUPDw8I/4MR5yMj590ZGd3nIyPn3RkZ3R7igQHiHoEJBQoQFBQUFA8JA4WAAgAMAAsAAQALAAAAiwcL6OgLGfb2GYOLB+cjI+fdGRndgwCAAgAMAA8AAQAPAAAAjwsW/f0WAOfnAAvy8guDjwv2FBT27AoK7PEPD/GDAIACAAwAKwABACsAAAATFzAKChYeHx4dHh8fFQoKLxfp9umDgA4ZGfb2//8BAQH//wsL6OiBAAGEBMmp+/sVQP9/DZ66urmgghT7+6jJEAUQg4AO3d0ZGazZ///+I1Hn5yMjhwCAAgAMACsAAQArAAAAExcwCgoWHh8eHR4fHxUKCi8X6fbpg4AOGRn29v//AQEB//8LC+jogQABhATJqfv7FUD/fw2eurq5oIIU+/uoyRAFEIOADt3dGRms2f///iNR5+cjI4cAgAIADABDAAEAQwAAAB8rRAoKKjIzMjEyMzMpCgpDK/0K/RceHx4dHh8fF+n26YOADhkZ9vb//wEBAf//Cwvo6IEAAYEG//8BAQH//4EAAYQEtZX7+wFA/2sEiqampYxA/26AEvv7lLX88fzJqLS7uru1q8kQBRCDgA7d3RkZrNn///4jUefnIyOEBuP1AP/9CBiHAIACAAwAMAABADAAAAAXKQ8KCiccKQoKDyn78+7v+ikcKfvz7u/6g4AIGRn29gALC+jogQIB/wGEAgH/AYQXm7r7+5CmkPv7upviA/EA4sPOwworGSgKg4AI3d0ZGQDn5yMjgQIdAOiEAh0A6IQAgAIADAArAAEAKwAAAAEPHIEBCBaBAwIP8eSBAfjqgQH+8YOABxQU9vYKCuzsgQfs7AoK9vYUFIQT48zs7PPT7Oz54x81FBQPLxQUCB+DgAfd3RkZ5+cjI4EHIyPn5xkZ3d2EAIACAAwAIQABACEAAAAOBQwNDAsMDQ0F1/H29vDXg4AG//8BAQH//4ED7+8SEoQOzKu3vr2+uK7ME/MFBfMTg4AG4/UA//0IGIEDHh7i4oQAgAIADAA3AAEANAAAABkHDg8ODQ4QDwfZ8y4rIx8X6fbpFx4jKy/y2YOABv//AQEBAP+BBO/v8fn/gQABgQT/BA0SEoQZ+tnl7Ovs59z6QSGlp6mryRAFEMmoqKemIUGDgAbj9QD//QkYgQQeHhwZGIQE4+Pi4uKEgAIADAACAAEABQAAAIWFAQ8Zg4WAAgAMAAIAAQACAAAAhYWFhQCAAgAMACgAAQAfAAAAER4e4+f1+/v15+MeHuzsHh7s7IMRGPX19wADAQQNDgjo6hcpBgEkg4EHwMTa5OTbxMCLgBAvAQEBAAMB///QABfo+h8H4oOAAgAMADgAAQA3AAAAGQcPB9nzLxfp9ukXMPPZ2hYeHx4dHh8fFdrmg4AAAYEB6OiBAAGBDhkZAPb2//8BAQH//wsLAYMP+uv6QSKoyRAFEMmpIkFMFUD/fwieurq5oIIUTDaDgAD/gQEjI4QN3d0AGRms2f///iNR5+eEgAIADAAFAAEAAgAAAIWAAAGDhYWAAgAMACEAAQAeAAAADvgA+Mrk9vbjygwUDN7r3oOAAAGBA+/vEhKBAAGBAAGEDvrr+kEhBQUhQfrr+kE2QYOAAP+BAx4e4uKBAP+HgAIADAArAAEAKAAAABP4//jK5Pf3y9fL9/fkygwTDN7r3oOAAAGBCOjoCwsB9vYZGYEAAYEAAYQT+uv6QSIFBUw2TAUFIkH66/pBNkGDgAD/gQgjI+fnABkZ3d2BAP+HgAIADAACAAEAAgAAAIaGhoYAgAIADAAeAAEAHgAAAA4XChfp4d3V0AUFztHY3eiDgwkB/PPu7hERDgcBhAfw+/A3WFhZWoEEW1lWVTeDgwkdHR4eHuLi4+fohACAAgAMAB4AAQAeAAAADhcKF+nh3NTR9vbT1Nnd6IODCQH78u/vDQ0LBQGEDvD78DdYWFlaBQVgXVhVN4ODCR0dHh4e3d3f5eiEAIACAAwAGQABABkAAAAMHh729h4ezugXChfp0YMA74MBEhKEAO+DDM7OCgrOzls38PvwN1qDAB6DAeLihAAegwCAAgAMABwAAQAZAAAADRcKF+nRLRfp9ukXL87og4MB7++BAAGBARIShA3w+/A3WqTJEAUQyaZbN4ODAR4ehAHi4oSAAgAMABwAAQAZAAAADRcKF+nRECn77fopD87og4MB7++BAP+BARIShA3w+/A3WuPDChkKw+NbN4ODAR4ehAHi4oSAAgAMAAIAAQAEAAAAhYUA+4SFAIACAAwATQABAE8AAAANIRQh8+vr5+bm5+fy5+eDFfb2ERYW6urvEBEVFRUREPfz8vLy9veDgxEBAf///wEBABLv7xIS7+8S9tiBAdj2gQn8+/r29vb2+fr7hR/w+/A3WExERkVLVTctLfb2CgoFBejm5hoaGAD48fHx+IEFBQ8PDwj/g4MRHQz+AAH36ADiHh7i4h4e4h7igQHiHoEJBQoQFBQUFA8JA4UAgAIADACWAAEAlwAAAD73EhshGgoEAgodKCIWCxYcEgH8AAMJDAwM6urq7vT3+/bl2t/s4NTN2Ovy8uzd1tzkAPjx9P39+voCBf8ACgqBBhMRA/0CDxOEPx4LEBcRBAEICAUECBTz6OTr9/0A+eTX3fb23dfk+QD89+vk5/ITBwMDBQUBBBEYEAodIysiEAoKESMqIw8b5fEIExEPBP/67+3qgz8N69TX5vX4+fbm1dD2BN/k7/j6+vjv6OjoEhISCwMBAAELFhv2BSokFAUBAwYUJCgQ7gUB/f39/wD/+/cP8fEPCA8xMCUgJC4xD4ME9Azr8PmBEPz69/f57BMgHhMHBAQGEyIogRAoIhMGBAQIFB4gE+z59/j5+4Eb+vHsDPTT2ev8///869jT8OkUDt38/P39/f//H4OAAgAMALAAAQCtAAAAP/wXICoSCQcPIi0nGxAbIRcGAQUIDhEREe/v7/P5/AD76t/k8eXZ0t3w9/fx4tvh6QX99vkCAv//BwoE+wUF+/sUDgz++P0KDvsFBfL0AggD9vIFBfv7gz8eCxAaBgEICAUECBTz6OTr9/0A+eTX3fb23dfk+QD89+vk5/ITBwMDBQUBBBEYEAodIysiEAoKESMqIw8b5fETFBEPBP/67+3qD+3v8fwBBhETFvHlG4MyEO7X1eT7/Pnp2NP5B+Ln8/v9/fvy6+vrFRUVDgYEAwQOGR75CC0nFwgEBgkXJysT8QgEgh4CAwL++g/x8Q8PMTAlICQuMQ/x8c/Q2+Dc0s/x8Q8Pgxb0DOvp8wD8+vf3+ewTIB4TBwQEBhMiKIEQKCITBgQECBQeIBPs+ff4+fuBKPrx7Az009nr/P///OvY0/DpFA7d/Pz9/f3//x/wIQICAQEB///fDhXqg4ACAAwAIQABACEAAAAOFBQUFOzsFBQUCPPu8wgUg4ABFuiCCNIvHRQFAf3u5oMO0+fn0w8P09MXGh4eHRsYg4AB6haCCDvF9Pb/AgMIC4MAgAIADAAlAAEAJQAAABIUFOzsFBQUFOzsFBQUCPPu8wgUg4QBFuiCCNIvHRQFAf3u5oMS4uIeHtPn59MPD9PTFxoeHh0bGIOEAeoWggg7xfT2/wIDCAuDAIACAAwAKQABACkAAAAWFBTs7BQU7OwUFBQU7OwUFBQI8+7zCBSDiAEW6III0i8dFAUB/e7mgxbi4h4e4uIeHtPn59MPD9PTFxoeHh0bGIOIAeoWggg7xfT2/wIDCAuDAIACAAwAPAABADwAAAAd9vYUFxYWFhcU9vb29goKCgoK7Ono6ejp7AoUFOzsg4AY0fn8/wEDCAonAOwaARjpAC8MCQcGBP772ocdHh7Z2dna2dnaHh4KCuL29uLiJycmJiYmJuLi4h4egxkBQA4NCAcE/PvIABbqAuoWAMHz8/r9AAYGOocAgAIADACBAAEAfgAAAAQFBRQgKYE39vYJB/nz+AYJFhUSBQUFBwgICAYFBfHx8e7tFRUA8fHm6O7u7vLx8fEAFhYWBPbxBQX04ODg3teDgBr///r4G+XxExEPBP/++Pbc29zcFRUUEA0MBAGCDQMFAwMSJSTw9PTy8/X/gQ/d3ez1AxcbHBEkJhcJB/31gz7r6/MDFufnBQUnJhsWGiQnJQ/36+v659LS0t7r6/Dw/wwLz8/g8PDi+g4ODv7w8PDi0tLSu6rw6+v7Dg4OCgODghj47ukUDt38/P39/v7+GyYyMt3Y1+Pv+AABgwz79vbjzMwcIyQeEAj/gQ8yLxwLC/voJP7Nzd/t+A4Zg4ACAAwAmQABAJMAAAA/BQUVJC4FBfv7Dgz++P0LDhsYEwUFCgwNDQ0JBQXx8e7g2vv7BQXy9AIIA/by6O7y8fHr7fPz8/Tx8fECGxsbCQn78QUF9+Xl5ePcg4Aa///7+Bvl8RMRDwT//vj23Nzc3BYVFhANCgQCgRkCBAgK5RsP7e/x/AEGERMpJiUj8vTz8vPz/YEP3Nvr9QMXGx4TIyUWCQf89YMc+/sDEyb29hQUNjUqJSkzNjUfB/v7Cvfi4uLu+/uBEPvz8QoK7OzKy9bb183K4+39gQXyCh4eHg6CDvLi4uLLugD7+wseHh4aE4OCGPju6RQO3fz8/f3+/v4bJjIy3djZ4+/4AQKDFwMFFerwIQICAQEB/v/e2NDOHCMkHhAI/4EPMi8cCwv86AYczc3f7fgOGYMAgAIADABbAAEAWwAAAAQhFCHz24EB2PKBA/b2CQyBAQkPgQcMD/bzDRD39IEB9/GBCfTxCg3z8PAKEPaDgxHv7xISABLv7xIACgr19QsL9vaBAfb2gQf29gsL9fUKCoEGCgoA9fULC4ME8PvwN1qBAVs3gSEFBfPr8fHw7ezs8uoNFfLqDRUPDxATFBQOFvPrDhYT8O0Qg4MRHh7i4gDiHh7iAOLiBQX7+x4egQEeHoEHHh77+wUF4uKBBuLiAAUF+/uDAIACAAwANQABADYAAAAB//+BCv//2dnY2NnZAAoKgQYTEQP9Ag8ThBgPFBTx8fb28fEUFA8PG+XxExEPBP/67+3qgwHh4YED4eEfH4EOHx8P8fEPDzEwJSAkLjEPg4AD4uIeHoERHh7i4gDw6RQO3fz8/f39//8fg4ACAAwAUAABAFAAAAAlExMUFBMT7e3s7O3t+wUF+/sODP74/QoO+wUF8vQCCAP28gUF+/uDJQ8UFPHx9vbx8RQUDw8b5fETEQ8E//rv7eoP7e/x/AEGERMW8eUbgyXr6woK6+spKQoKKSkP8fEPDzEwJSAkLjEP8fHP0Nvg3NLP8fEPD4OAA+LiHh6BHh4e4uIA8OkUDt38/P39/f//H/AhAgIBAQH//98OFeqDAIACAAwAKAABAB8AAAAR7B4e7OwnIxUPDxUjJ+zsHh7sgxEYF+roCg0MAwAC/vXz9ikjAgiDhAdAPCUcHCU8QIiAA+gXANKBCgMFAgMFBTD64Qghg4ACAAwAIwABACIAAAARFwoX6dAeHvb2Hh7N6OceHurcg4MB6OiDBxkZAPb2Cwv/gxHw+/A3V87OCgrOzlg3L87OLkSDgwEjI4MG3d0AGRnn54SAAgAMABwAAQAcAAAADRcKF+nQ9vbq3Of29s3og4MI6OgLC//29hkZhA3w+/A3VwUFL0YwBQVYN4ODCCMj5+cAGRnd3YQAgAIADAApAAEAJQAAABMhFCHz2i8X6fbpFzDX8vEWHRX05oODAejogQABgQgZGQD29gELC/+DE/D78DdXqMkQBRDJqVg3MNG60C9Gg4MBIyOEB93dABkZ/+fnhACAAgAMACkAAQAlAAAAExcKF+nQLxfp9ukXMM3o5xUdFerdg4MB6OiBAAGBCBkZAPb2AQsL/4MT8PvwN1eoyRAFEMmpWDcw0bvQL0aDgwEjI4QH3d0AGRn/5+eEAIACAAwAKQABACUAAAATFwoX6dAPKfvu+ikPzejnJxwp6tyDgwHo6IEA/4EIGRkA9vYACwv/gxPw+/A3V+LDChcKw+JYNy+4zrguQ4ODASMjhAfd3QAZGQDn54QAgAIADAAwAAEAKwAAAIAUCgoA9vb+FBQbHhsUFALk5eLg4uXkg4AUFOwA7BTa+Pn9/wEHCCYFBAD//vz7g4UP+MLC09rTw8ABNjUmICY1NoMJ7OoVFBXqFgECAYEJAQPqAf//AP/+/IOAAgAMAAIAAQACAAAAhYWFhQCAAgAMABsAAQAYAAAADgP2A9W99va/1BcKF+ne6IODA+/vDQ2EAP+EDgQPBEtuBQV0S/D78DdGN4ODAx4e3d2KgAIADAAlAAEAIgAAABMD9gPVvB4e1sjTHh651BcKF+nc6IODCOjoCwv/9vYZGYQA/4QTBA8ES2stLUJYQy0tbEvw+/A3RTeDgwgjI+fnABkZ3d2KgAIADAACAAEAAgAAAIaGhoYAgAIADACCAAEAgwAAAD8XChfp2+36+vr7+vXx8Ozr7PH2+wACAf77+PX1+QAHDxQUFPHx8fwFBggGA/759O/u7/P2+P3//ffx6eTk5eHbAOiDhBzq6urt8PT39/f08e3q6urt8fT39/f08e3q6ury9oEb9v4LCwsOEhUYGBgVEg4LCwsOEhUYGBgSCQL/A4Q/8PvwNywYDSExMi4qLSwnIx0UDwkA+vby8fDu6+jj39nT09P29vbn4uPk4uPp7/X+BQkNDxAUGB4nLTI9Rk1RUQA3g4Md3hQkEQH/BQsLCw0QExUVFRMQDQsLCw0QExUVFQwEgRv28/Ly8vDt6ujo6Ort8PLy8vDt6ujo6Ors7e3thIACAAwApQABAKQAAAAK9vn8/Pjx6uHY2NiCP/Ts6+rr7vT4/QQICggFAv//AwoRGSMjI/v7+wYPEBIQDQgD/vfz8fP7BQX7+w4M/vj9Cg77BQXy9AIIA/byBQUB+/uDPwsLDhIVGBgYEAsBAQsC9/f39PHt6urq7fH09/f39PHt6urq8/cBAff/CwsLDhIVGBgYFRIOCw8b5fETEQ8E//oP7+3qD+3v8fwBBhETFvHlG4MlBQYICw0TFhseHh77+/sCCg8VFxQNBwH69vXy8fDu7Orm5N/d3d2CJvfx7ejk5Onv9fwAAQMP8fEPDzEwJSAkLjEP8fHP0Nvg3NLP8fEPD4M/8vLw7ero6Oju+Pz8BgkLCwsNEBMVFRUTEA0LCwsNEBMVFRUPBQEB9/Ty8vLw7ero6Ojq7fDy8OkUDt38/P39/Q///x/wIQICAQEB///fDhXqg4ACAAwA2wABANkAAAA/09ff4+bl4vLx4uDZ0czN09jc3dzZ2NbW2Nzj5+zz+Pr59vXy8vX7AAULDw8NCggFBwwUGx4jIyP7+/sNGRobGCsTDQgE/fr6/QADBgcD/Pby6uXj5Ofr7Ovm3tjSzMrM0BcKF+nh4d3c3N3d6IM/CwsJBAD+/v7b29ve4+fq6urt8fT39/f08e3q6urt8fT39/f08e3q6urt8fT39/f08e3q6ury9wEB9/0LCwsOEh8VGBgYFRIOCwsLDhIVGBgYFRIOCwsLDhIVGBgYFRIOC4MGAQH///8BAYQ3MjM0NTg9QSMiQTw6Ojo3Mi4pJiUkIx4eISQjHhkXFxkaGRUSExUTDwoHBgYGBQQB/fjy7uvn5+eCMPr2+v38+/8DCAsNDQ0PEBAQERUZHiAgHhweIB4cHB8jKCwvMDDw+/A3WExERkVLVTeDPwEB+/Lp4+Pj/Pz8AgsUGhoaFAsC/Pz8AgsUGhoaFAsC/Pz8AgsUGhoaFAsC/Pz8AgsUGhoaEwkBAfz+AQEB+/If6ePj4+ny+wEBAfvy6ePj4+ny+wEBAfvy6ePj4+ny+wGDBh0M/gAB9+iEAIACAAwAIgABACMAAAABFBSBDPb2CQXy6/IFCQgV7OuDgQsb5fEWExEFAPvv7eCGEOLk8vIQEDIvHxkfLzLz2BQeg4AMCekUDuD+/v7+////M4aAAgAMAD4AAQA/AAAAHRQUBQX7+w4K9/D3Cg4IFezs+/sFBfL0AggD9vL464OBCxvl8RYTEQUA++/t4IEMAeUbD+3v8fwBBhETIYQd5+nx8Q8PMS4eGB4uMfjdGRcPD/Hxz9Db4NzSzwkjg4AMCekUDuD+/v7+/v//M4EM+RXq8CECAgEBAf//zoSAAgAMAEQAAQBDAAAAGgUHAfbs5ufq8fHxGRkZC/Xn39/o9QEFCA8PD4EC8/kBgx8ZGRobGxwcHB4eDw8eFAT7+/v6+fn4+Pjz8fHxFBQXGYMfIxwSCwcFBQsUFBTx8fH2/QAGDxYaHB0YDw8PCgomIyGDCOfn6e3v8fHx+oITDw8UGRkZFxQRDw8PCQoeHuLi5eeDgAIADACkAAEAoQAAAD8EBQUFBQUFBAwPDwcKDw8PCgIA+vPx9Pj/AwUDBAYGBP748fHxGRkZCQD99/P1/QcJDQ8NDAkDAPv08fHxCwsPEA8PCfsCDw8PDwL78ufn5+fyg4EDAQAKBYIa/vf29vb2/w8aGhoWEAcA+vb29vr/BAgICAD7gQ/78+fn5+Pe2dXV1drh6/T7ggL9+PaBEgoKCgUA7u729gkKEhISDQoA+O6DP+js7Ozs7Ozo6uzs6/bs7Ozv+AACBgcJCgwODw8SFRgaGRgUFBTx8fEDFBYVEhAODwb+/P0BBAMABxAUFBTs9vIQ7OzqAPfs7Ozs9AALFBQUFAuDgQgICgACCgoKBQGCGQXw4N3d3eDk6e/z9vb28eni3d3d4Of7+/H4ggoFDRQZGRkXEQ0IAoIC/f4FgxALBgAWFggA//b09PT3AAoOFoOAAgAMAIUAAQCDAAAAPxcjHx4fIBwUDggGCAwPEhYXFhEMBwL//f4ACBQUFOzs7PX+BQwQEA0KCAQDBQsPFRkaGRUUDwsKCgoKEh4X6fYA6YOAOgUCBAsTGBgYFRIOCwsLDhIVGBgYFRIOCwsL//cBAffz6urq7fH09/f39PHt6urq7fH09/f39PHt6urqggABhD/JsLCzusPO09ni6Ozv8fL3+wILERcdHhwcHhgKCgotLS0nIR4YFRIQDw4KBgD38ezj3dnU09XSzc/e8efQyRAFABCDgDvu7u3r6ujo6Ort8PLy8vDt6ujo6Ort8PLy8vT3AQEFDRUVFRMQDQsLCw0QExUVFRMQDQsLCwUAAhEiEt6HAIACAAwAbwABAHAAAAAK9vn8/Pjx6uHY2NiCJ/Ts6+rr7vT4/QQICggFA///AwoRGSMjI/v7+wYPEBIQDQgD/vfz8fODCQoKDREUFxcXDwqBGAoB9vb28/Ds6enp7PDz9vb28/Ds6enp8vaBDvb+CgoKDREUFxcXFBENCoM1FBUXGhwiJSotLS0KCgoRGR4kJiMcFhAJBQQBAP/9+/n18+7s7OwPDw8GAP338/P4/gQLDxASgyTx8e/s6efn5+33+/sFCAoKCgwPEhQUFBIPDAoKCgwPEhQUFA4EgQ728/Hx8e/s6efn5+ns7/GDgAIADADLAAEAyAAAAD8XHhgXGBofKC0vNDY0LigiGhUUFhkcHRsWDwoE/fn6/QADBgYD/fj07ejl5efyBQUF3d3d4eXs9Pn7+fbz8fH1IvwABgsODgsKBwYIDRUZHiQoKikoJiQjJCktNTcyLi8X6fbpg4A/AQgHBgcJCwsLDhIVGBgYFRIOCwsLDhIVGBgYFRIOCwsLDhIVGBgYFRIOCwsL/fcBAffy6urq7fH09/f39PHt6h3q6u3x9Pf39/Tx7erq6u3x9Pf39/Tx7erq6uzu7OqBAAGEP8m6trm+wMHCw8TFxsnO0tfZ2dfV19jX1dXY3OHk5eXk5ufo6Oru8vf6+fj6//r19fUODg4JBwT9+PTx8O7v7+4i6+bj4OLj4Nza3N7e3NfT0dTX1tLQ0M/MyMO+u7u7uMkQBRCDgD8B7e7y+P0BAQH78unj4+Pp8vsBAQH78unj4+Pp8vsBAQH78unj4+Pp8vsBAQH+/AEBCRMaGhoUCwL8/PwCCxQaHRoaFAsC/Pz8AgsUGhoaFAsC/Pz8AgsUGhoaFRAJCIeAAgAMACgAAQAlAAAAAzoj/vaBCg0bGhIPDQYFFA8PhQAKgQ/n5woK+/4OFA7++woZ9vYZgwPx+x8IggcLDg4ODhEUI4cA54EPIyPn59LMysvLzNLn3RkZ3YOAAgAMAAcAAQAMAAAAAxQP5+yDhwPn5xkZgwP/////g4ACAAwAAgABAAIAAACEhISEAIACAAwABwABAAcAAAADFA/n7IOHA+fnGRmDhwCAAgAMAAsAAQALAAAABw8K4ucUD+fsg4sH8fEjI/HxIyODiwCAAgAMAAIAAQACAAAAhISEhACAAgAMAAcAAQAMAAAAAxQP5+yDhwPn5xkZgwP/////gwACAAwAIiABACggAAoJAAMDBAMCAgIDAQn9CP3wChAK/vj+CQb+9AIG/vT0AgYMCwECAgICAgICAgICAgsD+wMTGxPt5e39Bf0L9AMQEAP09AMQEAP0AAIADAAWIAEAFiAABgUBAgICAwEFBw0H+fP5BQb+9PQCBgYFAQICAgICBfjt+AgTCAX0AxAQA/SAAgAMAAcAAQAHAAAAAxAT7OiDhwPi4CEcg4cAgAIADAAHAAEABwAAAAMWFvDvg4cD4uEhG4OHAIACAAwACwABAAsAAAAHCQXj5h0Z9/qDiwf89yoq1tEEBIOLAIACAAwABwABAAcAAAADFBTx8YOHA+zsIyODhwCAAgAMAA0AAQANAAAABh8M9eETAO2DhAAfhAbo5B0Y9P4Lg4QA+IQAgAIADAANAAEADQAAAAYLH+8CFuH0g4IA4YYG4+gMAvUYHIOCAAiGAIACAAwAHgABABkgAACADAUPD/X1+gAGCwvx8fuDAQMDggT48fHx+IIAA4MHBgABAgIBBAKABfbnEwrtGQb7+wALGAD+AAIADAAcIAEAHSAACAcBAwEFAwEFAwcIDwjxAgX++wcH8+v/9fj8+AoJAQMDAwMBAgMCAQP37AkUhQn3ChH+CAcC/wQHAIACAAwANwABADYAAAAJBQcGAvz78efn54IK/gD+/wMJChEZGRmCAASDgQYGDxUVFQoFgQEFAoIG+vHr6+v2+4EB+/6EgAP+/f3+hAjs7Oz3AAIDAwKEAxQUFAmDG/Hx7urn5+fm6fHx9v0PDw8SFhkZGRcSDw8KA/GDgAIADAAGAAEABgAAAgEBAgEU7AHuDgHsFAEU8YACAAwAIQABACEAAAAOEBYZGRkUDAz7+PPz8/Hsg4AMDRIRGRkZ+/v7AgoQC4QO8fDx8fH29vb2/woKCgUKg4AM+/r49fX1CQkJAf379oQAgAIADAALAAEACwAAAAf3Gh374wYJ54OLBwTW1gkq/Pwvg4sAgAIADAAHAAEABwAAAAPx4h4Pg4cDGRns7IOHAIACAAwAGAABABUgAAgHAQEBAQECAQNHAkICXwJiAmkCaQJGAkYCWoIECg8AFB4GBQEBAgEDAwXK7OzsGfGBAwEABd0AAAIADAAWIAEAFiAABgUBAgICAwEFBw0H+fP5BQgA9vYECAYFAQICAgICBfjt+AgTCAXs+wgI++wAAgAMACggAQAnIAAMCwEDAwMDAQEBAQMBAQsHD/nxAgUFBQP7+/sFBf77AvX8gQMLAwD8DAsBAwMDAgMBAQEBAwED/PYFCoIE/wD/AP8L9v0A+fn7+Pz8/Pr5AIACAAwABwABAAcAAAADGRTs7IOHA/HxHhSDhwCAAgAMACkAAQAqAAAAEQUFDxEUFBQKBwf49vTv7Ozs94QICPT09Pf6AQUFgQcBAwUFAgQICIMS8fH7/gEBAfv29gYIDRYeHh4TCoMG6vn5+fr5/4EJ9vb8/fz48/Dq6oOAAgAMACYAAQAmAAAAEPsJHBwcIhnz8/n29vbz8vb2gwUICP77/QWBCP8A9vb19vb2CIMQ9e/s7OwCBhH8CxMTEw0KExODEOrq8vsBDAEB7fcCChEXFxfqgwCAAgAMAAcAAQAHAAAAhwMQ8vIQg4cD4gsL4oMAgAIADAAHAAEABwAAAAMKB/b5g4cD++kFF4OHAIACAAwABAABAAIAAAAA/oOEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAgAIADAACAAEAAgAAAISEhIQAAAIADAAiIAEAKCAACgkAAwMEAwICAgMBCf0I/fAKEAr++P4JCAD2BAgA9vYECAwLAQICAgICAgICAgICCwP7AxMbE+3l7f0F/QvxAA0NAPHxAA0NAPGAAgAMABYgAQASAAAIBwEBAgECAQIBBgUBAwECAwEFBw0H+fP5BQn89/cECQf47e34CBMTCAfy+QcODgf58oACAAwABwABAAcAAAADEBPs6IOHA+LgIRyDhwCAAgAMAAcAAQAHAAAAAxYW8O+DhwPi4SEbg4cAgAIADAALAAEACwAAAAcJBePmHRn3+oOLB/z3KirW0QQEg4sAgAIADAANAAEADQAAAAYfDPXhEwDtg4QAH4QG6OQdGPT+C4OEAPiEAIACAAwADQABAA0AAAAGCx/vAhbh9IOCAOGGBuPoDAL1GByDggAIhgCAAgAMAB4AAQAZIAAAgAwFDw/19foABgsL8fH7gwEDA4IE+PHx8fiCAAODBwYAAQICAwICgAX26BT47RkG+/sACxgA/gACAAwAHCABAB0gAAgHAQMBBQMBBQMHCA8I8QIF/vsHDvryBvz/A/8KCQEDAwMDAQIDAgED9+wJFIUJ8wYN+gQD/vsAAwCAAgAMADcAAQA2AAAACQUHBgL8+/Hn5+eCCv4A/v8DCQoRGRkZggAEg4EGBg8VFRUKBYEBBQKCBvrx6+vr9vuBAfv+hIAD/v39/oQI7Ozs9wACAwMChAMUFBQJgxvx8e7q5+fn5unx8fb9Dw8PEhYZGRkXEg8PCgPxg4ACAAwABgABAAYAAAIBAQIBFOwB7g4B7BQBD+yAAgAMACEAAQAfIAAADhAbHh4eGQwMFAj4+Pj27IOADA0RERkZGfv7+wQLDQuECQgAAwICAQMBAQEI8fb79g8PDwoKCPz08QUF+vTy/ACAAgAMAAsAAQALAAAAB/caHfvjBgnng4sHBNbWCSr8/C+DiwCAAgAMAAcAAQAHAAAAA/LiHhCDhwMZGezsg4cAgAIADAAbAAEAFiAAAAsJCSMnLS0tCgoKFB6DAB6CAQkPgQMUGR4egwcGAQEBAwICAYAFCwwLOCEQgwIF3d0AAgAMABYgAQAWIAAGBQECAgIDAQUHDQf58/kFCAD29gQIBgUBAgICAgIF+O34CBMIBez7CAj77IACAAwABwABAAcAAAADGRTs7IOHA/HxHhSDhwCAAgAMACkAAQAqAAAAEQUFDxEUFBQKBwf49vTv7Ozs94QICPT09Pf6AQUFgQcBAwUFAgQICIMS9vYAAwYGBgD7+wsNEhsjIyMYD4MG6vn5+fr5/4EJ9vb8/fz48/Dq6oOAAgAMACYAAQAmAAAAEPsJHBwcIhnz8/n29vbz8vb2gwUICP77/QWBCP8A9vb19vb2CIMQ9e/s7OwCBhH8CxMTEw0KExODEOrq8vsBDAEB7fcCChEXFxfqgwCAAgAMAAIAAQACAAAAhISEhACAAgAMAAIAAQACAAAAhISEhACAAgAMAAIAAQACAAAAhISEhACAAgAMAAIAAQACAAAAhISEhACAAgAMAAIAAQACAAAAhISEhACAAgAMAAIAAQACAAAAhISEhACAAgAMAAIAAQACAAAAhISEhACAAgAMAAIAAQACAAAAhISEhACAAgAMAAIAAQACAAAAhISEhACAAgAMAAIAAQACAAAAhISEhACAAgAMAAIAAQACAAAAhISEhACAAgAMAAcAAQAHAAAAAxYW8O+DhwPi4SEbg4cAgAIADAAMAAEABwAAAAMUFOzugwP+/v7+gwPs7hQSg4cAAgAMACsgAQA0IAAODQABAQEBAwMEAwICAgMBDQ8S8/P9CP3wChAK/vj+gwkG/vQCBv709AIGEA8AAQEBAgICAgICAgICAgICD+flFxkD+wMTGxPt5e39Bf0PGxoaG/QDEBAD9PQDEBAD9ACAAgAMAB8gAQAnAAAACgkBAgIDAgICAQEBCQkU+wIF7BUQ7OwFBQD58QACg4AQ+/HxGRkJ//fn5w8PBP7+IBuDgQ8FCgoRHh4eEQoKBQAeKCgegwCAAgAMAB8gAQAnAAAACgkBAgIDAgICAQEBCQkU+wIF7BUV8ewFBQD58QACg4AQ+/HxGRkJ//fn5w8PBOXgAgKDgQ8FCgoRHh4eEQoKBQAeKCgegwCAAgAMAEAgAQBBAAAAFBMBAgIDAgICAQEBAQMCAQEBAQEBARMJFPsCBewQFR8fHwMMBPn5+fPw7xMFAPnxAAIABBATExX8/AMKCAH9AIAd+/HxGRkJ//fn5w8PBPLz+fn5+/rn5wgMFBQUEQ4Rg4EcBQoKER4eHhEKCgUAHhYcGhgUFBQtLS0kHhsTER6DgAIADABSIAEAUgAAABoZAQICAgICBAEBAQEBAgIBAQEBAQEDAgIBAQEZBQr2AQr2BwgGAgD69g8PDwQB/fwFCvHx8f+ACvv07fT7AwUICgoKgQYFBP39/fv2gQL7/AOAE/fn5xQUBwD67OwZGQkEAwH//gABggjs7Oz1/Pz+AQKDAxQUFAyDEfv7AAUFDBoaGgwFBQD7+fn7/oIT/f329gURICAgHhsZGRkXIyMUCPmDAIACAAwAEQABABEAAAAK+/vTzh4M9OEVAO6DiAAfhAoKDzwy5+QcGPUADIOIAPiEAIACAAwAEQABABEAAAAKBQbe2B4M9OEVAO6DiAAfhAoZGUZB5+QcGPUADIOIAPiEAIACAAwALwABAC8AAAAX/wQODg4MCvLyBfrs7Ozl4+IeDPThFQDug4AOBA4UExUVFfz8/AQOCv/9hQAfhIAWBAoKCg4P8fEjJCgoKCUjI+fkHBj1AAyDgA79AQIA+vr6ExMTDAgD+PiFAPiEAIACAAwAQgABAEEAAAAhBAcIBgIA+vb29g8PDwQB/fz/AwUKCgrx8fH/Hgz04RUA7oMHAwMFCAoKCgWCCQUE/f39+/j29vaCAvv8A4QAH4QGBAMB//4AAYII7Ozs9fz8/gECgwoUFBQM5+QcGPUADIMaDg4NCwoKCgcHCgoPGyoqKistLi4uLCwsKR0OhAD4hIACAAwAKgABACoAAAATFRDs7AULDw/29v8F/AEKCvHx9vyDAPuBAPuBC//7+/Xs7Ozs9fv7/4UT+fgaFvXp3Nz19fP1CwsKCiMjFguDAAWBAAWBCwMFBQwUFBQUDAUFA4UAgAIADAArAAEAKwAAABMFCw8P9vb/BfwBCgrx8fb8GRbw7oOBC//7+/Xs7Ozs9fv7/4EA+4EA+4MT9enc3PX18/ULCwoKIyMWC/H2DgSDgQsDBQUMFBQUFAwFBQOBAAWBAAWDAIACAAwAQAABAEEAAAAfDw4ZGRkJCAju9Pv7+/Tx8gULDw/29v8F/AEKCvHx9vyDgAX9Cg4ZGRmCBP///v37ggv/+/v17Ozs7PX7+/+FH/vl5+fn4+fn6vkICAgCAhr16dzc9fXz9QsLCgojIxYLgwYK8PPy9fX1ggX27urt7QqBCwMFBQwUFBQUDAUFA4WAAgAMAFcAAQBaAAAAKwULDw/29v8F/AEKCvHx9vz+AQQEAgD69vb2Dw8PCQUB/wADBQcKCgrx8fH4g4EABoEF/Ozs7Oz8gQAGgwYFCg8PDwsIgQEIBYIG+/bx8fH0+IEB+PyEK+7v8fEKCvjoGgn29g8PEhUDBgUB/gACBQUF8fHx9vv3+f4CAP37+/sPDw8Ig4EL/vb2CRQUFBQJ9vb+gQz29vPt6urq7O/x8e/3ggsDCQwMDAkHBQUH//aDgAIADAAWAAEAFgAAAAr9/dPOHgz04RUA7oMA+4EA+4QAH4QKDAw3MufkHBj1AAyDAAWBAAWEAPiEAIACAAwAFgABABYAAACACQHZ0x4M9OEVAO6DAPuBAPuEAB+ECgoPPDLn5BwY9QAMgwAFgQAFhAD4hACAAgAMACwAAQAtAAAAFg8NFxcXDAQE9vb09PTt6u8eDPThFQDug4AFBhMUFxcXggQIDQwGAYUAH4QWEgQJCQn/+/sFFSkpKSQhMufkHBj1AAyDBvbp7u3u7u6CBfjs7OXk9oQA+ISAAgAMAEcAAQBIAAAAIv4BBAQCAPr29vYPDw8JBQH/AAMFBwoKCvHx8fgeIt7iFgDug4EGBQoPDw8LCIEBCAWCBvv28fHx9PiBAfj8gQELC4EAE4QiAwYFAf4AAgUFBfHx8fb79/n+AgD9+/v7Dw8PCOfSLhn2AAyDDPb28+3q6urs7/Hx7/eCDgMJDAwMCQcFBQf/9gD6+oEAAoSAAQAIAAUAAACbAAGZtoABAAgABAAAAgEAA4EBAf8AAA==)format("truetype")}.gv-activated .gv-mode-condensed{--form-element-height:30px}@media (max-width:599px){.gv-activated .gv-max-mob-mode-condensed{--form-element-height:30px}}@media (min-width:600px){.gv-activated .gv-tab-mode-condensed{--form-element-height:30px}}@media (max-width:767px){.gv-activated .gv-max-tab-sm-mode-condensed{--form-element-height:30px}}@media (min-width:768px){.gv-activated .gv-tab-lg-mode-condensed{--form-element-height:30px}}@media (max-width:1023px){.gv-activated .gv-max-tab-mode-condensed{--form-element-height:30px}}@media (min-width:1024px){.gv-activated .gv-desk-mode-condensed{--form-element-height:30px}}@media (max-width:599px){.gv-activated .gv-mobile-mode-condensed{--form-element-height:30px}}@media (min-width:600px) and (max-width:1023px){.gv-activated .gv-tablet-mode-condensed{--form-element-height:30px}}@media (min-width:600px) and (max-width:767px){.gv-activated .gv-tablet-small-mode-condensed{--form-element-height:30px}}@media (min-width:768px) and (max-width:1023px){.gv-activated .gv-tablet-large-mode-condensed{--form-element-height:30px}}@media (min-width:1024px){.gv-activated .gv-desktop-mode-condensed{--form-element-height:30px}}.gv-activated .gv-accordion .gv-acc-item:not(:first-child){border-top:var(--size-border) solid var(--color-border)}.gv-activated .gv-accordion .gv-acc-header{display:block;width:100%;font-weight:var(--font-weight-semibold);line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-accordion .gv-acc-header{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-accordion .gv-acc-header{font-size:calc(14px + 2*((100vw - 360px)/1080));letter-spacing:calc(.035px + .045*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-accordion .gv-acc-header{font-size:16px;letter-spacing:.08px}}.gv-activated .gv-accordion .gv-acc-header .gv-acc-trigger{display:flex;flex-direction:column;gap:var(--size-xs);padding:var(--size-md)0 var(--size-md)0;position:relative;text-align:left;width:100%}.gv-activated .gv-accordion .gv-acc-header .gv-acc-trigger .gv-acc-title{display:block;padding-right:var(--size-xl);position:relative;width:100%}.gv-activated .gv-accordion .gv-acc-header .gv-acc-trigger .gv-acc-title:after{background-color:var(--color-body-on-default);content:"";display:block;-webkit-mask:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M12.025%2014.95%206.375%209.3l.95-.95%204.7%204.7%204.7-4.7.95.95-5.65%205.65Z'%20fill='currentColor'/%3e%3c/svg%3e")no-repeat 50% 50%;mask:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M12.025%2014.95%206.375%209.3l.95-.95%204.7%204.7%204.7-4.7.95.95-5.65%205.65Z'%20fill='currentColor'/%3e%3c/svg%3e")no-repeat 50% 50%;-webkit-mask-size:contain;mask-size:contain;height:var(--size-icon-md);right:var(--size-sm);position:absolute;top:0;width:var(--size-icon-md)}.gv-activated .gv-accordion .gv-acc-header .gv-acc-trigger.gv-expanded .gv-acc-title:after{transform:rotate(180deg)}.gv-activated .gv-accordion .gv-acc-content,.gv-activated .gv-action{font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-accordion .gv-acc-content{padding:var(--size-sm) var(--size-xl) var(--size-lg)0}@media (min-width:600px){.gv-activated .gv-accordion .gv-acc-header .gv-acc-trigger{gap:var(--size-sm);padding:var(--size-lg)0 var(--size-lg)0}}.gv-activated .gv-action{align-items:center;cursor:pointer;display:inline-flex;flex-wrap:nowrap;gap:4px;text-decoration:none;font-weight:var(--font-weight-semibold)}.gv-activated .gv-action,.gv-activated .gv-action:hover{color:var(--color-state-form-active)}.gv-activated .gv-badge{--badge-color-background:inherit;--badge-color-border:inherit;--badge-color-text:inherit;background-color:var(--badge-color-background);border:var(--size-border) solid var(--badge-color-border);border-radius:var(--border-radius);color:var(--badge-color-text);display:inline-block;height:26px;max-width:100%;padding:calc(var(--size-xs) - var(--size-border)) var(--size-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-badge.gv-badge-generic{--badge-color-background:var(--color-surface-bright);--badge-color-border:var(--color-border);--badge-color-text:var(--color-body-on-default)}.gv-activated .gv-badge.gv-badge-alert{--badge-color-background:var(--color-signal-alert-light);--badge-color-border:var(--color-signal-alert);--badge-color-text:var(--color-signal-alert)}.gv-activated .gv-badge.gv-badge-warning{--badge-color-background:var(--color-signal-warning-light);--badge-color-border:var(--color-signal-warning);--badge-color-text:var(--color-signal-warning)}.gv-activated .gv-badge.gv-badge-info{--badge-color-background:var(--color-signal-info-light);--badge-color-border:var(--color-signal-info);--badge-color-text:var(--color-signal-info)}.gv-activated .gv-badge.gv-badge-success{--badge-color-background:var(--color-signal-success-light);--badge-color-border:var(--color-signal-success);--badge-color-text:var(--color-signal-success)}.gv-activated .gv-breadcrumbs{font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-breadcrumbs a:before,.gv-activated .gv-breadcrumbs span:before{margin-bottom:calc(-.375em + 0px)}.gv-activated .gv-breadcrumbs a:after,.gv-activated .gv-breadcrumbs span:after{margin-top:calc(-.3125em + 0px)}.gv-activated .gv-breadcrumbs a:after,.gv-activated .gv-breadcrumbs a:before,.gv-activated .gv-breadcrumbs span:after,.gv-activated .gv-breadcrumbs span:before{content:"";display:block;height:0;width:0}.gv-activated .gv-breadcrumbs a{text-decoration:none}.gv-activated .gv-breadcrumbs a,.gv-activated .gv-breadcrumbs a:hover{color:var(--color-body-on-alternative)}.gv-activated .gv-breadcrumbs>a,.gv-activated ul.gv-breadcrumbs,.gv-activated ul.gv-breadcrumbs li{align-items:center;display:inline-flex}.gv-activated .gv-breadcrumbs>a gv-icon{margin-right:var(--size-xs)}.gv-activated ul.gv-breadcrumbs{color:var(--color-body-on-alternative);flex-wrap:wrap;gap:var(--size-sm);padding:0}.gv-activated ul.gv-breadcrumbs li{list-style:none;margin:0}.gv-activated ul.gv-breadcrumbs li:last-child{color:var(--color-body-on-default);font-weight:var(--font-weight-semibold)}.gv-activated ul.gv-breadcrumbs li gv-icon{margin-left:var(--size-sm)}.gv-activated .gv-button{--button-color-background:inherit;--button-color-border:transparent;--button-color-text:inherit;--button-height:var(--form-element-height);align-items:center;background:var(--button-color-background);border:var(--size-border) solid var(--button-color-border);border-radius:var(--button-radius);color:var(--button-color-text);cursor:pointer;display:inline-flex;gap:var(--size-xs);height:var(--button-height);font-family:inherit;font-weight:var(--font-weight-semibold);justify-content:center;outline:0;padding:var(--button-padding-tb) var(--button-padding-lr);text-align:center;text-decoration:none;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-button.gv-button-primary{--button-color-background:var(--color-button-bg-primary);--button-color-border:var(--color-button-bg-primary);--button-color-text:var(--color-button-fg-on-primary)}.gv-activated .gv-button.gv-button-secondary{--button-color-background:var(--color-surface-bright);--button-color-border:var(--color-button-border-secondary);--button-color-text:var(--color-body-on-default)}.gv-activated .gv-button.gv-button-cta{--button-color-background:var(--color-button-bg-cta);--button-color-border:var(--color-button-bg-cta);--button-color-text:var(--color-button-fg-on-cta)}.gv-activated .gv-button.gv-button-cancel{--button-color-background:transparent;--button-color-border:var(--color-border);--button-color-text:var(--color-body-on-default)}.gv-activated .gv-button.gv-button-destructive{--button-color-background:var(--color-signal-alert);--button-color-border:var(--color-signal-alert);--button-color-text:var(--color-body-on-inverted)}.gv-activated .gv-button.gv-button-neutral{--button-color-background:var(--color-on-fixed-white);--button-color-border:var(--color-on-fixed-white);--button-color-text:var(--color-on-fixed-black)}.gv-activated .gv-button.gv-button-icon{border-radius:var(--button-height);padding-left:0;padding-right:0;width:var(--button-height)}.gv-activated .gv-button:active,.gv-activated .gv-button:focus,.gv-activated .gv-button:hover{color:var(--button-color-text);opacity:var(--opacity-active-elements);text-decoration:none}.gv-activated .gv-button.gv-disabled,.gv-activated .gv-button:disabled{cursor:auto;opacity:var(--opacity-disabled-elements);pointer-events:none}@media (max-width:599px){.gv-activated .gv-button{width:100%}}.gv-activated .gv-button .gv-button.gv-mode-condensed,.gv-activated .gv-button .gv-mode-condensed .gv-button{font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}@media (max-width:599px){.gv-activated .gv-button .gv-button.gv-max-mob-mode-condensed,.gv-activated .gv-button .gv-max-mob-mode-condensed .gv-button{font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}}@media (min-width:600px){.gv-activated .gv-button .gv-button.gv-tab-mode-condensed,.gv-activated .gv-button .gv-tab-mode-condensed .gv-button{font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}}@media (max-width:767px){.gv-activated .gv-button .gv-button.gv-max-tab-sm-mode-condensed,.gv-activated .gv-button .gv-max-tab-sm-mode-condensed .gv-button{font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}}@media (min-width:768px){.gv-activated .gv-button .gv-button.gv-tab-lg-mode-condensed,.gv-activated .gv-button .gv-tab-lg-mode-condensed .gv-button{font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}}@media (max-width:1023px){.gv-activated .gv-button .gv-button.gv-max-tab-mode-condensed,.gv-activated .gv-button .gv-max-tab-mode-condensed .gv-button{font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}}@media (min-width:1024px){.gv-activated .gv-button .gv-button.gv-desk-mode-condensed,.gv-activated .gv-button .gv-desk-mode-condensed .gv-button{font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}}@media (max-width:599px){.gv-activated .gv-button .gv-button.gv-mobile-mode-condensed,.gv-activated .gv-button .gv-mobile-mode-condensed .gv-button{font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}}@media (min-width:600px) and (max-width:1023px){.gv-activated .gv-button .gv-button.gv-tablet-mode-condensed,.gv-activated .gv-button .gv-tablet-mode-condensed .gv-button{font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}}@media (min-width:600px) and (max-width:767px){.gv-activated .gv-button .gv-button.gv-tablet-small-mode-condensed,.gv-activated .gv-button .gv-tablet-small-mode-condensed .gv-button{font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}}@media (min-width:768px) and (max-width:1023px){.gv-activated .gv-button .gv-button.gv-tablet-large-mode-condensed,.gv-activated .gv-button .gv-tablet-large-mode-condensed .gv-button{font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}}@media (min-width:1024px){.gv-activated .gv-button .gv-button.gv-desktop-mode-condensed,.gv-activated .gv-button .gv-desktop-mode-condensed .gv-button{font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}}.gv-activated .gv-button-group{align-items:flex-start;display:flex;flex-wrap:wrap;gap:var(--size-md)}.gv-activated .gv-button-group.gv-vertical{align-items:stretch;flex-direction:column;gap:var(--size-sm);width:100%}@media (max-width:599px){.gv-activated .gv-button-group{align-items:stretch;flex-direction:column;gap:var(--size-sm);width:100%}}.gv-activated .gv-button-toggle-group{display:flex;flex-wrap:nowrap}.gv-activated .gv-button-toggle-group .gv-button-toggle{align-items:center;background:0 0;border-radius:var(--button-radius);color:var(--color-body-on-alternative);cursor:pointer;display:inline-flex;font-family:inherit;height:var(--form-element-height);justify-content:center;outline:0;padding:var(--size-sm) var(--size-md)}.gv-activated .gv-button-toggle-group .gv-button-toggle:hover{background-color:var(--color-state-hover)}.gv-activated .gv-button-toggle-group .gv-button-toggle.gv-active{background-color:var(--color-state-active);color:var(--color-body-on-default)}.gv-activated .gv-card{border-radius:var(--border-radius);border:var(--size-border) solid var(--color-border-alt);display:flex;flex-direction:column;max-width:100%;position:relative;text-decoration:none}.gv-activated .gv-card,.gv-activated .gv-card:hover{color:var(--color-body-on-default)}.gv-activated .gv-card .gv-card-image,.gv-activated .gv-card .gv-card-video{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);height:200px;overflow:hidden;width:100%}.gv-activated .gv-card .gv-card-image img,.gv-activated .gv-card .gv-card-video img{height:100%;object-fit:cover;object-position:center center;transition:all .2s ease-out;width:100%}.gv-activated .gv-card .gv-card-video{position:relative}.gv-activated .gv-card .gv-card-video>*,.gv-activated gv-flag svg{height:100%;width:100%}.gv-activated .gv-card .gv-card-video .gv-video-overlay{align-items:center;background-color:var(--color-overlay-dark);bottom:0;color:var(--color-on-fixed-white);cursor:pointer;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:200}.gv-activated .gv-card .gv-card-content,.gv-activated .gv-card .gv-card-icon,.gv-activated .gv-card .gv-card-illustration{padding:24px 24px 0}.gv-activated .gv-card .gv-card-content{flex-grow:1;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-card .gv-card-content>:not(:last-child){margin-bottom:8px}.gv-activated .gv-card .gv-card-content:last-child{padding-bottom:24px}.gv-activated .gv-card .gv-card-content+.gv-notice-addon{margin-top:24px}.gv-activated .gv-card .gv-card-title{font-weight:var(--font-weight-semibold);line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-card .gv-card-title{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-card .gv-card-title{font-size:calc(14px + 4*((100vw - 360px)/1080));letter-spacing:calc(.035px + -.035*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-card .gv-card-title{font-size:18px;letter-spacing:0}}.gv-activated .gv-card .gv-card-footer{padding:16px 24px 24px}.gv-activated a.gv-card:hover .gv-card-image img{transform:scale(1.05)}.gv-activated .gv-features-table{--slider-px-max:var(--size-fluid-max-value);--slider-px-min:var(--size-fluid-min-value);--table-sidebar-width: 0px ;--table-slider-gap: 0px ;--recommended-label-height:0;--recommended-bg-color:var(--color-button-bg-cta);--recommended-text-color:var(--color-button-fg-on-cta);--slider-dots-height:var(--size-lg);--slider-dots-space:calc(var(--slider-dots-height) + var(--size-sm))}.gv-activated .gv-features-table.gv-products-2 .gv-cell,.gv-activated .gv-features-table.gv-products-2 .gv-product{max-width:calc((100% - var(--table-sidebar-width) - (var(--table-slider-gap)*(2 - 1)))/2)}.gv-activated .gv-features-table.gv-products-3 .gv-cell,.gv-activated .gv-features-table.gv-products-3 .gv-product{max-width:calc((100% - var(--table-sidebar-width) - (var(--table-slider-gap)*(3 - 1)))/3)}.gv-activated .gv-features-table.gv-products-4 .gv-cell,.gv-activated .gv-features-table.gv-products-4 .gv-product{max-width:calc((100% - var(--table-sidebar-width) - (var(--table-slider-gap)*(4 - 1)))/4)}.gv-activated .gv-features-table.gv-products-5 .gv-cell,.gv-activated .gv-features-table.gv-products-5 .gv-product{max-width:calc((100% - var(--table-sidebar-width) - (var(--table-slider-gap)*(5 - 1)))/5)}.gv-activated .gv-features-table.gv-has-recommended,.gv-activated .gv-features-table.gv-recommended-1,.gv-activated .gv-features-table.gv-recommended-2,.gv-activated .gv-features-table.gv-recommended-3,.gv-activated .gv-features-table.gv-recommended-4,.gv-activated .gv-features-table.gv-recommended-5{--recommended-label-height:26px}.gv-activated .gv-features-table .gv-dots-scroll-area{position:relative}.gv-activated .gv-features-table .gv-slider-pagination{display:none;justify-content:center;bottom:var(--size-lg);position:sticky;z-index:199;width:100%}.gv-activated .gv-features-table .gv-slider-pagination .gv-dots{align-items:center;background-color:transparent;border:1px solid transparent;border-radius:var(--border-radius);display:flex;gap:var(--size-sm);height:var(--slider-dots-height);padding:0 var(--size-md);transition:all 1s}.gv-activated .gv-features-table .gv-slider-pagination .gv-dots>*{background:var(--color-gray-400);border-radius:var(--size-sm);color:transparent;cursor:pointer;display:block;height:var(--size-sm);width:var(--size-sm)}.gv-activated .gv-features-table .gv-slider-pagination .gv-dots>.gv-active{background:var(--color-primary)}.gv-activated .gv-features-table .gv-slider-pagination.gv-state-top{bottom:100%;transform:translateY(calc(var(--slider-dots-space)*-1))}.gv-activated .gv-features-table .gv-slider-pagination.gv-state-overlay .gv-dots{background-color:rgb(from var(--color-surface-bright) r g b/90%);border:1px solid var(--color-border)}.gv-activated .gv-features-table .gv-slider-nav{display:none;position:sticky;top:0;width:100%;z-index:199}.gv-activated .gv-features-table .gv-slider-nav.gv-state-bottom{position:absolute;top:auto!important}.gv-activated .gv-features-table .gv-slider-nav:not(.gv-state-bottom){bottom:auto!important}.gv-activated .gv-features-table .gv-slider-nav .gv-nav-button{align-items:center;background-color:var(--color-primary);border-radius:var(--border-radius);color:var(--color-button-fg-on);display:flex;height:40px;justify-content:center;position:absolute;top:0;width:40px}.gv-activated .gv-features-table .gv-slider-nav .gv-nav-button.gv-previous{left:0;transform:translate(-50%,-50%)}.gv-activated .gv-features-table .gv-slider-nav .gv-nav-button.gv-next{right:0;transform:translate(50%,-50%)}.gv-activated .gv-features-table .gv-slider-nav .gv-nav-button.gv-disabled{cursor:auto;opacity:var(--opacity-disabled-elements);pointer-events:none}.gv-activated .gv-features-table .gv-table-container{position:relative}.gv-activated .gv-features-table .gv-table{box-sizing:content-box;padding-top:var(--recommended-label-height)}.gv-activated .gv-features-table .gv-section .gv-table-row{font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-features-table .gv-section:last-child .gv-table-row:last-child .gv-cell,.gv-activated .gv-features-table .gv-section:last-child .gv-table-row:last-child .gv-cell-info{border-bottom-width:1px}.gv-activated .gv-features-table .gv-table-row{display:flex;flex-wrap:nowrap;position:relative}.gv-activated .gv-features-table .gv-table-row:nth-child(odd) .gv-cell,.gv-activated .gv-features-table .gv-table-row:nth-child(odd) .gv-cell-info{background:var(--color-surface-bright)}.gv-activated .gv-features-table .gv-table-row:nth-child(2n) .gv-cell,.gv-activated .gv-features-table .gv-table-row:nth-child(2n) .gv-cell-info{background:var(--color-surface-dim)}.gv-activated .gv-features-table .gv-cell,.gv-activated .gv-features-table .gv-product{flex:1;position:relative}.gv-activated .gv-features-table .gv-header-info,.gv-activated .gv-features-table .gv-product{background:var(--color-surface-bright);border-color:var(--color-border);border-style:solid;border-width:1px 1px 0 0}.gv-activated .gv-features-table .gv-cell,.gv-activated .gv-features-table .gv-cell-info{border-color:var(--color-border);border-style:solid;border-width:0 1px 0 0;display:flex;gap:var(--size-sm);padding:var(--size-sm) var(--size-lg)}.gv-activated .gv-features-table .gv-product{display:flex;flex-direction:column;padding:var(--size-lg)}.gv-activated .gv-features-table .gv-product .gv-recommended-label{background:var(--recommended-bg-color);border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);color:var(--recommended-text-color);left:-1px;opacity:1;padding:var(--size-xs) var(--size-sm);position:absolute;right:-1px;text-align:center;top:0;transform:translateY(-100%);transition:opacity .2s linear 0s;font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-features-table .gv-product .gv-content{flex-grow:1}.gv-activated .gv-features-table .gv-product .gv-bottom .gv-price-container>:not(:last-child),.gv-activated .gv-features-table .gv-product .gv-content>:not(:last-child){margin-bottom:8px}.gv-activated .gv-features-table .gv-product .gv-content .gv-title{font-weight:var(--font-weight-semibold);letter-spacing:0;line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-features-table .gv-product .gv-content .gv-title{font-size:16px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-features-table .gv-product .gv-content .gv-title{font-size:calc(16px + 8*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-features-table .gv-product .gv-content .gv-title{font-size:24px}}.gv-activated .gv-features-table .gv-product .gv-bottom,.gv-activated .gv-features-table.gv-product-table .gv-section+.gv-section .gv-section-header .gv-cell{padding-top:var(--size-lg)}.gv-activated .gv-features-table .gv-product .gv-bottom>:not(:last-child){margin-bottom:24px}.gv-activated .gv-features-table .gv-product .gv-bottom .gv-price-container .gv-price{align-items:flex-end;display:flex;flex-wrap:wrap;gap:var(--size-sm)}.gv-activated .gv-features-table .gv-product .gv-bottom .gv-price-container .gv-price-text{white-space:nowrap;font-weight:var(--font-weight-heading);line-height:var(--line-height-heading-md)}@media screen and (max-width:360px){.gv-activated .gv-features-table .gv-product .gv-bottom .gv-price-container .gv-price-text{font-size:calc(var(--font-size-heading-md-min)*1px);letter-spacing:calc(var(--letterspacing-heading-md-min)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-features-table .gv-product .gv-bottom .gv-price-container .gv-price-text{font-size:calc(calc(var(--font-size-heading-md-min)*1px) + (var(--font-size-heading-md-max) - var(--font-size-heading-md-min))*((100vw - 360px)/1080));letter-spacing:calc(calc(var(--letterspacing-heading-md-min)*1px) + (var(--letterspacing-heading-md-max) - var(--letterspacing-heading-md-min))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-features-table .gv-product .gv-bottom .gv-price-container .gv-price-text{font-size:calc(var(--font-size-heading-md-max)*1px);letter-spacing:calc(var(--letterspacing-heading-md-max)*1px)}}.gv-activated .gv-features-table .gv-product .gv-bottom .gv-price-container .gv-period{padding-bottom:var(--size-xs);white-space:nowrap;font-weight:var(--font-weight-semibold);font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-features-table .gv-product .gv-bottom .gv-price-container .gv-price-info{color:var(--color-body-on-alternative);font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-features-table .gv-product .gv-bottom .gv-price-container .gv-tooltip-container{display:inline-block;vertical-align:middle}.gv-activated .gv-features-table .gv-product .gv-bottom .gv-price-container .gv-tooltip-container gv-icon{height:var(--size-icon-sm);width:var(--size-icon-sm)}.gv-activated .gv-features-table .gv-product .gv-bottom .gv-button{width:100%}.gv-activated .gv-features-table.gv-product-table.gv-recommended-1 .gv-cell:nth-child(1),.gv-activated .gv-features-table.gv-product-table.gv-recommended-1 .gv-product:nth-child(1),.gv-activated .gv-features-table.gv-product-table.gv-recommended-2 .gv-cell:nth-child(2),.gv-activated .gv-features-table.gv-product-table.gv-recommended-2 .gv-product:nth-child(2),.gv-activated .gv-features-table.gv-product-table.gv-recommended-3 .gv-cell:nth-child(3),.gv-activated .gv-features-table.gv-product-table.gv-recommended-3 .gv-product:nth-child(3),.gv-activated .gv-features-table.gv-product-table.gv-recommended-4 .gv-cell:nth-child(4),.gv-activated .gv-features-table.gv-product-table.gv-recommended-4 .gv-product:nth-child(4),.gv-activated .gv-features-table.gv-product-table.gv-recommended-5 .gv-cell:nth-child(5),.gv-activated .gv-features-table.gv-product-table.gv-recommended-5 .gv-product:nth-child(5){border-color:var(--recommended-bg-color)}.gv-activated .gv-features-table.gv-product-table.gv-recommended-1 .gv-cell:nth-child(1):before,.gv-activated .gv-features-table.gv-product-table.gv-recommended-1 .gv-product:nth-child(1):before,.gv-activated .gv-features-table.gv-product-table.gv-recommended-2 .gv-cell:nth-child(2):before,.gv-activated .gv-features-table.gv-product-table.gv-recommended-2 .gv-product:nth-child(2):before,.gv-activated .gv-features-table.gv-product-table.gv-recommended-3 .gv-cell:nth-child(3):before,.gv-activated .gv-features-table.gv-product-table.gv-recommended-3 .gv-product:nth-child(3):before,.gv-activated .gv-features-table.gv-product-table.gv-recommended-4 .gv-cell:nth-child(4):before,.gv-activated .gv-features-table.gv-product-table.gv-recommended-4 .gv-product:nth-child(4):before,.gv-activated .gv-features-table.gv-product-table.gv-recommended-5 .gv-cell:nth-child(5):before,.gv-activated .gv-features-table.gv-product-table.gv-recommended-5 .gv-product:nth-child(5):before{background-color:var(--recommended-bg-color);bottom:0;content:"";left:-1px;position:absolute;top:0;width:1px;z-index:198}@media screen and (max-width:360px){.gv-activated .gv-features-table.gv-product-table .gv-table-slider{scroll-padding:calc(var(--slider-px-min)*1px);padding-left:calc(var(--slider-px-min)*1px);padding-right:calc(var(--slider-px-min)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-features-table.gv-product-table .gv-table-slider{scroll-padding:calc(calc(var(--slider-px-min)*1px) + (var(--slider-px-max) - var(--slider-px-min))*((100vw - 360px)/1080));padding-left:calc(calc(var(--slider-px-min)*1px) + (var(--slider-px-max) - var(--slider-px-min))*((100vw - 360px)/1080));padding-right:calc(calc(var(--slider-px-min)*1px) + (var(--slider-px-max) - var(--slider-px-min))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-features-table.gv-product-table .gv-table-slider{scroll-padding:calc(var(--slider-px-max)*1px);padding-left:calc(var(--slider-px-max)*1px);padding-right:calc(var(--slider-px-max)*1px)}}@media screen and (max-width:360px){.gv-activated .gv-features-table.gv-product-table .gv-table-slider{margin-left:calc((var(--slider-px-min)*1px)*-1);margin-right:calc((var(--slider-px-min)*1px)*-1)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-features-table.gv-product-table .gv-table-slider{margin-left:calc((calc(var(--slider-px-min)*1px) + (var(--slider-px-max) - var(--slider-px-min))*((100vw - 360px)/1080))*-1);margin-right:calc((calc(var(--slider-px-min)*1px) + (var(--slider-px-max) - var(--slider-px-min))*((100vw - 360px)/1080))*-1)}}@media screen and (min-width:1440px){.gv-activated .gv-features-table.gv-product-table .gv-table-slider{margin-left:calc((var(--slider-px-max)*1px)*-1);margin-right:calc((var(--slider-px-max)*1px)*-1)}}.gv-activated .gv-features-table.gv-product-table .gv-product{scroll-snap-align:start}.gv-activated .gv-features-table.gv-product-table .gv-cell:first-child,.gv-activated .gv-features-table.gv-product-table .gv-product:first-child{border-left-width:1px}.gv-activated .gv-features-table.gv-product-table .gv-section-header{display:flex;flex-wrap:nowrap;position:relative}.gv-activated .gv-features-table.gv-product-table .gv-section-header .gv-title{font-weight:var(--font-weight-semibold);font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-features-table.gv-product-table .gv-icons{display:grid;gap:var(--size-sm);grid-template-columns:repeat(3,minmax(0,1fr));text-align:center;width:100%}.gv-activated .gv-features-table.gv-product-table .gv-icons .gv-item{align-items:center;display:flex;flex-direction:column}.gv-activated .gv-features-table.gv-product-table .gv-icons .gv-item-label{color:var(--color-body-on-alternative);display:block;width:100%;font-size:10px;font-weight:var(--font-weight-medium);letter-spacing:.04px;line-height:var(--line-height-body);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width:599px){.gv-activated .gv-features-table.gv-product-table.gv-products-2,.gv-activated .gv-features-table.gv-product-table.gv-products-3{--table-slider-gap:var(--size-md)}.gv-activated .gv-features-table.gv-product-table.gv-products-2.gv-products-2 .gv-cell,.gv-activated .gv-features-table.gv-product-table.gv-products-2.gv-products-2 .gv-product,.gv-activated .gv-features-table.gv-product-table.gv-products-3.gv-products-2 .gv-cell,.gv-activated .gv-features-table.gv-product-table.gv-products-3.gv-products-2 .gv-product{max-width:calc((100% - var(--table-sidebar-width) - (var(--table-slider-gap)*(2 - 1)))/2)}.gv-activated .gv-features-table.gv-product-table.gv-products-2.gv-products-3 .gv-cell,.gv-activated .gv-features-table.gv-product-table.gv-products-2.gv-products-3 .gv-product,.gv-activated .gv-features-table.gv-product-table.gv-products-3.gv-products-3 .gv-cell,.gv-activated .gv-features-table.gv-product-table.gv-products-3.gv-products-3 .gv-product{max-width:calc((100% - var(--table-sidebar-width) - (var(--table-slider-gap)*(3 - 1)))/3)}.gv-activated .gv-features-table.gv-product-table.gv-products-2 .gv-slider-nav,.gv-activated .gv-features-table.gv-product-table.gv-products-2 .gv-slider-pagination,.gv-activated .gv-features-table.gv-product-table.gv-products-3 .gv-slider-nav,.gv-activated .gv-features-table.gv-product-table.gv-products-3 .gv-slider-pagination{display:flex}.gv-activated .gv-features-table.gv-product-table.gv-products-2 .gv-dots-scroll-area,.gv-activated .gv-features-table.gv-product-table.gv-products-3 .gv-dots-scroll-area{padding-top:var(--slider-dots-space)}.gv-activated .gv-features-table.gv-product-table.gv-products-2 .gv-table-slider,.gv-activated .gv-features-table.gv-product-table.gv-products-3 .gv-table-slider{margin-bottom:var(--size-lg);overflow-x:auto;overscroll-behavior-x:none;position:relative;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;-ms-overflow-style:none;scrollbar-width:none}.gv-activated .gv-features-table.gv-product-table.gv-products-2 .gv-table-slider::-webkit-scrollbar,.gv-activated .gv-features-table.gv-product-table.gv-products-3 .gv-table-slider::-webkit-scrollbar{display:none}.gv-activated .gv-features-table.gv-product-table.gv-products-2 .gv-table-row,.gv-activated .gv-features-table.gv-product-table.gv-products-3 .gv-table-row{gap:var(--table-slider-gap)}.gv-activated .gv-features-table.gv-product-table.gv-products-2 .gv-cell,.gv-activated .gv-features-table.gv-product-table.gv-products-2 .gv-product,.gv-activated .gv-features-table.gv-product-table.gv-products-3 .gv-cell,.gv-activated .gv-features-table.gv-product-table.gv-products-3 .gv-product{border-left-width:1px}.gv-activated .gv-features-table.gv-product-table.gv-products-2 .gv-table{width:calc(100% + (1*var(--table-slider-gap)) + (1*((100% - (var(--table-slider-gap)*(1 - 1)))/1)))}.gv-activated .gv-features-table.gv-product-table.gv-products-3 .gv-table{width:calc(100% + (2*var(--table-slider-gap)) + (2*((100% - (var(--table-slider-gap)*(1 - 1)))/1)))}.gv-activated .gv-features-table.gv-product-table.gv-products-4 .gv-table{width:calc(100% + (3*var(--table-slider-gap)) + (3*((100% - (var(--table-slider-gap)*(1 - 1)))/1)))}.gv-activated .gv-features-table.gv-product-table.gv-products-5 .gv-table{width:calc(100% + (4*var(--table-slider-gap)) + (4*((100% - (var(--table-slider-gap)*(1 - 1)))/1)))}}@media (min-width:600px){.gv-activated .gv-features-table.gv-product-table.gv-products-2 .gv-table-slider,.gv-activated .gv-features-table.gv-product-table.gv-products-3 .gv-table-slider{margin:0;padding:0}}@media (min-width:600px) and (max-width:1023px){.gv-activated .gv-features-table.gv-product-table .gv-slider-pagination .gv-dots>:last-child{display:none}.gv-activated .gv-features-table.gv-product-table.gv-products-4 .gv-slider-pagination .gv-dots>:nth-last-child(-n+2),.gv-activated .gv-features-table.gv-product-table.gv-products-5 .gv-slider-pagination .gv-dots>:nth-last-child(-n+2){display:none}.gv-activated .gv-features-table.gv-product-table.gv-products-4 .gv-table{width:calc(100% + (1*var(--table-slider-gap)) + (1*((100% - (var(--table-slider-gap)*(3 - 1)))/3)))}.gv-activated .gv-features-table.gv-product-table.gv-products-5 .gv-table{width:calc(100% + (2*var(--table-slider-gap)) + (2*((100% - (var(--table-slider-gap)*(3 - 1)))/3)))}}@media (max-width:1023px){.gv-activated .gv-features-table.gv-product-table.gv-products-4,.gv-activated .gv-features-table.gv-product-table.gv-products-5{--table-slider-gap:var(--size-md)}.gv-activated .gv-features-table.gv-product-table.gv-products-4.gv-products-4 .gv-cell,.gv-activated .gv-features-table.gv-product-table.gv-products-4.gv-products-4 .gv-product,.gv-activated .gv-features-table.gv-product-table.gv-products-5.gv-products-4 .gv-cell,.gv-activated .gv-features-table.gv-product-table.gv-products-5.gv-products-4 .gv-product{max-width:calc((100% - var(--table-sidebar-width) - (var(--table-slider-gap)*(4 - 1)))/4)}.gv-activated .gv-features-table.gv-product-table.gv-products-4.gv-products-5 .gv-cell,.gv-activated .gv-features-table.gv-product-table.gv-products-4.gv-products-5 .gv-product,.gv-activated .gv-features-table.gv-product-table.gv-products-5.gv-products-5 .gv-cell,.gv-activated .gv-features-table.gv-product-table.gv-products-5.gv-products-5 .gv-product{max-width:calc((100% - var(--table-sidebar-width) - (var(--table-slider-gap)*(5 - 1)))/5)}.gv-activated .gv-features-table.gv-product-table.gv-products-4 .gv-slider-nav,.gv-activated .gv-features-table.gv-product-table.gv-products-4 .gv-slider-pagination,.gv-activated .gv-features-table.gv-product-table.gv-products-5 .gv-slider-nav,.gv-activated .gv-features-table.gv-product-table.gv-products-5 .gv-slider-pagination{display:flex}.gv-activated .gv-features-table.gv-product-table.gv-products-4 .gv-dots-scroll-area,.gv-activated .gv-features-table.gv-product-table.gv-products-5 .gv-dots-scroll-area{padding-top:var(--slider-dots-space)}.gv-activated .gv-features-table.gv-product-table.gv-products-4 .gv-table-slider,.gv-activated .gv-features-table.gv-product-table.gv-products-5 .gv-table-slider{margin-bottom:var(--size-lg);overflow-x:auto;overscroll-behavior-x:none;position:relative;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;-ms-overflow-style:none;scrollbar-width:none}.gv-activated .gv-features-table.gv-product-table.gv-products-4 .gv-table-slider::-webkit-scrollbar,.gv-activated .gv-features-table.gv-product-table.gv-products-5 .gv-table-slider::-webkit-scrollbar{display:none}.gv-activated .gv-features-table.gv-product-table.gv-products-4 .gv-table-row,.gv-activated .gv-features-table.gv-product-table.gv-products-5 .gv-table-row{gap:var(--table-slider-gap)}.gv-activated .gv-features-table.gv-product-table.gv-products-4 .gv-cell,.gv-activated .gv-features-table.gv-product-table.gv-products-4 .gv-product,.gv-activated .gv-features-table.gv-product-table.gv-products-5 .gv-cell,.gv-activated .gv-features-table.gv-product-table.gv-products-5 .gv-product{border-left-width:1px}}@media (min-width:1024px){.gv-activated .gv-features-table.gv-product-table.gv-products-4 .gv-table-slider,.gv-activated .gv-features-table.gv-product-table.gv-products-5 .gv-table-slider{margin:0;padding:0}}.gv-activated .gv-features-table.gv-comparison-table{--table-sidebar-width:220px}@media screen and (max-width:360px){.gv-activated .gv-features-table.gv-comparison-table .gv-table-slider{padding-right:calc(var(--slider-px-min)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-features-table.gv-comparison-table .gv-table-slider{padding-right:calc(calc(var(--slider-px-min)*1px) + (var(--slider-px-max) - var(--slider-px-min))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-features-table.gv-comparison-table .gv-table-slider{padding-right:calc(var(--slider-px-max)*1px)}}@media screen and (max-width:360px){.gv-activated .gv-features-table.gv-comparison-table .gv-table-slider{margin-right:calc(calc(var(--slider-px-min)*1px)*-1)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-features-table.gv-comparison-table .gv-table-slider{margin-right:calc((calc(var(--slider-px-min)*1px) + (var(--slider-px-max) - var(--slider-px-min))*((100vw - 360px)/1080))*-1)}}@media screen and (min-width:1440px){.gv-activated .gv-features-table.gv-comparison-table .gv-table-slider{margin-right:calc(calc(var(--slider-px-max)*1px)*-1)}}@media screen and (max-width:360px){.gv-activated .gv-features-table.gv-comparison-table .gv-table-slider .gv-table{padding-right:calc(var(--slider-px-min)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-features-table.gv-comparison-table .gv-table-slider .gv-table{padding-right:calc(calc(var(--slider-px-min)*1px) + (var(--slider-px-max) - var(--slider-px-min))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-features-table.gv-comparison-table .gv-table-slider .gv-table{padding-right:calc(var(--slider-px-max)*1px)}}.gv-activated .gv-features-table.gv-comparison-table .gv-table-container:after,.gv-activated .gv-features-table.gv-comparison-table .gv-table-container:before{background-color:var(--color-border);bottom:0;content:"";position:absolute;top:var(--recommended-label-height);width:1px;z-index:198}.gv-activated .gv-features-table.gv-comparison-table .gv-table-container:before{left:0}.gv-activated .gv-features-table.gv-comparison-table .gv-table-container:after{right:0}.gv-activated .gv-features-table.gv-comparison-table .gv-product{scroll-snap-align:end}.gv-activated .gv-features-table.gv-comparison-table .gv-table-info{font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-features-table.gv-comparison-table .gv-table-info.gv-header-info{padding:var(--size-lg)}.gv-activated .gv-features-table.gv-comparison-table .gv-bottom-info{display:none;padding:var(--size-lg)0 0}.gv-activated .gv-features-table.gv-comparison-table .gv-cell-info,.gv-activated .gv-features-table.gv-comparison-table .gv-header-info{border-right:1px solid var(--color-border);flex:0 0 var(--table-sidebar-width);left:0;position:sticky;width:var(--table-sidebar-width);z-index:190}.gv-activated .gv-features-table.gv-comparison-table .gv-section{border-top:1px solid var(--color-border)}.gv-activated .gv-features-table.gv-comparison-table .gv-section-header{background-color:var(--color-surface-bright);border-bottom:1px solid var(--color-border);border-right:1px solid var(--color-border);position:relative}.gv-activated .gv-features-table.gv-comparison-table .gv-section-header .gv-title{display:block;left:0;padding:var(--size-md)0 var(--size-md) var(--size-lg);position:sticky;font-weight:var(--font-weight-semibold);line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-features-table.gv-comparison-table .gv-section-header .gv-title{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-features-table.gv-comparison-table .gv-section-header .gv-title{font-size:calc(14px + 2*((100vw - 360px)/1080));letter-spacing:calc(.035px + .045*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-features-table.gv-comparison-table .gv-section-header .gv-title{font-size:16px;letter-spacing:.08px}}.gv-activated .gv-features-table.gv-comparison-table .gv-cell{justify-content:center}@media (max-width:599px){.gv-activated .gv-features-table.gv-comparison-table.gv-products-1 .gv-header-info{display:none}.gv-activated .gv-features-table.gv-comparison-table .gv-bottom-info{display:block}.gv-activated .gv-features-table.gv-comparison-table.gv-products-2 .gv-table{width:calc(var(--table-sidebar-width) + (100%*2))}.gv-activated .gv-features-table.gv-comparison-table.gv-products-2 .gv-section-title .gv-title{width:calc(((100% - var(--table-sidebar-width))/2) - 1px)}.gv-activated .gv-features-table.gv-comparison-table.gv-products-2 .gv-slider-nav,.gv-activated .gv-features-table.gv-comparison-table.gv-products-2 .gv-slider-pagination{display:flex}.gv-activated .gv-features-table.gv-comparison-table.gv-products-2 .gv-dots-scroll-area{padding-top:var(--slider-dots-space)}.gv-activated .gv-features-table.gv-comparison-table.gv-products-2 .gv-table-slider{margin-bottom:var(--size-lg);overflow-x:auto;overscroll-behavior-x:none;position:relative;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;-ms-overflow-style:none;scrollbar-width:none}.gv-activated .gv-features-table.gv-comparison-table.gv-products-2 .gv-table-slider::-webkit-scrollbar{display:none}.gv-activated .gv-features-table.gv-comparison-table.gv-products-2 .gv-table-row{gap:var(--table-slider-gap)}.gv-activated .gv-features-table.gv-comparison-table.gv-products-3 .gv-table{width:calc(var(--table-sidebar-width) + (100%*3))}.gv-activated .gv-features-table.gv-comparison-table.gv-products-3 .gv-section-title .gv-title{width:calc(((100% - var(--table-sidebar-width))/3) - 1px)}.gv-activated .gv-features-table.gv-comparison-table.gv-products-4 .gv-table{width:calc(var(--table-sidebar-width) + (100%*4))}.gv-activated .gv-features-table.gv-comparison-table.gv-products-4 .gv-section-title .gv-title{width:calc(((100% - var(--table-sidebar-width))/4) - 1px)}.gv-activated .gv-features-table.gv-comparison-table.gv-products-5 .gv-table{width:calc(var(--table-sidebar-width) + (100%*5))}.gv-activated .gv-features-table.gv-comparison-table.gv-products-5 .gv-section-title .gv-title{width:calc(((100% - var(--table-sidebar-width))/5) - 1px)}.gv-activated .gv-features-table.gv-comparison-table:not(.gv-products-1) .gv-table-container:after{display:none}.gv-activated .gv-features-table.gv-comparison-table:not(.gv-products-1) .gv-product{scroll-snap-align:start!important}.gv-activated .gv-features-table.gv-comparison-table:not(.gv-products-1) .gv-header-info{opacity:0;pointer-events:none}.gv-activated .gv-features-table.gv-comparison-table:not(.gv-products-1) .gv-cell{padding-left:calc(var(--table-sidebar-width) + var(--size-lg))}}@media (min-width:600px) and (max-width:1023px){.gv-activated .gv-features-table.gv-comparison-table .gv-slider-pagination .gv-dots>:last-child{display:none}.gv-activated .gv-features-table.gv-comparison-table.gv-products-3 .gv-table{width:calc(100% + ((100% - var(--table-sidebar-width))/2*1))}.gv-activated .gv-features-table.gv-comparison-table.gv-products-3 .gv-section-title .gv-title{width:calc(var(--table-sidebar-width) - 1px + (((100% - var(--table-sidebar-width))/3)*2))}.gv-activated .gv-features-table.gv-comparison-table.gv-products-4 .gv-table{width:calc(100% + ((100% - var(--table-sidebar-width))/2*2))}.gv-activated .gv-features-table.gv-comparison-table.gv-products-4 .gv-section-title .gv-title{width:calc(var(--table-sidebar-width) - 1px + (((100% - var(--table-sidebar-width))/4)*2))}.gv-activated .gv-features-table.gv-comparison-table.gv-products-5 .gv-table{width:calc(100% + ((100% - var(--table-sidebar-width))/2*3))}.gv-activated .gv-features-table.gv-comparison-table.gv-products-5 .gv-section-title .gv-title{width:calc(var(--table-sidebar-width) - 1px + (((100% - var(--table-sidebar-width))/5)*2))}}@media (min-width:600px){.gv-activated .gv-features-table.gv-comparison-table .gv-table-slider{margin-right:0!important;padding-right:0!important}.gv-activated .gv-features-table.gv-comparison-table .gv-table-slider .gv-table{padding-right:0!important}.gv-activated .gv-features-table.gv-comparison-table .gv-product .gv-recommended-label.gv-off-view{opacity:0}}@media (max-width:1023px){.gv-activated .gv-features-table.gv-comparison-table.gv-products-3 .gv-slider-nav,.gv-activated .gv-features-table.gv-comparison-table.gv-products-3 .gv-slider-pagination,.gv-activated .gv-features-table.gv-comparison-table.gv-products-4 .gv-slider-nav,.gv-activated .gv-features-table.gv-comparison-table.gv-products-4 .gv-slider-pagination{display:flex}.gv-activated .gv-features-table.gv-comparison-table.gv-products-3 .gv-dots-scroll-area,.gv-activated .gv-features-table.gv-comparison-table.gv-products-4 .gv-dots-scroll-area{padding-top:var(--slider-dots-space)}.gv-activated .gv-features-table.gv-comparison-table.gv-products-3 .gv-table-slider,.gv-activated .gv-features-table.gv-comparison-table.gv-products-4 .gv-table-slider{margin-bottom:var(--size-lg);overflow-x:auto;overscroll-behavior-x:none;position:relative;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;-ms-overflow-style:none;scrollbar-width:none}.gv-activated .gv-features-table.gv-comparison-table.gv-products-3 .gv-table-slider::-webkit-scrollbar,.gv-activated .gv-features-table.gv-comparison-table.gv-products-4 .gv-table-slider::-webkit-scrollbar{display:none}.gv-activated .gv-features-table.gv-comparison-table.gv-products-3 .gv-table-row,.gv-activated .gv-features-table.gv-comparison-table.gv-products-4 .gv-table-row{gap:var(--table-slider-gap)}}@media (max-width:1279px){.gv-activated .gv-features-table.gv-comparison-table.gv-products-5 .gv-slider-nav,.gv-activated .gv-features-table.gv-comparison-table.gv-products-5 .gv-slider-pagination{display:flex}.gv-activated .gv-features-table.gv-comparison-table.gv-products-5 .gv-dots-scroll-area{padding-top:var(--slider-dots-space)}.gv-activated .gv-features-table.gv-comparison-table.gv-products-5 .gv-table-slider{margin-bottom:var(--size-lg);overflow-x:auto;overscroll-behavior-x:none;position:relative;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;-ms-overflow-style:none;scrollbar-width:none}.gv-activated .gv-features-table.gv-comparison-table.gv-products-5 .gv-table-slider::-webkit-scrollbar{display:none}.gv-activated .gv-features-table.gv-comparison-table.gv-products-5 .gv-table-row{gap:var(--table-slider-gap)}}@media (min-width:1024px) and (max-width:1279px){.gv-activated .gv-features-table.gv-comparison-table.gv-products-5 .gv-table{width:calc(100% + ((100% - var(--table-sidebar-width))/4*1))}.gv-activated .gv-features-table.gv-comparison-table.gv-products-5 .gv-section-title .gv-title{width:calc(var(--table-sidebar-width) - 1px + (((100% - var(--table-sidebar-width))/5)*4))}.gv-activated .gv-features-table.gv-comparison-table.gv-products-5 .gv-slider-pagination .gv-dots>:nth-last-child(-n+3){display:none}}.gv-activated .gv-content-container{background-color:var(--color-surface-bright);border:var(--size-border) solid var(--color-border-alt);border-radius:var(--border-radius);box-shadow:var(--color-shadow-subtle)}.gv-activated .gv-contextual-menu{z-index:1100}.gv-activated .gv-contextual-menu .gv-menu{background-color:var(--color-surface-bright);padding:var(--size-sm);width:100%}.gv-activated .gv-contextual-menu .gv-menu>:not(:last-child),.gv-activated .gv-contextual-menu ul>:not(:last-child){margin-bottom:8px}.gv-activated .gv-contextual-menu .gv-btn-close{display:none;padding:8px;position:absolute;right:var(--size-sm);top:var(--size-sm)}.gv-activated .gv-contextual-menu ul,.gv-activated .gv-main-header .gv-nav-select .gv-nav-dropdown ul{list-style:none;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-contextual-menu ul li{display:flex;flex-direction:column;gap:var(--size-sm)}.gv-activated .gv-contextual-menu .gv-menu-item{align-items:center;border-radius:var(--border-radius);display:flex;gap:var(--size-sm);height:var(--size-xl);padding:0 var(--size-sm);position:relative;text-align:left;text-decoration:none;width:100%}.gv-activated .gv-contextual-menu .gv-menu-item:hover{background-color:var(--color-state-hover)}.gv-activated .gv-contextual-menu .gv-menu-item.gv-active,.gv-activated .gv-contextual-menu .gv-menu-item[aria-selected=true]{background-color:var(--color-state-active)}.gv-activated .gv-contextual-menu .gv-menu-item[target=_blank]{padding-right:32px}.gv-activated .gv-contextual-menu .gv-menu-item[target=_blank] .gv-indicator{margin-left:var(--size-xs);margin-right:var(--size-sm)}.gv-activated .gv-contextual-menu .gv-menu-item[target=_blank]:after{background-color:var(--color-body-on-default);content:"";display:block;-webkit-mask:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='currentColor'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M5.65%2020.5q-.925%200-1.537-.613-.613-.612-.613-1.537V5.65q0-.925.613-1.538Q4.725%203.5%205.65%203.5h5.825v1.35H5.65q-.3%200-.55.25-.25.25-.25.55v12.7q0%20.3.25.55.25.25.55.25h12.7q.3%200%20.55-.25.25-.25.25-.55v-5.825h1.35v5.825q0%20.925-.612%201.537-.613.613-1.538.613Zm4.025-5.225-.95-.95L18.2%204.85h-3.725V3.5H20.5v6.025h-1.35V5.8Z'/%3e%3c/svg%3e")no-repeat 50% 50%;mask:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='currentColor'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M5.65%2020.5q-.925%200-1.537-.613-.613-.612-.613-1.537V5.65q0-.925.613-1.538Q4.725%203.5%205.65%203.5h5.825v1.35H5.65q-.3%200-.55.25-.25.25-.25.55v12.7q0%20.3.25.55.25.25.55.25h12.7q.3%200%20.55-.25.25-.25.25-.55v-5.825h1.35v5.825q0%20.925-.612%201.537-.613.613-1.538.613Zm4.025-5.225-.95-.95L18.2%204.85h-3.725V3.5H20.5v6.025h-1.35V5.8Z'/%3e%3c/svg%3e")no-repeat 50% 50%;-webkit-mask-size:contain;mask-size:contain;height:100%;right:var(--size-sm);position:absolute;top:0;width:var(--size-icon-md)}.gv-activated .gv-contextual-menu .gv-menu-item gv-icon,.gv-activated .gv-data-field .gv-content button{flex-shrink:0}.gv-activated .gv-contextual-menu .gv-menu-item>span{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-contextual-menu .gv-divider{margin-top:var(--size-md)}@media (max-width:599px){.gv-activated .gv-contextual-menu{bottom:0;background:var(--color-overlay-dark);left:0;position:fixed;right:0;top:0}.gv-activated .gv-contextual-menu .gv-menu{bottom:0;left:0;padding-top:var(--size-xl);position:absolute}.gv-activated .gv-contextual-menu .gv-btn-close{display:block}}@media (min-width:600px){.gv-activated .gv-contextual-menu{max-width:300px;min-width:200px;position:absolute}.gv-activated .gv-contextual-menu .gv-menu{border:1px solid var(--color-border-alt);border-radius:var(--border-radius);box-shadow:var(--color-shadow-elevated)}.gv-activated .gv-contextual-menu .gv-menu gv-icon{height:var(--size-icon-sm);width:var(--size-icon-sm)}.gv-activated .gv-contextual-menu .gv-menu-item{height:30px}.gv-activated .gv-contextual-menu .gv-menu-item[target=_blank]:after{width:var(--size-icon-sm)}}.gv-activated .gv-chip{--chip-color-background:var(--color-surface-dim);--chip-color-border:var(--color-border);--chip-color-text:var(--color-body-on-default);--chip-height:28px;background-color:var(--chip-color-background);border:var(--size-border) solid var(--chip-color-border);border-radius:var(--chip-radius);color:var(--chip-color-text);cursor:pointer;display:inline-block;height:var(--chip-height);max-width:100%;padding:var(--size-xs) var(--size-md);position:relative;font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:.048px;line-height:var(--line-height-body);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-chip.gv-chip-active{--chip-color-background:var(--color-state-active);--chip-color-border:var(--color-state-focus)}.gv-activated .gv-chip.gv-chip-active:not(.gv-chip-radio){padding-right:40px}.gv-activated .gv-chip.gv-chip-active:not(.gv-chip-radio):after{background-color:var(--chip-color-text);content:"";display:block;-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpath%20d='m6.3%2018.7-.95-1%205.675-5.7L5.35%206.25l.95-1L12.025%2011%2017.7%205.25l.95%201L12.975%2012l5.675%205.7-.95%201-5.675-5.75Z'/%3e%3c/svg%3e")no-repeat 50% 50%;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpath%20d='m6.3%2018.7-.95-1%205.675-5.7L5.35%206.25l.95-1L12.025%2011%2017.7%205.25l.95%201L12.975%2012l5.675%205.7-.95%201-5.675-5.75Z'/%3e%3c/svg%3e")no-repeat 50% 50%;-webkit-mask-size:contain;mask-size:contain;height:100%;right:16px;position:absolute;top:0;width:var(--size-icon-sm)}.gv-activated .gv-chip.gv-chip-active.gv-chip-radio{cursor:default}.gv-activated .gv-chip-labels{--chip-label-height:16px;display:flex;flex-wrap:wrap;gap:4px}.gv-activated .gv-chip-labels .gv-item,.gv-activated .gv-chip-labels .gv-more{white-space:nowrap;font-size:10px;font-weight:var(--font-weight-semibold);letter-spacing:.04px;line-height:var(--line-height-body)}.gv-activated .gv-chip-labels .gv-item{background-color:var(--color-state-active);border-radius:16px;color:var(--color-body-on-default);height:var(--chip-label-height);padding:0 8px;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis}.gv-activated .gv-chip-labels .gv-more{color:var(--color-state-form-active);padding-left:8px;position:relative;text-decoration:none}.gv-activated .gv-chip-labels .gv-more:before{content:"+";display:block;left:0;position:absolute;top:-1px}.gv-activated .gv-data-field,.gv-activated .gv-data-table{font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-data-field{display:flex;flex-direction:column}.gv-activated .gv-data-field .gv-label{color:var(--color-body-on-alternative)}.gv-activated .gv-data-field .gv-label gv-icon,.gv-activated .gv-data-table .gv-text-icon gv-icon,.gv-activated .gv-data-table th .gv-th-tooltip gv-icon,.gv-activated .gv-divider-button gv-icon,.gv-activated .gv-mode-condensed gv-flag,.gv-activated .gv-mode-condensed gv-icon,.gv-activated .gv-pagination gv-icon,.gv-activated gv-flag.gv-mode-condensed,.gv-activated gv-icon.gv-mode-condensed,.gv-activated gv-icon[size=small]{height:var(--size-icon-sm);width:var(--size-icon-sm)}.gv-activated .gv-data-field .gv-content,.gv-activated .gv-data-field .gv-label{align-items:center;display:flex;flex-wrap:nowrap;gap:4px}.gv-activated .gv-data-field .gv-content span{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-data-table{background-color:var(--color-surface-bright);border:1px solid var(--color-border-alt);border-radius:var(--border-radius);box-shadow:var(--color-shadow-subtle);overflow:hidden;width:100%;--form-element-height:30px}.gv-activated .gv-data-table .gv-button{font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-data-table .gv-checkbox,.gv-activated .gv-data-table .gv-radio{height:var(--size-md);width:var(--size-md)}.gv-activated .gv-data-table .gv-radio:checked:after{border-width:5px}.gv-activated .gv-data-table .gv-input.gv-input-number button,.gv-activated .gv-filter-options .gv-input.gv-input-number button,.gv-activated .gv-pagination .gv-input.gv-input-number button{padding:0}.gv-activated .gv-data-table .gv-toggle{--toggle-height:16px;--toggle-width:28px;--toggle-dot-indent:2px}.gv-activated .gv-data-table .gv-col-1-text-right tr>:nth-child(1){text-align:right}.gv-activated .gv-data-table .gv-col-1-shrink tr>:nth-child(1){width:1px}.gv-activated .gv-data-table .gv-col-1-truncate tr>:nth-child(1){max-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-data-table .gv-col-2-text-right tr>:nth-child(2){text-align:right}.gv-activated .gv-data-table .gv-col-2-shrink tr>:nth-child(2){width:1px}.gv-activated .gv-data-table .gv-col-2-truncate tr>:nth-child(2){max-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-data-table .gv-col-3-text-right tr>:nth-child(3){text-align:right}.gv-activated .gv-data-table .gv-col-3-shrink tr>:nth-child(3){width:1px}.gv-activated .gv-data-table .gv-col-3-truncate tr>:nth-child(3){max-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-data-table .gv-col-4-text-right tr>:nth-child(4){text-align:right}.gv-activated .gv-data-table .gv-col-4-shrink tr>:nth-child(4){width:1px}.gv-activated .gv-data-table .gv-col-4-truncate tr>:nth-child(4){max-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-data-table .gv-col-5-text-right tr>:nth-child(5){text-align:right}.gv-activated .gv-data-table .gv-col-5-shrink tr>:nth-child(5){width:1px}.gv-activated .gv-data-table .gv-col-5-truncate tr>:nth-child(5){max-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-data-table .gv-col-6-text-right tr>:nth-child(6){text-align:right}.gv-activated .gv-data-table .gv-col-6-shrink tr>:nth-child(6){width:1px}.gv-activated .gv-data-table .gv-col-6-truncate tr>:nth-child(6){max-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-data-table .gv-col-7-text-right tr>:nth-child(7){text-align:right}.gv-activated .gv-data-table .gv-col-7-shrink tr>:nth-child(7){width:1px}.gv-activated .gv-data-table .gv-col-7-truncate tr>:nth-child(7){max-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-data-table .gv-col-8-text-right tr>:nth-child(8){text-align:right}.gv-activated .gv-data-table .gv-col-8-shrink tr>:nth-child(8){width:1px}.gv-activated .gv-data-table .gv-col-8-truncate tr>:nth-child(8){max-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-data-table .gv-col-9-text-right tr>:nth-child(9){text-align:right}.gv-activated .gv-data-table .gv-col-9-shrink tr>:nth-child(9){width:1px}.gv-activated .gv-data-table .gv-col-9-truncate tr>:nth-child(9){max-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-data-table .gv-col-10-text-right tr>:nth-child(10){text-align:right}.gv-activated .gv-data-table .gv-col-10-shrink tr>:nth-child(10){width:1px}.gv-activated .gv-data-table .gv-col-10-truncate tr>:nth-child(10){max-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-data-table .gv-col-11-text-right tr>:nth-child(11){text-align:right}.gv-activated .gv-data-table .gv-col-11-shrink tr>:nth-child(11){width:1px}.gv-activated .gv-data-table .gv-col-11-truncate tr>:nth-child(11){max-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-data-table .gv-col-12-text-right tr>:nth-child(12){text-align:right}.gv-activated .gv-data-table .gv-col-12-shrink tr>:nth-child(12){width:1px}.gv-activated .gv-data-table .gv-col-12-truncate tr>:nth-child(12){max-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-data-table .gv-empty-state{gap:16px;padding:var(--size-lg)}.gv-activated .gv-data-table .gv-empty-state .gv-empty-state-content>:not(:last-child){margin-bottom:0}.gv-activated .gv-data-table .gv-empty-state .gv-empty-state-content .gv-title{font-weight:var(--font-weight-semibold);line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-data-table .gv-empty-state .gv-empty-state-content .gv-title{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-data-table .gv-empty-state .gv-empty-state-content .gv-title{font-size:calc(14px + 4*((100vw - 360px)/1080));letter-spacing:calc(.035px + -.035*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-data-table .gv-empty-state .gv-empty-state-content .gv-title{font-size:18px;letter-spacing:0}}.gv-activated .gv-data-table .gv-load-more{padding:16px 24px;text-align:center}.gv-activated .gv-data-table table{line-height:var(--line-height-body);width:100%}.gv-activated .gv-data-table thead{border-bottom:1px solid var(--color-border-alt)}.gv-activated .gv-data-table tbody tr:nth-child(2n),.gv-activated .gv-list-table tr:nth-child(2n){background-color:var(--color-zebra-even)}.gv-activated .gv-data-table tbody tr:nth-child(odd),.gv-activated .gv-list-table tr:nth-child(odd){background-color:var(--color-zebra-odd)}.gv-activated .gv-data-table tbody tr:hover,.gv-activated .gv-list-table tr:hover{background-color:var(--color-zebra-hover)}.gv-activated .gv-data-table.gv-data-table-alternative tbody tr{background-color:var(--color-zebra-even)}.gv-activated .gv-data-table.gv-data-table-alternative tbody tr:not(:last-child){border-bottom:1px solid var(--color-border-alt)}.gv-activated .gv-data-table td,.gv-activated .gv-data-table th{padding:8px 16px;white-space:nowrap}.gv-activated .gv-data-table th{font-weight:var(--font-weight-semibold)}.gv-activated .gv-data-table th:not(.gv-text-right){text-align:left}.gv-activated .gv-data-table th .gv-th-sort,.gv-activated .gv-data-table th .gv-th-tooltip{align-items:center;display:inline-flex;flex-wrap:nowrap;gap:var(--size-md)}.gv-activated .gv-data-table th .gv-th-tooltip{gap:var(--size-sm)}.gv-activated .gv-data-table .gv-col-shrink{width:1px}.gv-activated .gv-data-table .gv-col-truncate{max-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-data-table .gv-underline{color:var(--color-body-on-alternative);display:block;font-size:10px;font-weight:var(--font-weight-medium);letter-spacing:.04px;line-height:var(--line-height-body);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-data-table .gv-text-icon{align-items:center;max-width:100%}.gv-activated .gv-data-table .gv-text-icon span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-data-table a[target=_blank]:not(.gv-button,.gv-no-external-icon){padding-right:calc(var(--size-icon-sm) + var(--size-xs));position:relative}.gv-activated .gv-data-table a[target=_blank]:not(.gv-button,.gv-no-external-icon):after{background-color:var(--color-body-on-default);content:"";display:block;-webkit-mask:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='currentColor'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M5.65%2020.5q-.925%200-1.537-.613-.613-.612-.613-1.537V5.65q0-.925.613-1.538Q4.725%203.5%205.65%203.5h5.825v1.35H5.65q-.3%200-.55.25-.25.25-.25.55v12.7q0%20.3.25.55.25.25.55.25h12.7q.3%200%20.55-.25.25-.25.25-.55v-5.825h1.35v5.825q0%20.925-.612%201.537-.613.613-1.538.613Zm4.025-5.225-.95-.95L18.2%204.85h-3.725V3.5H20.5v6.025h-1.35V5.8Z'/%3e%3c/svg%3e")no-repeat 50% 50%;mask:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='currentColor'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M5.65%2020.5q-.925%200-1.537-.613-.613-.612-.613-1.537V5.65q0-.925.613-1.538Q4.725%203.5%205.65%203.5h5.825v1.35H5.65q-.3%200-.55.25-.25.25-.25.55v12.7q0%20.3.25.55.25.25.55.25h12.7q.3%200%20.55-.25.25-.25.25-.55v-5.825h1.35v5.825q0%20.925-.612%201.537-.613.613-1.538.613Zm4.025-5.225-.95-.95L18.2%204.85h-3.725V3.5H20.5v6.025h-1.35V5.8Z'/%3e%3c/svg%3e")no-repeat 50% 50%;-webkit-mask-size:contain;mask-size:contain;height:100%;right:0;position:absolute;top:0;width:var(--size-icon-sm)}.gv-activated .gv-data-table a[target=_blank]:not(.gv-button,.gv-no-external-icon).gv-action:after{background-color:var(--color-state-form-active)}@media (max-width:599px){.gv-activated .gv-data-table .gv-max-mob-col-1-hidden tr>:nth-child(1),.gv-activated .gv-data-table .gv-max-mob-col-10-hidden tr>:nth-child(10),.gv-activated .gv-data-table .gv-max-mob-col-11-hidden tr>:nth-child(11),.gv-activated .gv-data-table .gv-max-mob-col-12-hidden tr>:nth-child(12),.gv-activated .gv-data-table .gv-max-mob-col-2-hidden tr>:nth-child(2),.gv-activated .gv-data-table .gv-max-mob-col-3-hidden tr>:nth-child(3),.gv-activated .gv-data-table .gv-max-mob-col-4-hidden tr>:nth-child(4),.gv-activated .gv-data-table .gv-max-mob-col-5-hidden tr>:nth-child(5),.gv-activated .gv-data-table .gv-max-mob-col-6-hidden tr>:nth-child(6),.gv-activated .gv-data-table .gv-max-mob-col-7-hidden tr>:nth-child(7),.gv-activated .gv-data-table .gv-max-mob-col-8-hidden tr>:nth-child(8),.gv-activated .gv-data-table .gv-max-mob-col-9-hidden tr>:nth-child(9){display:none}}@media (max-width:767px){.gv-activated .gv-data-table .gv-max-tab-sm-col-1-hidden tr>:nth-child(1),.gv-activated .gv-data-table .gv-max-tab-sm-col-10-hidden tr>:nth-child(10),.gv-activated .gv-data-table .gv-max-tab-sm-col-11-hidden tr>:nth-child(11),.gv-activated .gv-data-table .gv-max-tab-sm-col-12-hidden tr>:nth-child(12),.gv-activated .gv-data-table .gv-max-tab-sm-col-2-hidden tr>:nth-child(2),.gv-activated .gv-data-table .gv-max-tab-sm-col-3-hidden tr>:nth-child(3),.gv-activated .gv-data-table .gv-max-tab-sm-col-4-hidden tr>:nth-child(4),.gv-activated .gv-data-table .gv-max-tab-sm-col-5-hidden tr>:nth-child(5),.gv-activated .gv-data-table .gv-max-tab-sm-col-6-hidden tr>:nth-child(6),.gv-activated .gv-data-table .gv-max-tab-sm-col-7-hidden tr>:nth-child(7),.gv-activated .gv-data-table .gv-max-tab-sm-col-8-hidden tr>:nth-child(8),.gv-activated .gv-data-table .gv-max-tab-sm-col-9-hidden tr>:nth-child(9){display:none}}@media (max-width:1023px){.gv-activated .gv-data-table .gv-max-tab-col-1-hidden tr>:nth-child(1),.gv-activated .gv-data-table .gv-max-tab-col-10-hidden tr>:nth-child(10),.gv-activated .gv-data-table .gv-max-tab-col-11-hidden tr>:nth-child(11),.gv-activated .gv-data-table .gv-max-tab-col-12-hidden tr>:nth-child(12),.gv-activated .gv-data-table .gv-max-tab-col-2-hidden tr>:nth-child(2),.gv-activated .gv-data-table .gv-max-tab-col-3-hidden tr>:nth-child(3),.gv-activated .gv-data-table .gv-max-tab-col-4-hidden tr>:nth-child(4),.gv-activated .gv-data-table .gv-max-tab-col-5-hidden tr>:nth-child(5),.gv-activated .gv-data-table .gv-max-tab-col-6-hidden tr>:nth-child(6),.gv-activated .gv-data-table .gv-max-tab-col-7-hidden tr>:nth-child(7),.gv-activated .gv-data-table .gv-max-tab-col-8-hidden tr>:nth-child(8),.gv-activated .gv-data-table .gv-max-tab-col-9-hidden tr>:nth-child(9){display:none}}.gv-activated .gv-pagination,.gv-activated .gv-pagination .gv-button{font-size:12px;letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-pagination{--pagination-btn-size:40px;align-items:center;border-top:1px solid var(--color-border-alt);display:flex;flex-flow:column nowrap;gap:var(--size-sm);padding:var(--size-sm) var(--size-md);--form-element-height:30px;font-weight:var(--font-weight-medium)}.gv-activated .gv-pagination .gv-button{font-weight:var(--font-weight-semibold)}.gv-activated .gv-pagination .gv-checkbox,.gv-activated .gv-pagination .gv-radio{height:var(--size-md);width:var(--size-md)}.gv-activated .gv-filter-options .gv-radio:checked:after,.gv-activated .gv-pagination .gv-radio:checked:after{border-width:5px}.gv-activated .gv-pagination .gv-toggle{--toggle-height:16px;--toggle-width:28px;--toggle-dot-indent:2px}.gv-activated .gv-pagination nav ul{display:flex;flex-wrap:nowrap;list-style:none;padding:0}.gv-activated .gv-pagination nav li{display:block;height:var(--pagination-btn-size)}.gv-activated .gv-pagination nav li.gv-page-select{align-items:center;display:flex;padding-left:var(--size-xs);padding-right:var(--size-xs)}.gv-activated .gv-pagination nav li.gv-page-select .gv-input-select{width:112px}.gv-activated .gv-pagination nav li:not(.gv-page-select){width:var(--pagination-btn-size)}.gv-activated .gv-pagination nav li:not(.gv-page-select)>*{align-items:center;display:inline-flex;justify-content:center;height:100%;width:100%}.gv-activated .gv-pagination nav li:not(.gv-page-select)>:not(span){border-radius:var(--border-radius);text-decoration:none;font-weight:var(--font-weight-semibold)}.gv-activated .gv-pagination nav li:not(.gv-page-select)>:not(span):hover{background-color:var(--color-state-hover)}.gv-activated .gv-pagination nav li:not(.gv-page-select).gv-active>*{background-color:var(--color-state-active);pointer-events:none}.gv-activated .gv-pagination nav li:not(.gv-page-select).gv-disabled>*{color:var(--color-body-on-alternative);pointer-events:none}.gv-activated .gv-pagination .gv-amount-select{align-items:center;display:flex;gap:var(--size-sm);white-space:nowrap}.gv-activated .gv-pagination .gv-amount-select .gv-input-select{width:120px}@media (max-width:599px){.gv-activated .gv-pagination nav li.gv-page{display:none}}@media (min-width:600px){.gv-activated .gv-pagination nav li.gv-first,.gv-activated .gv-pagination nav li.gv-last,.gv-activated .gv-pagination nav li.gv-page-select{display:none}}@media (min-width:1024px){.gv-activated .gv-pagination{flex-flow:row-reverse wrap;justify-content:space-between}.gv-activated .gv-pagination .gv-note{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.gv-activated .gv-divider{--divider-color:var(--color-border);--divider-color-alternative:var(--color-border-alt);border-top:1px solid var(--divider-color);border-right:0;border-bottom:0;border-left:0;display:block;height:1px;width:100%}.gv-activated .gv-divider.gv-divider-vertical{border-left:1px solid var(--divider-color);border-top:0;height:100%;min-height:var(--size-md);width:1px}.gv-activated .gv-divider.gv-divider-dashed{border-style:dashed}.gv-activated .gv-divider.gv-divider-light{border-color:var(--divider-color-alternative)}.gv-activated .gv-donut-chart,.gv-activated .gv-donut-chart .gv-progress-circle{align-items:center;display:flex;height:72px;justify-content:center;width:72px}.gv-activated .gv-donut-chart .gv-progress-circle{background-color:var(--color-surface-dim);color:var(--color-body-on-alternative);border-radius:50%;height:60px;position:relative;width:60px;font-weight:var(--font-weight-semibold);font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-donut-chart .gv-progress-circle gv-indicator,.gv-activated .gv-stepper .gv-stepper-progress gv-indicator{height:100%;left:0;position:absolute;top:0;transform:rotate(-90deg);transform-origin:center;width:100%}.gv-activated .gv-donut-chart .gv-progress-circle .gv-circle-top{transition:stroke-dashoffset .4s ease-in-out}.gv-activated .gv-donut-chart .gv-progress-circle[data-progress-percent="20"] .gv-circle-top{stroke-dasharray:188.49555922;stroke-dashoffset:150.79644737}.gv-activated .gv-donut-chart .gv-progress-circle[data-progress-percent="40"] .gv-circle-top{stroke-dasharray:188.49555922;stroke-dashoffset:113.09733553}.gv-activated .gv-donut-chart .gv-progress-circle[data-progress-percent="60"] .gv-circle-top{stroke-dasharray:188.49555922;stroke-dashoffset:75.39822369}.gv-activated .gv-donut-chart .gv-progress-circle[data-progress-percent="80"] .gv-circle-top{stroke-dasharray:188.49555922;stroke-dashoffset:37.69911184}.gv-activated .gv-donut-chart .gv-progress-circle[data-progress-percent="100"] .gv-circle-top{stroke-dasharray:188.49555922;stroke-dashoffset:0}.gv-activated .gv-donut-chart .gv-progress-circle circle{stroke-width:3px}.gv-activated .gv-donut-chart .gv-progress-circle.gv-state-success{background-color:var(--color-signal-success-light);color:var(--color-signal-success)}.gv-activated .gv-donut-chart .gv-progress-circle.gv-state-warning{background-color:var(--color-signal-warning-light);color:var(--color-signal-warning)}.gv-activated .gv-donut-chart .gv-progress-circle.gv-state-alert{background-color:var(--color-signal-alert-light);color:var(--color-signal-alert)}.gv-activated .gv-empty-state{align-items:center;display:flex;flex-direction:column;gap:var(--size-lg)}@media screen and (max-width:360px){.gv-activated .gv-empty-state{padding:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-empty-state{padding:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-empty-state{padding:48px}}.gv-activated .gv-empty-state .gv-empty-state-content{text-align:center}.gv-activated .gv-empty-state .gv-empty-state-content>:not(:last-child){margin-bottom:8px}.gv-activated .gv-empty-state .gv-empty-state-content .gv-title{font-weight:var(--font-weight-heading);line-height:var(--line-height-heading-sm)}@media screen and (max-width:360px){.gv-activated .gv-empty-state .gv-empty-state-content .gv-title{font-size:calc(var(--font-size-heading-sm-min)*1px);letter-spacing:calc(var(--letterspacing-heading-sm-min)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-empty-state .gv-empty-state-content .gv-title{font-size:calc(calc(var(--font-size-heading-sm-min)*1px) + (var(--font-size-heading-sm-max) - var(--font-size-heading-sm-min))*((100vw - 360px)/1080));letter-spacing:calc(calc(var(--letterspacing-heading-sm-min)*1px) + (var(--letterspacing-heading-sm-max) - var(--letterspacing-heading-sm-min))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-empty-state .gv-empty-state-content .gv-title{font-size:calc(var(--font-size-heading-sm-max)*1px);letter-spacing:calc(var(--letterspacing-heading-sm-max)*1px)}}.gv-activated .gv-empty-state.gv-mode-condensed .gv-empty-state-content,.gv-activated .gv-mode-condensed .gv-empty-state .gv-empty-state-content{font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-empty-state.gv-mode-condensed .gv-empty-state-content .gv-title,.gv-activated .gv-filter-options .gv-button,.gv-activated .gv-mode-condensed .gv-empty-state .gv-empty-state-content .gv-title{font-weight:var(--font-weight-semibold);line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-empty-state.gv-mode-condensed .gv-empty-state-content .gv-title,.gv-activated .gv-mode-condensed .gv-empty-state .gv-empty-state-content .gv-title{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-empty-state.gv-mode-condensed .gv-empty-state-content .gv-title,.gv-activated .gv-mode-condensed .gv-empty-state .gv-empty-state-content .gv-title{font-size:calc(14px + 2*((100vw - 360px)/1080));letter-spacing:calc(.035px + .045*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-empty-state.gv-mode-condensed .gv-empty-state-content .gv-title,.gv-activated .gv-mode-condensed .gv-empty-state .gv-empty-state-content .gv-title{font-size:16px;letter-spacing:.08px}}.gv-activated .gv-filter-options{--form-element-height:30px}.gv-activated .gv-filter-options .gv-button{font-size:12px;letter-spacing:.048px}.gv-activated .gv-filter-options .gv-checkbox,.gv-activated .gv-filter-options .gv-radio{height:var(--size-md);width:var(--size-md)}.gv-activated .gv-filter-options .gv-toggle{--toggle-height:16px;--toggle-width:28px;--toggle-dot-indent:2px}.gv-activated .gv-filter-options .gv-options{border:0;margin:0;min-width:0;padding:0;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-filter-options .gv-option{align-items:center;cursor:pointer;display:flex;gap:var(--size-sm);padding:var(--size-sm)0;text-align:left;text-decoration:none;width:100%}.gv-activated .gv-filter-bar .gv-filter-button gv-icon,.gv-activated .gv-filter-options .gv-option .gv-checkbox,.gv-activated .gv-filter-options .gv-option .gv-radio{flex-shrink:0}.gv-activated .gv-filter-options .gv-option .gv-item-text{display:inline-flex;gap:var(--size-xs);min-width:0}.gv-activated .gv-autocomplete-panel .gv-listbox .gv-option .gv-text-icon span,.gv-activated .gv-autocomplete-panel .gv-listbox .gv-option .gv-with-underline span,.gv-activated .gv-filter-options .gv-option .gv-item-label,.gv-activated .gv-text-indicator>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-filter-options .gv-option .gv-item-count{color:var(--color-body-on-alternative);flex-shrink:0}.gv-activated .gv-filter-bar{--filter-button-background:var(--color-surface-bright);position:relative}.gv-activated .gv-filter-bar.gv-filters-transparent{--filter-button-background:transparent}.gv-activated .gv-filter-bar .gv-bar{display:flex;flex-direction:row;gap:var(--size-sm);overflow-x:auto;scroll-behavior:smooth;scroll-snap-type:x mandatory}.gv-activated .gv-filter-bar .gv-filter-button{align-items:center;background:var(--filter-button-background);border:1px solid var(--color-border-alt);border-radius:var(--chip-radius);display:flex;flex-shrink:0;gap:var(--size-sm);min-width:0;padding:var(--size-xs) var(--size-md);position:relative;scroll-snap-align:start}.gv-activated .gv-filter-bar .gv-filter-button.gv-all-filters{border:0;padding-left:var(--size-sm);padding-right:var(--size-sm)}.gv-activated .gv-filter-bar .gv-filter-button.gv-expanded gv-icon:last-child{transform:rotate(180deg)}.gv-activated .gv-filter-bar .gv-filter-button .gv-button-label{font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-filter-bar .gv-filter-button .gv-total-selected{align-items:center;background-color:var(--color-surface-highlight);border-radius:var(--border-radius);flex-shrink:0;height:var(--size-lg);justify-content:center;width:var(--size-lg);font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-filter-bar .gv-filter-button .gv-total-selected:not(.gv-hidden){display:flex}.gv-activated .gv-filter-bar .gv-bar-actions{align-items:stretch;display:flex;flex-shrink:0;gap:var(--size-sm)}.gv-activated .gv-filter-bar .gv-bar-actions .gv-action-reset{border-left:1px solid var(--color-border);padding-left:var(--size-md)}.gv-activated .gv-filter-panel{left:0}.gv-activated .gv-filter-panel .gv-filter-options{background-color:var(--color-surface-bright)}.gv-activated .gv-filter-panel .gv-filter-options .gv-panel-header{margin-bottom:var(--size-lg)}.gv-activated .gv-filter-panel .gv-filter-options .gv-panel-header .gv-btn-close{padding:var(--size-sm);position:absolute;right:var(--size-md);top:var(--size-md)}.gv-activated .gv-filter-panel .gv-filter-options .gv-button-group{padding-top:var(--size-md)}.gv-activated .gv-filter-panel .gv-filter-options .gv-filter-name{display:block;padding-bottom:var(--size-md);font-weight:var(--font-weight-semibold);line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-filter-panel .gv-filter-options .gv-filter-name{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-filter-panel .gv-filter-options .gv-filter-name{font-size:calc(14px + 2*((100vw - 360px)/1080));letter-spacing:calc(.035px + .045*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-filter-panel .gv-filter-options .gv-filter-name{font-size:16px;letter-spacing:.08px}}.gv-activated .gv-filters-drawer .gv-side-content{display:flex;flex-direction:column;height:100%}.gv-activated .gv-filters-drawer .gv-side-header{padding:var(--size-md) var(--size-sm) var(--size-sm)}.gv-activated .gv-filters-drawer .gv-filter-options{flex:1;overflow-y:auto;padding-left:var(--size-sm)}.gv-activated .gv-filters-drawer .gv-filter-options .gv-options-title{margin-bottom:var(--size-md);font-weight:var(--font-weight-semibold);line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-filters-drawer .gv-filter-options .gv-options-title{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-filters-drawer .gv-filter-options .gv-options-title{font-size:calc(14px + 2*((100vw - 360px)/1080));letter-spacing:calc(.035px + .045*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-filters-drawer .gv-filter-options .gv-options-title{font-size:16px;letter-spacing:.08px}}.gv-activated .gv-filters-drawer .gv-filter-options .gv-options{padding-top:var(--size-sm)}.gv-activated .gv-filters-drawer .gv-filter-options .gv-options .gv-filter-name{padding:var(--size-sm)0 var(--size-md)}.gv-activated .gv-filters-drawer .gv-filter-options .gv-options:not(:last-child){border-bottom:1px solid var(--color-border);padding-bottom:var(--size-md)}.gv-activated .gv-filters-drawer .gv-filter-options .gv-options:not(:first-child) .gv-filter-name{padding-top:var(--size-lg)}.gv-activated .gv-filters-drawer .gv-side-footer{padding:var(--size-md) var(--size-sm)}@media (max-width:599px){.gv-activated .gv-filter-panel{background-color:var(--color-overlay-dark);display:flex;flex-direction:column;height:100%;justify-content:flex-end;left:0!important;padding-top:var(--size-xl);position:fixed;top:0;width:100%;z-index:1100}.gv-activated .gv-filter-panel .gv-filter-options{display:flex;flex-direction:column;flex-shrink:1;min-height:0;padding:var(--size-lg);position:relative}.gv-activated .gv-filter-panel .gv-options-content{overflow-y:auto}.gv-activated .gv-filter-panel .gv-button-group{flex-shrink:0}.gv-activated .gv-filter-panel .gv-button-group .gv-clear{display:none}.gv-activated .gv-sidedrawer.gv-filters-drawer{padding-top:var(--size-xl)}.gv-activated .gv-sidedrawer.gv-filters-drawer.gv-sidedrawer-open{display:flex;flex-direction:column;justify-content:flex-end}.gv-activated .gv-sidedrawer.gv-filters-drawer .gv-side-content{flex-shrink:1;height:auto;min-height:0;padding:var(--size-sm) var(--size-md);position:relative;width:100%}.gv-activated .gv-sidedrawer.gv-filters-drawer .gv-side-content .gv-btn-close{top:var(--size-md)}.gv-activated .gv-sidedrawer.gv-filters-drawer .gv-side-footer{padding-top:0}}@media (min-width:600px){.gv-activated .gv-filter-panel{position:absolute;top:calc(100% + var(--size-xs));z-index:200}.gv-activated .gv-filter-panel .gv-filter-options{border:1px solid var(--color-border-alt);border-radius:var(--border-radius);padding:var(--size-md) var(--size-lg);width:300px}.gv-activated .gv-filter-bar .gv-filter-panel .gv-filter-name,.gv-activated .gv-filter-panel .gv-button-group .gv-cancel,.gv-activated .gv-filter-panel .gv-panel-header{display:none}}.gv-activated gv-flag,.gv-activated gv-icon{width:var(--size-icon-md);height:var(--size-icon-md);display:inline-block;vertical-align:text-bottom;font-size:0}.gv-activated .gv-footer{background-color:var(--color-surface-bright);color:var(--color-body-on-default);font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-footer .gv-footer-content{margin-left:auto;margin-right:auto;max-width:1536px}@media screen and (max-width:360px){.gv-activated .gv-footer .gv-footer-content{padding-left:24px;padding-right:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-footer .gv-footer-content{padding-left:calc(24px + 24*((100vw - 360px)/1080));padding-right:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-footer .gv-footer-content{padding-left:48px;padding-right:48px}}.gv-activated .gv-footer .gv-footer-support{background-color:var(--color-surface-highlight)}.gv-activated .gv-footer .gv-footer-support .gv-footer-content{display:flex;flex-direction:column;gap:16px;padding-bottom:24px;padding-top:16px}.gv-activated .gv-footer .gv-footer-support .gv-support-text{align-items:center;display:flex;gap:24px}.gv-activated .gv-footer .gv-footer-support .gv-button,.gv-activated .gv-footer .gv-footer-support gv-tile{flex-shrink:0}.gv-activated .gv-footer .gv-footer-bar{background-color:var(--color-surface-bright);border-top:1px solid var(--color-border-alt)}.gv-activated .gv-footer .gv-footer-bar .gv-footer-content{display:flex;flex-direction:column;gap:8px;padding-bottom:24px;padding-top:24px}.gv-activated .gv-footer .gv-footer-support:not(.gv-hidden)+.gv-footer-bar{border:0}.gv-activated .gv-footer ul.gv-footer-links{display:flex;flex-direction:column;gap:8px;list-style:none;padding:0}.gv-activated .gv-footer ul.gv-footer-links li,.gv-activated h1,.gv-activated h2,.gv-activated h3,.gv-activated h4,.gv-activated h5,.gv-activated h6,.gv-activated p{margin:0}.gv-activated .gv-footer ul.gv-footer-links a{color:var(--color-body-on-default);text-decoration:none;white-space:nowrap}.gv-activated .gv-footer .gv-footer-copyright{color:var(--color-body-on-alternative)}@media (min-width:600px){.gv-activated .gv-footer .gv-footer-support .gv-footer-content{align-items:center;flex-direction:row;gap:24px;justify-content:center;padding-bottom:16px}}@media (min-width:1024px){.gv-activated .gv-footer .gv-footer-bar .gv-footer-content{flex-direction:row;gap:24px;justify-content:space-between}.gv-activated .gv-footer ul.gv-footer-links{align-items:center;flex-direction:row;gap:16px}.gv-activated .gv-footer ul.gv-footer-links li:not(:last-child){border-right:1px solid var(--color-border-alt);padding-right:16px}}.gv-activated .gv-grid{display:grid}.gv-activated .gv-grid-container{display:grid;grid-template-columns:repeat(12,1fr)}@media screen and (max-width:360px){.gv-activated .gv-grid-container{gap:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-grid-container{gap:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-grid-container{gap:48px}}@media screen and (max-width:360px){.gv-activated .gv-grid-container{padding-left:24px;padding-right:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-grid-container{padding-left:calc(24px + 24*((100vw - 360px)/1080));padding-right:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-grid-container{padding-left:48px;padding-right:48px}}.gv-activated .gv-grid-container>*{grid-column:auto/span 12;max-width:100%}.gv-activated .gv-grid-container>*>.gv-grid-container{padding-left:0;padding-right:0}.gv-activated .gv-grid-dense{grid-auto-flow:dense}.gv-activated .gv-span-1{grid-column:auto/span 1}.gv-activated .gv-span-2{grid-column:auto/span 2}.gv-activated .gv-span-3{grid-column:auto/span 3}.gv-activated .gv-span-4{grid-column:auto/span 4}.gv-activated .gv-span-5{grid-column:auto/span 5}.gv-activated .gv-span-6{grid-column:auto/span 6}.gv-activated .gv-span-7{grid-column:auto/span 7}.gv-activated .gv-span-8{grid-column:auto/span 8}.gv-activated .gv-span-9{grid-column:auto/span 9}.gv-activated .gv-span-10{grid-column:auto/span 10}.gv-activated .gv-span-11{grid-column:auto/span 11}.gv-activated .gv-span-12{grid-column:auto/span 12}.gv-activated .gv-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.gv-activated .gv-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.gv-activated .gv-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.gv-activated .gv-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.gv-activated .gv-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.gv-activated .gv-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.gv-activated .gv-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.gv-activated .gv-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.gv-activated .gv-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.gv-activated .gv-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.gv-activated .gv-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.gv-activated .gv-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.gv-activated .gv-start-1{grid-column-start:1}.gv-activated .gv-start-2{grid-column-start:2}.gv-activated .gv-start-3{grid-column-start:3}.gv-activated .gv-start-4{grid-column-start:4}.gv-activated .gv-start-5{grid-column-start:5}.gv-activated .gv-start-6{grid-column-start:6}.gv-activated .gv-start-7{grid-column-start:7}.gv-activated .gv-start-8{grid-column-start:8}.gv-activated .gv-start-9{grid-column-start:9}.gv-activated .gv-start-10{grid-column-start:10}.gv-activated .gv-start-11{grid-column-start:11}.gv-activated .gv-start-12{grid-column-start:12}@media (min-width:600px){.gv-activated .gv-tab-span-1{grid-column:auto/span 1}.gv-activated .gv-tab-span-2{grid-column:auto/span 2}.gv-activated .gv-tab-span-3{grid-column:auto/span 3}.gv-activated .gv-tab-span-4{grid-column:auto/span 4}.gv-activated .gv-tab-span-5{grid-column:auto/span 5}.gv-activated .gv-tab-span-6{grid-column:auto/span 6}.gv-activated .gv-tab-span-7{grid-column:auto/span 7}.gv-activated .gv-tab-span-8{grid-column:auto/span 8}.gv-activated .gv-tab-span-9{grid-column:auto/span 9}.gv-activated .gv-tab-span-10{grid-column:auto/span 10}.gv-activated .gv-tab-span-11{grid-column:auto/span 11}.gv-activated .gv-tab-span-12{grid-column:auto/span 12}.gv-activated .gv-tab-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.gv-activated .gv-tab-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.gv-activated .gv-tab-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.gv-activated .gv-tab-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.gv-activated .gv-tab-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.gv-activated .gv-tab-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.gv-activated .gv-tab-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.gv-activated .gv-tab-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.gv-activated .gv-tab-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.gv-activated .gv-tab-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.gv-activated .gv-tab-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.gv-activated .gv-tab-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.gv-activated .gv-tab-start-1{grid-column-start:1}.gv-activated .gv-tab-start-2{grid-column-start:2}.gv-activated .gv-tab-start-3{grid-column-start:3}.gv-activated .gv-tab-start-4{grid-column-start:4}.gv-activated .gv-tab-start-5{grid-column-start:5}.gv-activated .gv-tab-start-6{grid-column-start:6}.gv-activated .gv-tab-start-7{grid-column-start:7}.gv-activated .gv-tab-start-8{grid-column-start:8}.gv-activated .gv-tab-start-9{grid-column-start:9}.gv-activated .gv-tab-start-10{grid-column-start:10}.gv-activated .gv-tab-start-11{grid-column-start:11}.gv-activated .gv-tab-start-12{grid-column-start:12}}@media (min-width:768px){.gv-activated .gv-tab-lg-span-1{grid-column:auto/span 1}.gv-activated .gv-tab-lg-span-2{grid-column:auto/span 2}.gv-activated .gv-tab-lg-span-3{grid-column:auto/span 3}.gv-activated .gv-tab-lg-span-4{grid-column:auto/span 4}.gv-activated .gv-tab-lg-span-5{grid-column:auto/span 5}.gv-activated .gv-tab-lg-span-6{grid-column:auto/span 6}.gv-activated .gv-tab-lg-span-7{grid-column:auto/span 7}.gv-activated .gv-tab-lg-span-8{grid-column:auto/span 8}.gv-activated .gv-tab-lg-span-9{grid-column:auto/span 9}.gv-activated .gv-tab-lg-span-10{grid-column:auto/span 10}.gv-activated .gv-tab-lg-span-11{grid-column:auto/span 11}.gv-activated .gv-tab-lg-span-12{grid-column:auto/span 12}.gv-activated .gv-tab-lg-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.gv-activated .gv-tab-lg-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.gv-activated .gv-tab-lg-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.gv-activated .gv-tab-lg-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.gv-activated .gv-tab-lg-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.gv-activated .gv-tab-lg-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.gv-activated .gv-tab-lg-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.gv-activated .gv-tab-lg-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.gv-activated .gv-tab-lg-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.gv-activated .gv-tab-lg-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.gv-activated .gv-tab-lg-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.gv-activated .gv-tab-lg-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.gv-activated .gv-tab-lg-start-1{grid-column-start:1}.gv-activated .gv-tab-lg-start-2{grid-column-start:2}.gv-activated .gv-tab-lg-start-3{grid-column-start:3}.gv-activated .gv-tab-lg-start-4{grid-column-start:4}.gv-activated .gv-tab-lg-start-5{grid-column-start:5}.gv-activated .gv-tab-lg-start-6{grid-column-start:6}.gv-activated .gv-tab-lg-start-7{grid-column-start:7}.gv-activated .gv-tab-lg-start-8{grid-column-start:8}.gv-activated .gv-tab-lg-start-9{grid-column-start:9}.gv-activated .gv-tab-lg-start-10{grid-column-start:10}.gv-activated .gv-tab-lg-start-11{grid-column-start:11}.gv-activated .gv-tab-lg-start-12{grid-column-start:12}}@media (min-width:1024px){.gv-activated .gv-desk-span-1{grid-column:auto/span 1}.gv-activated .gv-desk-span-2{grid-column:auto/span 2}.gv-activated .gv-desk-span-3{grid-column:auto/span 3}.gv-activated .gv-desk-span-4{grid-column:auto/span 4}.gv-activated .gv-desk-span-5{grid-column:auto/span 5}.gv-activated .gv-desk-span-6{grid-column:auto/span 6}.gv-activated .gv-desk-span-7{grid-column:auto/span 7}.gv-activated .gv-desk-span-8{grid-column:auto/span 8}.gv-activated .gv-desk-span-9{grid-column:auto/span 9}.gv-activated .gv-desk-span-10{grid-column:auto/span 10}.gv-activated .gv-desk-span-11{grid-column:auto/span 11}.gv-activated .gv-desk-span-12{grid-column:auto/span 12}.gv-activated .gv-desk-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.gv-activated .gv-desk-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.gv-activated .gv-desk-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.gv-activated .gv-desk-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.gv-activated .gv-desk-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.gv-activated .gv-desk-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.gv-activated .gv-desk-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.gv-activated .gv-desk-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.gv-activated .gv-desk-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.gv-activated .gv-desk-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.gv-activated .gv-desk-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.gv-activated .gv-desk-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.gv-activated .gv-desk-start-1{grid-column-start:1}.gv-activated .gv-desk-start-2{grid-column-start:2}.gv-activated .gv-desk-start-3{grid-column-start:3}.gv-activated .gv-desk-start-4{grid-column-start:4}.gv-activated .gv-desk-start-5{grid-column-start:5}.gv-activated .gv-desk-start-6{grid-column-start:6}.gv-activated .gv-desk-start-7{grid-column-start:7}.gv-activated .gv-desk-start-8{grid-column-start:8}.gv-activated .gv-desk-start-9{grid-column-start:9}.gv-activated .gv-desk-start-10{grid-column-start:10}.gv-activated .gv-desk-start-11{grid-column-start:11}.gv-activated .gv-desk-start-12{grid-column-start:12}}@media (min-width:1280px){.gv-activated .gv-desk-lg-span-1{grid-column:auto/span 1}.gv-activated .gv-desk-lg-span-2{grid-column:auto/span 2}.gv-activated .gv-desk-lg-span-3{grid-column:auto/span 3}.gv-activated .gv-desk-lg-span-4{grid-column:auto/span 4}.gv-activated .gv-desk-lg-span-5{grid-column:auto/span 5}.gv-activated .gv-desk-lg-span-6{grid-column:auto/span 6}.gv-activated .gv-desk-lg-span-7{grid-column:auto/span 7}.gv-activated .gv-desk-lg-span-8{grid-column:auto/span 8}.gv-activated .gv-desk-lg-span-9{grid-column:auto/span 9}.gv-activated .gv-desk-lg-span-10{grid-column:auto/span 10}.gv-activated .gv-desk-lg-span-11{grid-column:auto/span 11}.gv-activated .gv-desk-lg-span-12{grid-column:auto/span 12}.gv-activated .gv-desk-lg-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.gv-activated .gv-desk-lg-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.gv-activated .gv-desk-lg-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.gv-activated .gv-desk-lg-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.gv-activated .gv-desk-lg-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.gv-activated .gv-desk-lg-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.gv-activated .gv-desk-lg-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.gv-activated .gv-desk-lg-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.gv-activated .gv-desk-lg-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.gv-activated .gv-desk-lg-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.gv-activated .gv-desk-lg-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.gv-activated .gv-desk-lg-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.gv-activated .gv-desk-lg-start-1{grid-column-start:1}.gv-activated .gv-desk-lg-start-2{grid-column-start:2}.gv-activated .gv-desk-lg-start-3{grid-column-start:3}.gv-activated .gv-desk-lg-start-4{grid-column-start:4}.gv-activated .gv-desk-lg-start-5{grid-column-start:5}.gv-activated .gv-desk-lg-start-6{grid-column-start:6}.gv-activated .gv-desk-lg-start-7{grid-column-start:7}.gv-activated .gv-desk-lg-start-8{grid-column-start:8}.gv-activated .gv-desk-lg-start-9{grid-column-start:9}.gv-activated .gv-desk-lg-start-10{grid-column-start:10}.gv-activated .gv-desk-lg-start-11{grid-column-start:11}.gv-activated .gv-desk-lg-start-12{grid-column-start:12}}@media screen and (max-width:360px){.gv-activated .gv-gap-medium{gap:16px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-gap-medium{gap:calc(16px + 8*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-gap-medium{gap:24px}}@media screen and (max-width:360px){.gv-activated .gv-gap-small{gap:8px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-gap-small{gap:calc(8px + 8*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-gap-small{gap:16px}}.gv-activated .gv-no-gap{gap:0}.gv-activated .gv-align-center{align-items:center}@media (max-width:599px){.gv-activated .gv-grid-container .gv-grid-item.gv-mobile-order-first{order:-1}.gv-activated .gv-grid-container .gv-grid-item.gv-mobile-order-last{order:99}}@media (min-width:600px){.gv-activated .gv-tabletspan-1{grid-column:auto/span 1}.gv-activated .gv-tabletspan-2{grid-column:auto/span 2}.gv-activated .gv-tabletspan-3{grid-column:auto/span 3}.gv-activated .gv-tabletspan-4{grid-column:auto/span 4}.gv-activated .gv-tabletspan-5{grid-column:auto/span 5}.gv-activated .gv-tabletspan-6{grid-column:auto/span 6}.gv-activated .gv-tabletspan-7{grid-column:auto/span 7}.gv-activated .gv-tabletspan-8{grid-column:auto/span 8}.gv-activated .gv-tabletspan-9{grid-column:auto/span 9}.gv-activated .gv-tabletspan-10{grid-column:auto/span 10}.gv-activated .gv-tabletspan-11{grid-column:auto/span 11}.gv-activated .gv-tabletspan-12{grid-column:auto/span 12}.gv-activated .gv-tabletstart-1{grid-column-start:1}.gv-activated .gv-tabletstart-2{grid-column-start:2}.gv-activated .gv-tabletstart-3{grid-column-start:3}.gv-activated .gv-tabletstart-4{grid-column-start:4}.gv-activated .gv-tabletstart-5{grid-column-start:5}.gv-activated .gv-tabletstart-6{grid-column-start:6}.gv-activated .gv-tabletstart-7{grid-column-start:7}.gv-activated .gv-tabletstart-8{grid-column-start:8}.gv-activated .gv-tabletstart-9{grid-column-start:9}.gv-activated .gv-tabletstart-10{grid-column-start:10}.gv-activated .gv-tabletstart-11{grid-column-start:11}.gv-activated .gv-tabletstart-12{grid-column-start:12}.gv-activated .gv-grid-container .gv-grid-item.gv-tablet-order-first{order:-1}.gv-activated .gv-grid-container .gv-grid-item.gv-tablet-order-last{order:99}}@media (min-width:768px){.gv-activated .gv-tablet-largespan-1{grid-column:auto/span 1}.gv-activated .gv-tablet-largespan-2{grid-column:auto/span 2}.gv-activated .gv-tablet-largespan-3{grid-column:auto/span 3}.gv-activated .gv-tablet-largespan-4{grid-column:auto/span 4}.gv-activated .gv-tablet-largespan-5{grid-column:auto/span 5}.gv-activated .gv-tablet-largespan-6{grid-column:auto/span 6}.gv-activated .gv-tablet-largespan-7{grid-column:auto/span 7}.gv-activated .gv-tablet-largespan-8{grid-column:auto/span 8}.gv-activated .gv-tablet-largespan-9{grid-column:auto/span 9}.gv-activated .gv-tablet-largespan-10{grid-column:auto/span 10}.gv-activated .gv-tablet-largespan-11{grid-column:auto/span 11}.gv-activated .gv-tablet-largespan-12{grid-column:auto/span 12}.gv-activated .gv-tablet-largestart-1{grid-column-start:1}.gv-activated .gv-tablet-largestart-2{grid-column-start:2}.gv-activated .gv-tablet-largestart-3{grid-column-start:3}.gv-activated .gv-tablet-largestart-4{grid-column-start:4}.gv-activated .gv-tablet-largestart-5{grid-column-start:5}.gv-activated .gv-tablet-largestart-6{grid-column-start:6}.gv-activated .gv-tablet-largestart-7{grid-column-start:7}.gv-activated .gv-tablet-largestart-8{grid-column-start:8}.gv-activated .gv-tablet-largestart-9{grid-column-start:9}.gv-activated .gv-tablet-largestart-10{grid-column-start:10}.gv-activated .gv-tablet-largestart-11{grid-column-start:11}.gv-activated .gv-tablet-largestart-12{grid-column-start:12}.gv-activated .gv-grid-container .gv-grid-item.gv-tablet-large-order-first{order:-1}.gv-activated .gv-grid-container .gv-grid-item.gv-tablet-large-order-last{order:99}}@media (min-width:1024px){.gv-activated .gv-desktopspan-1{grid-column:auto/span 1}.gv-activated .gv-desktopspan-2{grid-column:auto/span 2}.gv-activated .gv-desktopspan-3{grid-column:auto/span 3}.gv-activated .gv-desktopspan-4{grid-column:auto/span 4}.gv-activated .gv-desktopspan-5{grid-column:auto/span 5}.gv-activated .gv-desktopspan-6{grid-column:auto/span 6}.gv-activated .gv-desktopspan-7{grid-column:auto/span 7}.gv-activated .gv-desktopspan-8{grid-column:auto/span 8}.gv-activated .gv-desktopspan-9{grid-column:auto/span 9}.gv-activated .gv-desktopspan-10{grid-column:auto/span 10}.gv-activated .gv-desktopspan-11{grid-column:auto/span 11}.gv-activated .gv-desktopspan-12{grid-column:auto/span 12}.gv-activated .gv-desktopstart-1{grid-column-start:1}.gv-activated .gv-desktopstart-2{grid-column-start:2}.gv-activated .gv-desktopstart-3{grid-column-start:3}.gv-activated .gv-desktopstart-4{grid-column-start:4}.gv-activated .gv-desktopstart-5{grid-column-start:5}.gv-activated .gv-desktopstart-6{grid-column-start:6}.gv-activated .gv-desktopstart-7{grid-column-start:7}.gv-activated .gv-desktopstart-8{grid-column-start:8}.gv-activated .gv-desktopstart-9{grid-column-start:9}.gv-activated .gv-desktopstart-10{grid-column-start:10}.gv-activated .gv-desktopstart-11{grid-column-start:11}.gv-activated .gv-desktopstart-12{grid-column-start:12}.gv-activated .gv-grid-container .gv-grid-item.gv-desktop-order-first{order:-1}.gv-activated .gv-grid-container .gv-grid-item.gv-desktop-order-last{order:99}}@media (min-width:1280px){.gv-activated .gv-desktop-largespan-1{grid-column:auto/span 1}.gv-activated .gv-desktop-largespan-2{grid-column:auto/span 2}.gv-activated .gv-desktop-largespan-3{grid-column:auto/span 3}.gv-activated .gv-desktop-largespan-4{grid-column:auto/span 4}.gv-activated .gv-desktop-largespan-5{grid-column:auto/span 5}.gv-activated .gv-desktop-largespan-6{grid-column:auto/span 6}.gv-activated .gv-desktop-largespan-7{grid-column:auto/span 7}.gv-activated .gv-desktop-largespan-8{grid-column:auto/span 8}.gv-activated .gv-desktop-largespan-9{grid-column:auto/span 9}.gv-activated .gv-desktop-largespan-10{grid-column:auto/span 10}.gv-activated .gv-desktop-largespan-11{grid-column:auto/span 11}.gv-activated .gv-desktop-largespan-12{grid-column:auto/span 12}.gv-activated .gv-desktop-largestart-1{grid-column-start:1}.gv-activated .gv-desktop-largestart-2{grid-column-start:2}.gv-activated .gv-desktop-largestart-3{grid-column-start:3}.gv-activated .gv-desktop-largestart-4{grid-column-start:4}.gv-activated .gv-desktop-largestart-5{grid-column-start:5}.gv-activated .gv-desktop-largestart-6{grid-column-start:6}.gv-activated .gv-desktop-largestart-7{grid-column-start:7}.gv-activated .gv-desktop-largestart-8{grid-column-start:8}.gv-activated .gv-desktop-largestart-9{grid-column-start:9}.gv-activated .gv-desktop-largestart-10{grid-column-start:10}.gv-activated .gv-desktop-largestart-11{grid-column-start:11}.gv-activated .gv-desktop-largestart-12{grid-column-start:12}.gv-activated .gv-grid-container .gv-grid-item.gv-desktop-large-order-first{order:-1}.gv-activated .gv-grid-container .gv-grid-item.gv-desktop-large-order-last{order:99}}.gv-activated .gv-page-header .gv-header-content{display:flex;gap:var(--size-lg)}.gv-activated .gv-page-header .gv-header-content .gv-content{flex:1;min-width:0}.gv-activated .gv-page-header .gv-header-content .gv-button-group{flex-shrink:0}.gv-activated .gv-page-header .gv-description{max-width:var(--text-max-width)}.gv-activated .gv-page-header .gv-description>:not(:last-child){margin-bottom:var(--size-md)}.gv-activated .gv-page-header.gv-header .gv-breadcrumbs{margin-bottom:var(--size-sm)}.gv-activated .gv-page-header.gv-header .gv-header-content .gv-content{padding-top:2px}.gv-activated .gv-page-header.gv-header .gv-header-content .gv-content>:not(:last-child){margin-bottom:var(--size-xs)}.gv-activated .gv-page-header.gv-header .gv-header-content .gv-title{font-weight:var(--font-weight-heading);line-height:var(--line-height-heading-lg)}@media screen and (max-width:360px){.gv-activated .gv-page-header.gv-header .gv-header-content .gv-title{font-size:calc(var(--font-size-heading-lg-min)*1px);letter-spacing:calc(var(--letterspacing-heading-lg-min)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-page-header.gv-header .gv-header-content .gv-title{font-size:calc(calc(var(--font-size-heading-lg-min)*1px) + (var(--font-size-heading-lg-max) - var(--font-size-heading-lg-min))*((100vw - 360px)/1080));letter-spacing:calc(calc(var(--letterspacing-heading-lg-min)*1px) + (var(--letterspacing-heading-lg-max) - var(--letterspacing-heading-lg-min))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-page-header.gv-header .gv-header-content .gv-title{font-size:calc(var(--font-size-heading-lg-max)*1px);letter-spacing:calc(var(--letterspacing-heading-lg-max)*1px)}}.gv-activated .gv-page-header.gv-header .gv-header-content .gv-subtitle{color:var(--color-body-on-alternative);font-weight:var(--font-weight-heading);line-height:var(--line-height-heading-sm)}@media screen and (max-width:360px){.gv-activated .gv-page-header.gv-header .gv-header-content .gv-subtitle{font-size:calc(var(--font-size-heading-sm-min)*1px);letter-spacing:calc(var(--letterspacing-heading-sm-min)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-page-header.gv-header .gv-header-content .gv-subtitle{font-size:calc(calc(var(--font-size-heading-sm-min)*1px) + (var(--font-size-heading-sm-max) - var(--font-size-heading-sm-min))*((100vw - 360px)/1080));letter-spacing:calc(calc(var(--letterspacing-heading-sm-min)*1px) + (var(--letterspacing-heading-sm-max) - var(--letterspacing-heading-sm-min))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-page-header.gv-header .gv-header-content .gv-subtitle{font-size:calc(var(--font-size-heading-sm-max)*1px);letter-spacing:calc(var(--letterspacing-heading-sm-max)*1px)}}.gv-activated .gv-page-header.gv-header .gv-description,.gv-activated .gv-page-header.gv-header .gv-header-status{margin-top:var(--size-sm)}.gv-activated .gv-page-header.gv-header .gv-header-actions{margin-bottom:var(--size-sm);margin-top:var(--size-xs)}.gv-activated .gv-page-header .gv-header-actions{display:flex;flex-direction:column;gap:var(--size-xs)}.gv-activated .gv-page-header .gv-header-status{display:flex;flex-wrap:wrap;gap:var(--size-xs) var(--size-md)}.gv-activated .gv-page-header .gv-header-status .gv-status{color:var(--color-body-on-alternative);display:flex;flex:0 0 auto;gap:var(--size-xs)}.gv-activated .gv-page-header .gv-header-status .gv-status .gv-text{display:inline-flex;font-weight:var(--font-weight-semibold);font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-page-header .gv-header-status .gv-status .gv-title,.gv-activated .gv-page-header .gv-header-status .gv-status gv-icon{flex-shrink:0}.gv-activated .gv-page-header .gv-header-status .gv-status .gv-separator{padding-right:var(--size-xs)}.gv-activated .gv-page-header.gv-subheader .gv-header-content .gv-content{align-items:center;display:flex;gap:var(--size-sm)}.gv-activated .gv-page-header.gv-subheader .gv-header-content .gv-title{min-width:0;font-weight:var(--font-weight-semibold);line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-page-header.gv-subheader .gv-header-content .gv-title{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-page-header.gv-subheader .gv-header-content .gv-title{font-size:calc(14px + 4*((100vw - 360px)/1080));letter-spacing:calc(.035px + -.035*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-page-header.gv-subheader .gv-header-content .gv-title{font-size:18px;letter-spacing:0}}.gv-activated .gv-page-header.gv-subheader .gv-description{margin-top:var(--size-xs)}.gv-activated .gv-page-header.gv-subheader .gv-button-group{--form-element-height:30px}.gv-activated .gv-page-header.gv-subheader .gv-button-group .gv-button{font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}@media (max-width:599px){.gv-activated .gv-page-header .gv-header-status{flex-direction:column}.gv-activated .gv-page-header .gv-header-content{flex-direction:column;gap:0}.gv-activated .gv-page-header.gv-header .gv-button-group{margin-top:var(--size-md);--form-element-height:30px}.gv-activated .gv-page-header.gv-header .gv-button-group .gv-button{font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-page-header.gv-subheader .gv-header-content .gv-content{justify-content:space-between}.gv-activated .gv-page-header.gv-subheader .gv-button-group{margin-top:var(--size-xs)}}@media (min-width:600px){.gv-activated .gv-page-header .gv-header-content .gv-button-group{flex-direction:row-reverse}}.gv-activated .gv-help-centre>:not(:last-child){margin-bottom:var(--size-md)}.gv-activated .gv-help-centre .gv-header>:not(:last-child){margin-bottom:var(--size-xs)}.gv-activated .gv-help-centre .gv-header .gv-title{font-weight:var(--font-weight-semibold);line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-help-centre .gv-header .gv-title{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-help-centre .gv-header .gv-title{font-size:calc(14px + 4*((100vw - 360px)/1080));letter-spacing:calc(.035px + -.035*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-help-centre .gv-header .gv-title{font-size:18px;letter-spacing:0}}.gv-activated .gv-help-centre .gv-header .gv-description{font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-help-centre .gv-content{display:grid;gap:var(--size-md);grid-template-columns:1fr}.gv-activated .gv-help-centre .gv-content-container{padding:var(--size-lg)}.gv-activated .gv-help-centre .gv-content-container>:not(:last-child),.gv-activated .gv-help-centre .gv-help-list>:not(:last-child){margin-bottom:var(--size-md)}.gv-activated .gv-help-centre .gv-help-list{list-style:none}.gv-activated .gv-help-centre .gv-help-link{display:block;min-height:var(--size-icon-md);padding-right:calc(var(--size-icon-md) + var(--size-sm));position:relative;text-decoration:none;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-help-centre .gv-help-link:after{background-color:var(--color-body-on-default);content:"";display:block;-webkit-mask:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='currentColor'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M5.65%2020.5q-.925%200-1.537-.613-.613-.612-.613-1.537V5.65q0-.925.613-1.538Q4.725%203.5%205.65%203.5h5.825v1.35H5.65q-.3%200-.55.25-.25.25-.25.55v12.7q0%20.3.25.55.25.25.55.25h12.7q.3%200%20.55-.25.25-.25.25-.55v-5.825h1.35v5.825q0%20.925-.612%201.537-.613.613-1.538.613Zm4.025-5.225-.95-.95L18.2%204.85h-3.725V3.5H20.5v6.025h-1.35V5.8Z'/%3e%3c/svg%3e")no-repeat 50% 50%;mask:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='currentColor'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M5.65%2020.5q-.925%200-1.537-.613-.613-.612-.613-1.537V5.65q0-.925.613-1.538Q4.725%203.5%205.65%203.5h5.825v1.35H5.65q-.3%200-.55.25-.25.25-.25.55v12.7q0%20.3.25.55.25.25.55.25h12.7q.3%200%20.55-.25.25-.25.25-.55v-5.825h1.35v5.825q0%20.925-.612%201.537-.613.613-1.538.613Zm4.025-5.225-.95-.95L18.2%204.85h-3.725V3.5H20.5v6.025h-1.35V5.8Z'/%3e%3c/svg%3e")no-repeat 50% 50%;-webkit-mask-size:contain;mask-size:contain;height:var(--size-icon-md);right:0;position:absolute;top:0;width:var(--size-icon-md)}.gv-activated .gv-help-centre .gv-help-link .gv-link-label{display:block;padding-top:1px}@media (min-width:1280px){.gv-activated .gv-help-centre .gv-content{grid-template-columns:repeat(2,1fr)}}.gv-activated gv-icon svg{width:100%;height:100%;fill:currentcolor}.gv-activated gv-illustration{align-items:center;display:flex}.gv-activated gv-illustration svg,.gv-activated gv-tile svg{color:var(--color-illustration-line);height:100%;width:100%}.gv-activated gv-illustration svg .gv-stroke-alert,.gv-activated gv-tile svg .gv-stroke-alert{stroke:var(--color-signal-alert)}.gv-activated gv-illustration svg .gv-fill-bg,.gv-activated gv-tile svg .gv-fill-bg{fill:var(--color-illustration-background)}.gv-activated gv-illustration svg .gv-fill-gray,.gv-activated gv-tile svg .gv-fill-gray{fill:var(--color-illustration-gray)}.gv-activated gv-illustration svg .gv-fill-line,.gv-activated gv-tile svg .gv-fill-line{fill:var(--color-illustration-line)}.gv-activated gv-illustration svg .gv-fill-100,.gv-activated gv-tile svg .gv-fill-100{fill:var(--color-illustration-100)}.gv-activated gv-illustration svg .gv-fill-200,.gv-activated gv-tile svg .gv-fill-200{fill:var(--color-illustration-200)}.gv-activated gv-illustration svg .gv-fill-300,.gv-activated gv-tile svg .gv-fill-300{fill:var(--color-illustration-300)}.gv-activated gv-illustration svg .gv-fill-alert-light,.gv-activated gv-tile svg .gv-fill-alert-light{fill:var(--color-signal-alert-light)}.gv-activated .gv-indicator{--indicator-color-background:var(--color-signal-info);background-color:var(--indicator-color-background);border-radius:50%;display:inline-block;flex-shrink:0;height:8px;width:8px}.gv-activated .gv-indicator.gv-state-attention{--indicator-color-background:var(--color-signal-warning)}.gv-activated .gv-indicator.gv-state-blank{--indicator-color-background:var(--color-surface-bright)}.gv-activated .gv-indicator.gv-state-busy{--indicator-color-background:var(--color-signal-info)}.gv-activated .gv-indicator.gv-state-critical{--indicator-color-background:var(--color-signal-alert)}.gv-activated .gv-indicator.gv-state-informative{--indicator-color-background:var(--color-gray-400)}.gv-activated .gv-indicator.gv-state-positive{--indicator-color-background:var(--color-signal-success)}.gv-activated .gv-text-indicator{align-items:center;display:inline-flex;gap:8px;max-width:100%}.gv-activated .gv-icon-indicator{position:relative}.gv-activated .gv-icon-indicator:before{background-color:var(--color-primary);border:1px solid var(--color-body-on-default);border-radius:50%;content:"";display:block;position:absolute;right:0;top:2px;height:8px;width:8px}.gv-activated gv-indicator{display:inline-block;font-size:0}.gv-activated gv-indicator svg,.gv-activated gv-loader svg,.gv-activated gv-logo svg{height:100%;width:100%}.gv-activated .gv-sort{color:var(--color-body-on-alternative);display:flex;flex:0 0 9px;flex-direction:column;gap:4px}.gv-activated .gv-sort gv-indicator{height:6px;width:9px}.gv-activated .gv-sort.gv-asc gv-indicator:first-child{color:var(--color-body-on-default)}.gv-activated .gv-sort.gv-desc gv-indicator:last-child{color:var(--color-body-on-default)}.gv-activated .gv-initials{align-items:center;background-color:var(--color-surface-highlight);border-radius:var(--size-xl);color:var(--color-body-on-default);display:flex;height:var(--size-xl);justify-content:center;text-transform:uppercase;width:var(--size-xl);font-weight:var(--font-weight-semibold);line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-initials{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-initials{font-size:calc(14px + 2*((100vw - 360px)/1080));letter-spacing:calc(.035px + .045*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-initials{font-size:16px;letter-spacing:.08px}}.gv-activated .gv-initials>span:before{margin-bottom:calc(-.375em + 0px)}.gv-activated .gv-initials>span:after{margin-top:calc(-.3125em + 0px)}.gv-activated .gv-initials>span:after,.gv-activated .gv-initials>span:before{content:"";display:block;height:0;width:0}.gv-activated .gv-initials.gv-mode-condensed,.gv-activated .gv-mode-condensed .gv-initials{height:var(--size-lg);width:var(--size-lg);font-size:10px;font-weight:var(--font-weight-semibold);letter-spacing:.04px;line-height:var(--line-height-body)}.gv-activated .gv-autocomplete .gv-input:not(.gv-input-search) .gv-expanded gv-icon{transform:rotate(180deg)}.gv-activated .gv-autocomplete .gv-input [aria-expanded=true]+.gv-clear{visibility:visible}.gv-activated .gv-autocomplete-panel{background:var(--color-surface-bright);border:1px solid var(--color-border);border-radius:var(--border-radius);padding:var(--size-sm);position:absolute;inset:0 auto auto 0;width:100%;z-index:200}.gv-activated .gv-autocomplete-panel .gv-state-info{padding:var(--size-sm);width:100%}.gv-activated .gv-autocomplete-panel .gv-state-info>:not(:last-child){margin-bottom:8px}.gv-activated .gv-autocomplete-panel .gv-listbox{max-height:40vh;overflow:auto;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-autocomplete-panel .gv-listbox>:not(:last-child){margin-bottom:4px}.gv-activated .gv-autocomplete-panel .gv-listbox .gv-option{border-radius:var(--border-radius);cursor:pointer;min-height:40px;padding:var(--size-sm);text-align:left;text-decoration:none;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-autocomplete-panel .gv-listbox .gv-option:hover{background-color:var(--color-state-hover)}.gv-activated .gv-autocomplete-panel .gv-listbox .gv-option:focus,.gv-activated .gv-autocomplete-panel .gv-listbox .gv-option[aria-selected=true]{background-color:var(--color-state-active)}.gv-activated .gv-autocomplete-panel .gv-listbox .gv-option .gv-highlight,.gv-activated .gv-list-table th{font-weight:var(--font-weight-semibold)}.gv-activated .gv-autocomplete-panel .gv-listbox .gv-option .gv-text-icon{align-items:center;display:flex}.gv-activated .gv-autocomplete-panel .gv-listbox .gv-option .gv-with-underline{display:flex;flex-direction:column}.gv-activated .gv-autocomplete-panel .gv-listbox .gv-option .gv-with-underline .gv-underline{color:var(--color-body-on-alternative);font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-char-counter-input{position:relative}.gv-activated .gv-char-counter-input .gv-highlighted{position:absolute;top:0;left:0;width:100%;height:100%;color:transparent;z-index:0;pointer-events:none}.gv-activated .gv-char-counter-input .gv-highlighted .gv-exceed{background-color:var(--color-signal-alert-light);color:transparent}.gv-activated .gv-char-counter-input .gv-highlighted:not(.gv-input-textarea){white-space:nowrap}.gv-activated .gv-char-counter-input .gv-highlighted.gv-input-textarea{white-space:pre-wrap}.gv-activated .gv-char-counter-input input,.gv-activated .gv-char-counter-input textarea{position:relative;z-index:1;background:0 0}.gv-activated .gv-char-counter-info{display:flex;gap:var(--size-xs);justify-content:flex-end}.gv-activated .gv-char-counter-info .gv-input-message{flex-grow:1}.gv-activated .gv-char-counter-info .gv-char-counter{color:var(--color-body-on-alternative);white-space:nowrap;font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-error .gv-char-counter{color:var(--color-signal-alert)}.gv-activated .gv-checkbox{--checkbox-color-fill:var(--color-surface-form);--checkbox-color-border:var(--color-border-form);--checkbox-color-fill-checked:var(--color-state-form-active);--checkbox-color-border-checked:transparent;--checkbox-color-icon-checked:var(--color-fg-form-on);all:unset;box-sizing:border-box;display:revert;cursor:pointer;height:var(--size-lg);position:relative;width:var(--size-lg)}.gv-activated .gv-checkbox:disabled,.gv-activated .gv-input.gv-input-number button.gv-disabled,.gv-activated .gv-input.gv-input-number button:disabled{cursor:default;opacity:var(--opacity-disabled-elements);pointer-events:none}.gv-activated .gv-checkbox:before{background-color:var(--checkbox-color-fill);border:var(--size-border) solid var(--checkbox-color-border);border-radius:var(--border-radius);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.gv-activated .gv-checkbox:checked:before{align-items:center;background-color:var(--checkbox-color-fill-checked);border-color:var(--checkbox-color-border-checked)}.gv-activated .gv-checkbox:checked:after{background-color:var(--checkbox-color-icon-checked);content:"";-webkit-mask:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M6%2011.532%2010.875%2016%2018%208'%20stroke='currentColor'%20stroke-width='1.5'/%3e%3c/svg%3e")no-repeat 50% 50%;mask:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M6%2011.532%2010.875%2016%2018%208'%20stroke='currentColor'%20stroke-width='1.5'/%3e%3c/svg%3e")no-repeat 50% 50%;-webkit-mask-size:contain;mask-size:contain;height:100%;left:0;position:absolute;top:0;width:100%}.gv-activated .gv-checkbox.gv-checkbox-mixed:checked:after{-webkit-mask:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill='currentColor'%20d='M6%2011h12v2H6z'/%3e%3c/svg%3e")no-repeat 50% 50%;mask:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill='currentColor'%20d='M6%2011h12v2H6z'/%3e%3c/svg%3e")no-repeat 50% 50%;-webkit-mask-size:contain;mask-size:contain}.gv-activated .gv-checkbox.gv-mode-condensed,.gv-activated .gv-mode-condensed .gv-checkbox{height:var(--size-md);width:var(--size-md)}.gv-activated .gv-input{--input-color-background:var(--color-surface-form);--input-color-text:var(--color-body-on-default);--input-color-border:var(--color-border-form);--input-padding:var(--size-md);background:var(--input-color-background);border:var(--size-border) solid var(--input-color-border);border-radius:var(--input-radius);color:var(--input-color-text);cursor:text;font-family:inherit;font-size:16px;font-weight:var(--font-weight-regular);height:var(--form-element-height);line-height:var(--form-element-height);overflow:hidden;padding:0 var(--input-padding);text-align:left;width:100%}.gv-activated .gv-input input,.gv-activated .gv-input select,.gv-activated .gv-input textarea{all:unset;box-sizing:border-box;display:revert;height:100%;width:100%}.gv-activated .gv-input:not(.gv-disabled,.gv-read-only) select:not(:disabled,[readonly]){background:var(--input-color-background)}.gv-activated .gv-input:focus-within:not([readonly],.gv-read-only,.gv-disabled),.gv-activated .gv-input:focus:not([readonly],.gv-read-only,.gv-disabled),.gv-activated .gv-input:hover:not([readonly],.gv-read-only,.gv-disabled){--input-color-border:var(--color-state-form-active)}.gv-activated .gv-input.gv-disabled,.gv-activated .gv-input:disabled{cursor:default;pointer-events:none}.gv-activated .gv-input.gv-disabled,.gv-activated .gv-input.gv-read-only,.gv-activated .gv-input:disabled,.gv-activated .gv-input[readonly]{--input-color-background:var(--color-surface-form-disabled);--input-color-text:var(--color-body-on-disabled);--input-color-border:var(--color-border-form-disabled)}.gv-activated .gv-input.gv-read-only .gv-addon,.gv-activated .gv-input.gv-read-only .gv-prefix,.gv-activated .gv-input[readonly] .gv-addon,.gv-activated .gv-input[readonly] .gv-prefix,.gv-activated .gv-password .gv-requirements .gv-list li .gv-tooltip-container,.gv-activated .gv-password .gv-requirements .gv-list li.gv-valid{color:var(--color-body-on-default)}.gv-activated .gv-input.gv-input-select.gv-read-only{pointer-events:none}.gv-activated .gv-input input::placeholder,.gv-activated .gv-input textarea::placeholder,.gv-activated .gv-input.gv-has-placeholder,.gv-activated .gv-input::placeholder{color:var(--color-body-on-placeholder);opacity:1}.gv-activated .gv-input.gv-input-textarea{min-height:100px;line-height:var(--line-height-body);padding:var(--input-padding);overflow:auto;resize:none;overflow-wrap:break-word;word-break:break-word;word-wrap:break-word}.gv-activated .gv-input.gv-input-textarea textarea{line-height:var(--line-height-body)}.gv-activated .gv-input.gv-input-select{padding:0;position:relative}.gv-activated .gv-input.gv-input-select select{cursor:pointer;line-height:calc(var(--form-element-height) - (var(--size-border)*2));padding-left:var(--input-padding);padding-right:72px}.gv-activated .gv-input.gv-input-select gv-icon{border-left:var(--size-border) solid var(--input-color-border);box-sizing:content-box;height:100%;padding:0 var(--size-md);pointer-events:none;position:absolute;right:0;top:0;width:24px}.gv-activated .gv-input.gv-input-search,.gv-activated .gv-input.gv-with-addon{align-items:center;display:flex;padding:0}.gv-activated .gv-input.gv-input-domain-checker input,.gv-activated .gv-input.gv-input-search input,.gv-activated .gv-input.gv-with-addon input{padding:0 var(--input-padding)}.gv-activated .gv-input.gv-input-search .gv-addon,.gv-activated .gv-input.gv-input-search .gv-prefix,.gv-activated .gv-input.gv-with-addon .gv-addon,.gv-activated .gv-input.gv-with-addon .gv-prefix{align-items:center;display:flex;height:100%;max-width:156px;padding:0 var(--input-padding);font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-input .gv-clear gv-icon,.gv-activated .gv-input.gv-input-search .gv-addon gv-icon,.gv-activated .gv-input.gv-input-search .gv-prefix gv-icon,.gv-activated .gv-input.gv-with-addon .gv-addon gv-icon,.gv-activated .gv-input.gv-with-addon .gv-prefix gv-icon{height:100%}.gv-activated .gv-input.gv-input-search .gv-addon,.gv-activated .gv-input.gv-with-addon .gv-addon{border-left:var(--size-border) solid var(--input-color-border)}.gv-activated .gv-input.gv-input-search .gv-prefix,.gv-activated .gv-input.gv-with-addon .gv-prefix{border-right:var(--size-border) solid var(--input-color-border)}.gv-activated .gv-input.gv-input-date.gv-with-addon{position:relative}.gv-activated .gv-input.gv-input-date.gv-with-addon .gv-addon{background:var(--input-color-background);pointer-events:none;position:absolute;right:0}.gv-activated .gv-input.gv-input-date.gv-with-addon.gv-read-only .gv-addon{color:var(--color-body-on-disabled)}.gv-activated .gv-input.gv-input-textarea.gv-with-addon textarea{padding:var(--input-padding)}.gv-activated .gv-input.gv-input-textarea.gv-with-addon .gv-addon{align-items:flex-start;padding:var(--input-padding)}.gv-activated .gv-input.gv-input-textarea.gv-with-addon .gv-addon gv-icon{height:var(--size-icon-md)}.gv-activated .gv-input.gv-input-search.gv-with-clear input[type=search]::-ms-clear,.gv-activated .gv-input.gv-input-search.gv-with-clear input[type=search]::-ms-reveal{display:none;height:0;width:0}.gv-activated .gv-input.gv-input-search.gv-with-clear input[type=search]::-webkit-search-cancel-button,.gv-activated .gv-input.gv-input-search.gv-with-clear input[type=search]::-webkit-search-decoration,.gv-activated .gv-input.gv-input-search.gv-with-clear input[type=search]::-webkit-search-results-button,.gv-activated .gv-input.gv-input-search.gv-with-clear input[type=search]::-webkit-search-results-decoration{display:none}.gv-activated .gv-input .gv-clear{align-items:center;display:flex;height:100%;padding:0 var(--input-padding);visibility:hidden}.gv-activated .gv-input:focus-within .gv-clear,.gv-activated .gv-input:hover .gv-clear{visibility:visible}.gv-activated .gv-input .gv-shortcut{align-items:center;background-color:var(--color-surface-dim);border:var(--size-border) solid var(--color-border-alt);border-radius:var(--border-radius);box-shadow:var(--color-shadow-subtle);display:flex;flex-wrap:nowrap;gap:var(--size-xs);height:18px;margin-right:var(--input-padding);padding:0 var(--size-xs);font-size:10px;font-weight:var(--font-weight-semibold);letter-spacing:.04px;line-height:var(--line-height-body)}.gv-activated .gv-input.gv-input-domain-checker{--checker-padding:calc(var(--size-xs) - var(--size-border));display:flex;height:calc(var(--form-element-height) + (var(--size-xs)*2));padding:var(--checker-padding) var(--checker-padding) var(--checker-padding)0}.gv-activated .gv-input.gv-input-number{align-items:center;display:flex;gap:var(--size-md);padding:0 var(--size-sm)}.gv-activated .gv-input.gv-input-number input[type=number]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;text-align:center}.gv-activated .gv-input.gv-input-number input[type=number]::-webkit-inner-spin-button,.gv-activated .gv-input.gv-input-number input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}.gv-activated .gv-input.gv-input-number button{background-color:var(--color-surface-bright);border-radius:var(--border-radius);color:var(--color-body-on-default);padding:var(--size-xs)}@media (max-width:599px){.gv-activated .gv-input .gv-button{width:auto}.gv-activated .gv-input.gv-input-domain-checker .gv-button span{display:none}}@media (min-width:600px){.gv-activated .gv-input:not(.gv-w-full).gv-input-country-number,.gv-activated .gv-input:not(.gv-w-full).gv-input-zipcode{width:134px}.gv-activated .gv-input:not(.gv-w-full).gv-input-date{width:270px}}.gv-activated .gv-divider-button .gv-input.gv-input-number button,.gv-activated .gv-input.gv-mode-condensed.gv-input-number button,.gv-activated .gv-mode-condensed .gv-input.gv-input-number button{padding:0}.gv-activated .gv-input.gv-on-surface-dim,.gv-activated .gv-on-surface-dim .gv-input{--input-color-background:var(--color-surface-bright)}.gv-activated .gv-input-message{font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-error .gv-input,.gv-activated .gv-input.gv-error{--input-color-border:var(--color-signal-alert)}.gv-activated .gv-error .gv-input-message:not(.gv-message-info),.gv-activated .gv-input-message.gv-error:not(.gv-message-info){color:var(--color-signal-alert)}.gv-activated .gv-deleted .gv-input{--input-color-background:var(--color-surface-form-deleted);--input-color-border:var(--color-border-form-deleted);--input-color-text:var(--color-body-on-deleted)}.gv-activated .gv-password{display:flex;flex-direction:column;gap:var(--size-xs)}.gv-activated .gv-password .gv-password-form .gv-strength{align-items:flex-end;display:flex;flex-direction:column;margin-top:var(--size-sm);position:relative}.gv-activated .gv-password .gv-password-form .gv-strength .gv-strength-label{font-size:10px;font-weight:var(--font-weight-medium);letter-spacing:.04px;line-height:var(--line-height-body)}.gv-activated .gv-password .gv-requirements{font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-password .gv-requirements>:not(:last-child){margin-bottom:var(--size-md)}.gv-activated .gv-password .gv-requirements .gv-title{margin-bottom:var(--size-xs);margin-top:var(--size-sm);font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body);font-weight:var(--font-weight-semibold)}.gv-activated .gv-password .gv-requirements .gv-list,.gv-activated ul.gv-list-items{list-style:none;padding:0}.gv-activated .gv-password .gv-requirements .gv-list>:not(:last-child){margin-bottom:var(--size-sm)}.gv-activated .gv-password .gv-requirements .gv-list li{align-items:flex-start;color:var(--color-body-on-disabled);display:flex;flex-wrap:wrap;gap:var(--size-xs);padding-left:calc(var(--size-icon-sm) + var(--size-xs));position:relative}.gv-activated .gv-password .gv-requirements .gv-list li:before{background-color:var(--color-body-on-default);content:"";-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpath%20d='M5.25%2012.65V11.3h13.5v1.35Z'/%3e%3c/svg%3e")no-repeat 50% 50%;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpath%20d='M5.25%2012.65V11.3h13.5v1.35Z'/%3e%3c/svg%3e")no-repeat 50% 50%;-webkit-mask-size:contain;mask-size:contain;height:var(--size-icon-sm);left:0;position:absolute;top:0;width:var(--size-icon-sm)}.gv-activated .gv-password .gv-requirements .gv-list li.gv-valid:before{background-color:var(--color-signal-success);-webkit-mask:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M6%2011.532%2010.875%2016%2018%208'%20stroke='currentColor'%20stroke-width='1.5'/%3e%3c/svg%3e")no-repeat 50% 50%;mask:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M6%2011.532%2010.875%2016%2018%208'%20stroke='currentColor'%20stroke-width='1.5'/%3e%3c/svg%3e")no-repeat 50% 50%}.gv-activated .gv-radio{--radio-color-fill:var(--color-surface-form);--radio-color-border:var(--color-border-form);--radio-color-fill-selected:var(--color-fg-form-on);--radio-color-border-selected:var(--color-state-form-active);all:unset;box-sizing:border-box;display:revert;cursor:pointer;height:var(--size-lg);position:relative;width:var(--size-lg)}.gv-activated .gv-radio:disabled,.gv-activated .gv-toggle input[type=checkbox]:disabled{cursor:default;opacity:var(--opacity-disabled-elements);pointer-events:none}.gv-activated .gv-radio:after{background-color:var(--radio-color-fill);border:var(--size-border) solid var(--radio-color-border);border-radius:100%;box-sizing:border-box;content:"";height:100%;left:0;position:absolute;top:0;width:100%}.gv-activated .gv-radio:checked:after{background-color:var(--radio-color-fill-selected);border-color:var(--radio-color-border-selected);border-width:7px}.gv-activated .gv-mode-condensed .gv-radio,.gv-activated .gv-radio.gv-mode-condensed{height:var(--size-md);width:var(--size-md)}.gv-activated .gv-divider-button .gv-radio:checked:after,.gv-activated .gv-mode-condensed .gv-radio:checked:after,.gv-activated .gv-radio.gv-mode-condensed:checked:after{border-width:5px}.gv-activated .gv-form-title{font-weight:var(--font-weight-semibold);font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-divider-button,.gv-activated .gv-divider-label{align-items:center;display:flex}.gv-activated .gv-divider-button .gv-divider,.gv-activated .gv-divider-label .gv-divider{--divider-color:var(--color-border-alt)}.gv-activated .gv-divider-label{color:var(--color-body-on-alternative);gap:var(--size-sm);font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-divider-button{gap:var(--size-md);--form-element-height:30px}.gv-activated .gv-divider-button .gv-button{font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-divider-button .gv-checkbox,.gv-activated .gv-divider-button .gv-radio{height:var(--size-md);width:var(--size-md)}.gv-activated .gv-divider-button .gv-toggle{--toggle-height:16px;--toggle-width:28px;--toggle-dot-indent:2px}.gv-activated .gv-repeatable-fields .gv-fields,.gv-activated .gv-repeatable-fields .gv-row{display:flex;gap:var(--size-md)}.gv-activated .gv-repeatable-fields .gv-fields{flex:1}.gv-activated .gv-repeatable-fields .gv-button{flex-shrink:0}@media (max-width:599px){.gv-activated .gv-repeatable-fields{border-bottom:1px solid var(--color-border-alt);padding-bottom:var(--size-md)}.gv-activated .gv-repeatable-fields .gv-fields{align-items:flex-start;flex-direction:column}.gv-activated .gv-repeatable-fields .gv-button{width:auto}}.gv-activated .gv-search-advanced{height:100%;left:0;position:fixed;top:0;width:100%;z-index:1100}.gv-activated .gv-search-advanced .gv-search-container{height:100%;margin-left:auto;margin-right:auto;max-width:1536px}@media screen and (max-width:360px){.gv-activated .gv-search-advanced .gv-search-container{padding-bottom:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-search-advanced .gv-search-container{padding-bottom:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-search-advanced .gv-search-container{padding-bottom:48px}}@media screen and (max-width:360px){.gv-activated .gv-search-advanced .gv-search-container{padding-left:24px;padding-right:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-search-advanced .gv-search-container{padding-left:calc(24px + 24*((100vw - 360px)/1080));padding-right:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-search-advanced .gv-search-container{padding-left:48px;padding-right:48px}}.gv-activated .gv-search-advanced .gv-search-content{display:flex;flex-direction:column;height:100%}.gv-activated .gv-search-advanced .gv-autocomplete-panel{overflow-y:auto;padding:var(--size-lg);position:relative}.gv-activated .gv-search-advanced .gv-autocomplete-panel>:not(:last-child){margin-bottom:24px}.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-state-info{padding:0;text-align:center;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-state-info .gv-title{font-weight:var(--font-weight-semibold);line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-state-info .gv-title{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-state-info .gv-title{font-size:calc(14px + 2*((100vw - 360px)/1080));letter-spacing:calc(.035px + .045*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-state-info .gv-title{font-size:16px;letter-spacing:.08px}}.gv-activated .gv-loader-container gv-loader,.gv-activated .gv-mode-condensed gv-loader,.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-state-info gv-loader,.gv-activated gv-loader.gv-mode-condensed{height:var(--size-lg);width:var(--size-lg)}.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-panel-chips{position:relative}.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-panel-chips .gv-slide-button{height:100%;position:absolute;top:0;z-index:1}.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-panel-chips .gv-slide-button.gv-previous{background:linear-gradient(270deg,rgb(from var(--color-surface-bright) r g b/0%) 0%,var(--color-surface-bright) 40%);left:calc(-1*var(--size-lg));padding:0 var(--size-sm)0 var(--size-lg)}.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-panel-chips .gv-slide-button.gv-next{background:linear-gradient(270deg,var(--color-surface-bright) 60%,rgb(from var(--color-surface-bright) r g b/0%) 100%);padding:0 var(--size-lg)0 var(--size-sm);right:calc(-1*var(--size-lg))}.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-panel-chips .gv-bar{overflow:hidden}.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-panel-chips .gv-items{display:flex;gap:var(--size-md);transition:transform .2s ease}.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-panel-chips .gv-chip{flex-shrink:0}.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-panel-results>:not(:last-child){margin-bottom:16px}.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-panel-header{display:flex;gap:var(--size-md);justify-content:space-between}.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-panel-header .gv-title{color:var(--color-body-on-alternative);font-weight:var(--font-weight-semibold);font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-listbox{max-height:none;overflow:visible}@media (max-width:1023px){.gv-activated .gv-search-advanced{background-color:var(--color-surface-bright)}.gv-activated .gv-search-advanced .gv-search-container{padding:0}.gv-activated .gv-search-advanced .gv-autocomplete-panel{border:0;display:flex;flex-direction:column;flex-grow:1}.gv-activated .gv-search-advanced .gv-autocomplete-panel .gv-state-info{align-items:center;display:flex;flex-direction:column;flex-grow:1;justify-content:center}.gv-activated .gv-search-advanced .gv-search-header{display:flex;gap:var(--size-md);padding:var(--size-lg) var(--size-lg)0}.gv-activated .gv-search-advanced .gv-search-header .gv-button{width:auto}}@media (min-width:1024px){.gv-activated .gv-search-advanced{background-color:var(--color-overlay-dark)}.gv-activated .gv-search-advanced .gv-search-container{display:flex;justify-content:flex-end}.gv-activated .gv-search-advanced .gv-search-content{width:360px}.gv-activated .gv-search-advanced .gv-search-header{padding-top:var(--size-xs)}.gv-activated .gv-search-advanced .gv-search-header .gv-button-cancel{display:none}}.gv-activated .gv-toggle{--toggle-color-on:var(--color-state-form-active);--toggle-color-off:var(--color-border-form);--toggle-color-dot:var(--color-fg-form-on);--toggle-height:24px;--toggle-width:42px;--toggle-dot-indent:3px;--toggle-dot-size:calc(var(--toggle-height) - (var(--toggle-dot-indent) * 2));display:inline-block;position:relative}.gv-activated .gv-toggle .gv-toggle-slider{background-color:var(--toggle-color-off);border-radius:100px;height:var(--toggle-height);position:relative;width:var(--toggle-width)}.gv-activated .gv-toggle .gv-toggle-slider:before{background-color:var(--toggle-color-dot);border-radius:100px;box-sizing:content-box;content:"";display:block;height:var(--toggle-dot-size);left:var(--toggle-dot-indent);position:absolute;top:var(--toggle-dot-indent);transition:all .2s ease-out;width:var(--toggle-dot-size)}.gv-activated .gv-toggle input[type=checkbox]{all:unset;box-sizing:border-box;display:revert;cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:1}.gv-activated .gv-toggle input[type=checkbox]:checked+.gv-toggle-slider{background-color:var(--toggle-color-on)}.gv-activated .gv-toggle input[type=checkbox]:checked+.gv-toggle-slider:before{transform:translate(calc(var(--toggle-width) - var(--toggle-height)))}.gv-activated .gv-toggle input[type=checkbox]:disabled+.gv-toggle-slider{opacity:var(--opacity-disabled-elements)}.gv-activated .gv-mode-condensed .gv-toggle,.gv-activated .gv-toggle.gv-mode-condensed{--toggle-height:16px;--toggle-width:28px;--toggle-dot-indent:2px}.gv-activated .gv-form-option{display:flex;gap:var(--size-xs);flex-direction:column}.gv-activated .gv-form-option .gv-label-with-action{align-items:flex-end;display:flex;justify-content:space-between}.gv-activated .gv-form-option .gv-input-action{color:var(--color-state-form-active);text-decoration:none;font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-form-option .gv-option-inline{align-items:flex-start;display:flex;flex-wrap:nowrap;gap:var(--size-sm)}.gv-activated .gv-form-option .gv-option-inline .gv-checkbox,.gv-activated .gv-form-option .gv-option-inline .gv-radio,.gv-activated .gv-form-option .gv-option-inline .gv-toggle{flex-shrink:0}.gv-activated .gv-form-option .gv-option-inline .gv-label{cursor:pointer;font-weight:var(--font-weight-regular);padding-top:6px;line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-form-option .gv-option-inline .gv-label{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-form-option .gv-option-inline .gv-label{font-size:calc(14px + 2*((100vw - 360px)/1080));letter-spacing:calc(.035px + .045*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-form-option .gv-option-inline .gv-label{font-size:16px;letter-spacing:.08px}}.gv-activated .gv-form-option .gv-option-inline .gv-label:before,.gv-activated .gv-main-header .gv-nav-menu .gv-btn-account .gv-btn-label:before,.gv-activated .gv-stepper .gv-stepper-back a span:before{margin-bottom:calc(-.375em + 0px)}.gv-activated .gv-form-option .gv-option-inline .gv-label:after,.gv-activated .gv-main-header .gv-nav-menu .gv-btn-account .gv-btn-label:after,.gv-activated .gv-stepper .gv-stepper-back a span:after{margin-top:calc(-.3125em + 0px)}.gv-activated .gv-form-option .gv-option-inline .gv-label:after,.gv-activated .gv-form-option .gv-option-inline .gv-label:before,.gv-activated .gv-main-header .gv-nav-menu .gv-btn-account .gv-btn-label:after,.gv-activated .gv-main-header .gv-nav-menu .gv-btn-account .gv-btn-label:before,.gv-activated .gv-stepper .gv-stepper-back a span:after,.gv-activated .gv-stepper .gv-stepper-back a span:before{content:"";display:block;height:0;width:0}.gv-activated .gv-form-option .gv-option-inline .gv-description,.gv-activated .gv-label .gv-label-optional{color:var(--color-body-on-alternative);font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-form-option .gv-option-inline .gv-description{display:block}.gv-activated .gv-form-option .gv-option-inline .gv-label-with-tooltip{align-items:flex-start;display:flex;flex-wrap:nowrap;gap:var(--size-sm)}.gv-activated .gv-mode-condensed .gv-option-inline .gv-label{padding-top:3px;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-label{font-weight:var(--font-weight-semibold);font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-label .gv-label-optional{margin-left:var(--size-sm)}.gv-activated .gv-label.gv-label-with-icon{align-items:center;display:flex;gap:var(--size-xs)}.gv-activated .gv-label.gv-label-with-icon gv-icon{height:var(--size-icon-sm);width:var(--size-icon-sm)}.gv-activated ul.gv-list-items>:not(:last-child){margin-bottom:16px}.gv-activated ul.gv-list-items li{padding-left:32px;position:relative}.gv-activated ul.gv-list-items li:before{background-color:var(--color-body-on-default);content:"";-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpath%20d='M5.25%2012.65V11.3h13.5v1.35Z'/%3e%3c/svg%3e")no-repeat 50% 50%;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpath%20d='M5.25%2012.65V11.3h13.5v1.35Z'/%3e%3c/svg%3e")no-repeat 50% 50%;-webkit-mask-size:contain;mask-size:contain;height:24px;left:0;position:absolute;top:0;width:24px}.gv-activated ul.gv-list-items.gv-list-check li:before{-webkit-mask:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M6%2011.532%2010.875%2016%2018%208'%20stroke='currentColor'%20stroke-width='1.5'/%3e%3c/svg%3e")no-repeat 50% 50%;mask:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M6%2011.532%2010.875%2016%2018%208'%20stroke='currentColor'%20stroke-width='1.5'/%3e%3c/svg%3e")no-repeat 50% 50%}.gv-activated ul.gv-list-items.gv-list-bullet li:before{-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='none'%20viewBox='0%200%2024%2024'%3e%3cpath%20fill='currentColor'%20d='M16%2012a4%204%200%201%201-8%200%204%204%200%200%201%208%200Z'/%3e%3c/svg%3e")no-repeat 50% 50%;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='none'%20viewBox='0%200%2024%2024'%3e%3cpath%20fill='currentColor'%20d='M16%2012a4%204%200%201%201-8%200%204%204%200%200%201%208%200Z'/%3e%3c/svg%3e")no-repeat 50% 50%}.gv-activated ul.gv-list-items.gv-mode-condensed li{padding-left:28px;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated ul.gv-list-items.gv-mode-condensed li:before{height:20px;top:2px;width:20px}.gv-activated .gv-list-table{text-align:left;width:100%;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body);--form-element-height:30px}.gv-activated .gv-list-table .gv-col-action{width:1px}.gv-activated .gv-list-table td:not(.gv-col-action),.gv-activated .gv-list-table th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width:599px){.gv-activated .gv-list-table,.gv-activated .gv-list-table tbody{display:block}.gv-activated .gv-list-table tr{display:flex;flex-direction:column}.gv-activated .gv-list-table th{padding:var(--size-sm) var(--size-md)}.gv-activated .gv-list-table td:not(.gv-col-action){padding:0 var(--size-md) var(--size-sm)}.gv-activated .gv-list-table td.gv-col-action{padding:0 var(--size-md)}.gv-activated .gv-list-table td.gv-col-action>*{margin-bottom:var(--size-sm)}}@media (min-width:600px){.gv-activated .gv-list-table td,.gv-activated .gv-list-table th{padding:var(--size-sm) var(--size-md)}.gv-activated .gv-list-table th{max-width:200px;width:200px}.gv-activated .gv-list-table td:not(.gv-col-action){max-width:1px}}.gv-activated gv-loader{align-items:center;animation:gv-spin 1s linear infinite;display:inline-flex;height:var(--size-xl);width:var(--size-xl)}.gv-activated gv-loader .gv-primary-color{fill:var(--color-loader-primary)}.gv-activated gv-loader .gv-secondary-color{fill:var(--color-loader-secondary)}.gv-activated .gv-loader-container{align-items:center;background-color:var(--color-overlay-light);display:flex;flex-direction:column;gap:var(--size-sm);padding:var(--size-lg);font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated gv-logo{align-items:center;display:inline-flex;height:40px}.gv-activated.gv-dark-mode gv-logo .gv-mode-color{fill:var(--color-gray-100)}.gv-activated .gv-modal{align-items:center;background-color:var(--color-overlay-dark);display:flex;height:100%;justify-content:center;left:0;overflow:auto;position:fixed;top:0;width:100%;z-index:1100}@media screen and (max-width:360px){.gv-activated .gv-modal{padding:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-modal{padding:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-modal{padding:48px}}.gv-activated .gv-modal .gv-modal-content{background-color:var(--color-surface-bright);border-radius:var(--border-radius);color:var(--color-body-on-default);margin:auto;max-width:700px;position:relative;width:100%;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-modal .gv-modal-content{padding:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-modal .gv-modal-content{padding:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-modal .gv-modal-content{padding:48px}}.gv-activated .gv-modal .gv-modal-content>:not(:last-child){margin-bottom:24px}.gv-activated .gv-modal .gv-modal-content .gv-modal-close{cursor:pointer;padding:var(--size-sm);position:absolute;right:0;top:0}@media screen and (max-width:360px){.gv-activated .gv-modal .gv-modal-content .gv-modal-close{right:8px;top:8px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-modal .gv-modal-content .gv-modal-close{right:calc(8px + 8*((100vw - 360px)/1080));top:calc(8px + 8*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-modal .gv-modal-content .gv-modal-close{right:16px;top:16px}}.gv-activated .gv-modal .gv-modal-content .gv-modal-body>:not(:last-child){margin-bottom:8px}.gv-activated .gv-modal .gv-modal-content .gv-modal-title{margin-right:24px;font-weight:var(--font-weight-heading);line-height:var(--line-height-heading-sm)}@media screen and (max-width:360px){.gv-activated .gv-modal .gv-modal-content .gv-modal-title{font-size:calc(var(--font-size-heading-sm-min)*1px);letter-spacing:calc(var(--letterspacing-heading-sm-min)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-modal .gv-modal-content .gv-modal-title{font-size:calc(calc(var(--font-size-heading-sm-min)*1px) + (var(--font-size-heading-sm-max) - var(--font-size-heading-sm-min))*((100vw - 360px)/1080));letter-spacing:calc(calc(var(--letterspacing-heading-sm-min)*1px) + (var(--letterspacing-heading-sm-max) - var(--letterspacing-heading-sm-min))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-modal .gv-modal-content .gv-modal-title{font-size:calc(var(--font-size-heading-sm-max)*1px);letter-spacing:calc(var(--letterspacing-heading-sm-max)*1px)}}.gv-activated .gv-modal .gv-modal-content .gv-modal-subtitle{font-weight:var(--font-weight-semibold);line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-modal .gv-modal-content .gv-modal-subtitle{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-modal .gv-modal-content .gv-modal-subtitle{font-size:calc(14px + 4*((100vw - 360px)/1080));letter-spacing:calc(.035px + -.035*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-modal .gv-modal-content .gv-modal-subtitle{font-size:18px;letter-spacing:0}}.gv-activated .gv-modal .gv-modal-content .gv-modal-progress{align-items:center;display:flex;gap:16px;justify-content:space-between}.gv-activated .gv-modal .gv-progress-bullets{align-items:center;display:flex;gap:8px}.gv-activated .gv-modal .gv-progress-bullets>span{background-color:var(--color-state-hover);border-radius:50%;display:block;height:8px;width:8px}.gv-activated .gv-modal .gv-progress-bullets>span.gv-bullet-current{background-color:var(--color-state-focus)}.gv-activated .gv-modal .gv-progress-bullets>span.gv-bullet-done{background-color:var(--color-state-active)}@media (max-width:599px){.gv-activated .gv-modal{align-items:flex-end;padding-bottom:0;padding-left:0;padding-right:0}.gv-activated .gv-modal .gv-modal-content{border-radius:0;margin:0;max-height:100%;overflow:auto}.gv-activated .gv-modal .gv-modal-content .gv-modal-progress .gv-button{width:auto}}.gv-activated .gv-main-header{background-color:var(--color-surface-bright);border-bottom:1px solid var(--color-border-alt);height:var(--navigation-bar-height);left:0;position:fixed;top:0;width:100%;z-index:1000}.gv-activated .gv-main-header .gv-header-nav{align-items:center;display:flex;flex-wrap:nowrap;gap:24px;height:var(--navigation-bar-height);justify-content:space-between;position:relative;width:100%;margin-left:auto;margin-right:auto;max-width:1536px}@media screen and (max-width:360px){.gv-activated .gv-main-header .gv-header-nav{padding-left:24px;padding-right:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-main-header .gv-header-nav{padding-left:calc(24px + 24*((100vw - 360px)/1080));padding-right:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-main-header .gv-header-nav{padding-left:48px;padding-right:48px}}.gv-activated .gv-main-header .gv-nav-left,.gv-activated .gv-main-header .gv-nav-menu{align-items:center;display:flex;flex-wrap:nowrap;gap:24px}.gv-activated .gv-main-header .gv-nav-menu>*{display:block;position:relative;text-decoration:none}.gv-activated .gv-main-header .gv-nav-menu .gv-btn-cart{align-items:center;display:flex;flex-wrap:nowrap;gap:4px}.gv-activated .gv-main-header .gv-nav-menu .gv-btn-cart .gv-amount{background-color:var(--color-surface-muted);border-radius:var(--border-radius);color:var(--color-body-on-placeholder);line-height:1;padding:4px;font-size:10px;font-weight:var(--font-weight-semibold);letter-spacing:.04px;line-height:var(--line-height-body)}.gv-activated .gv-main-header .gv-nav-menu .gv-btn-cart.gv-filled .gv-amount{background-color:var(--color-cta);color:var(--color-button-fg-on)}.gv-activated .gv-main-header .gv-nav-menu .gv-btn-account,.gv-activated .gv-notice{align-items:center;display:flex;gap:var(--size-sm)}.gv-activated .gv-main-header .gv-nav-menu .gv-btn-account .gv-btn-label{font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-main-header .gv-nav-menu .gv-btn-account.gv-icon-indicator:before{left:calc(var(--size-icon-md) - var(--size-sm));right:auto}@media (max-width:599px){.gv-activated .gv-main-header .gv-nav-menu .gv-btn-account .gv-btn-label{display:none}}@media (max-width:1023px){.gv-activated .gv-main-header .gv-btn-notification,.gv-activated .gv-main-header .gv-btn-search,.gv-activated .gv-main-header .gv-nav-links{display:none}}@media (min-width:1024px){.gv-activated .gv-main-header .gv-btn-menu{display:none}.gv-activated .gv-main-header .gv-nav-links ul{display:flex;list-style:none;padding:0}.gv-activated .gv-main-header .gv-nav-links ul a{border-bottom:1px solid var(--color-border-alt);display:block;font-weight:var(--font-weight-medium);height:var(--navigation-bar-height);padding:16px 24px;text-decoration:none;white-space:nowrap;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-main-header .gv-nav-links ul a:hover{background-color:var(--color-state-hover)}.gv-activated .gv-main-header .gv-nav-links ul .gv-active a{background-color:var(--color-state-active);border-color:var(--color-border)}}.gv-activated .gv-notice{--notice-color-background:inherit;--notice-color-icon:inherit;--notice-color-text:var(--color-body-on-default);background:var(--notice-color-background);border-radius:var(--notice-radius);color:var(--notice-color-text);flex-wrap:nowrap;gap:var(--size-md);padding:var(--size-lg);position:relative}.gv-activated .gv-notice .gv-notice-icon{color:var(--notice-color-icon);flex-shrink:0}.gv-activated .gv-notice .gv-notice-content{flex-grow:1;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-notice .gv-notice-content>:not(:last-child){margin-bottom:var(--size-xs)}.gv-activated .gv-notice .gv-notice-title{font-weight:var(--font-weight-semibold)}.gv-activated .gv-nav-item gv-icon,.gv-activated .gv-notice .gv-button,.gv-activated .gv-shortcut gv-icon,.gv-activated .gv-shortcut-tile gv-icon,.gv-activated .gv-shortcut-tile gv-tile{flex-shrink:0}.gv-activated .gv-notice .gv-notice-close{cursor:pointer;padding:var(--size-sm)}.gv-activated .gv-notice.gv-notice-alert{--notice-color-background:var(--color-signal-alert-light);--notice-color-icon:var(--color-signal-alert)}.gv-activated .gv-notice.gv-notice-warning{--notice-color-background:var(--color-signal-warning-light);--notice-color-icon:var(--color-signal-warning)}.gv-activated .gv-notice.gv-notice-success{--notice-color-background:var(--color-signal-success-light);--notice-color-icon:var(--color-signal-success)}.gv-activated .gv-notice.gv-notice-info{--notice-color-background:var(--color-signal-info-light);--notice-color-icon:var(--color-signal-info)}.gv-activated .gv-notice.gv-notice-addon{border-top-left-radius:0;border-top-right-radius:0;padding:var(--size-sm) var(--size-lg);--form-element-height:30px}.gv-activated .gv-notice.gv-notice-addon .gv-button{font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}@media (max-width:599px){.gv-activated .gv-notice{flex-wrap:wrap;gap:var(--size-sm);justify-content:space-between}.gv-activated .gv-notice .gv-notice-content{width:100%}.gv-activated .gv-notice .gv-button{margin-top:var(--size-sm)}.gv-activated .gv-notice .gv-notice-close{position:absolute;right:var(--size-lg);top:var(--size-md)}}.gv-activated .gv-mode-condensed .gv-notice,.gv-activated .gv-notice.gv-mode-condensed{gap:var(--size-sm);padding:var(--size-sm)}.gv-activated .gv-mode-condensed .gv-notice .gv-notice-content,.gv-activated .gv-notice.gv-mode-condensed .gv-notice-content{font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:.048px;line-height:var(--line-height-body)}@media (max-width:599px){.gv-activated .gv-mode-condensed .gv-notice .gv-notice-close,.gv-activated .gv-notice.gv-mode-condensed .gv-notice-close{right:var(--size-sm);top:0}}.gv-activated .gv-main-header .gv-nav-select .gv-btn-select{display:flex;gap:4px;padding:8px 0 8px 8px}.gv-activated .gv-main-header .gv-nav-select .gv-nav-dropdown{background-color:var(--color-surface-bright);border:1px solid var(--color-border-alt);border-radius:var(--border-radius);display:none;padding:16px;position:absolute;right:0;top:100%;width:200px}.gv-activated .gv-main-header .gv-nav-select .gv-nav-dropdown ul>:not(:last-child),.gv-activated .gv-side-nav ul>:not(:last-child){margin-bottom:4px}.gv-activated .gv-main-header .gv-nav-select .gv-nav-dropdown li,.gv-activated .gv-side-nav ul li{display:flex;flex-direction:column;gap:8px}.gv-activated .gv-main-header .gv-nav-select [aria-expanded=true] gv-icon:last-child,.gv-activated .gv-sidedrawer .gv-side-content [aria-expanded=true] gv-icon:last-child{transform:rotate(180deg)}.gv-activated .gv-main-header .gv-nav-select [aria-expanded=true]+.gv-nav-dropdown{display:block}.gv-activated gv-pay-icon{display:inline-block;height:26px;width:34px;font-size:0;vertical-align:text-bottom}.gv-activated gv-pay-icon svg{width:100%;height:100%}.gv-activated .gv-layout-product{display:grid;grid-template-columns:1fr;grid-template-areas:"nav""header""table""details""content"}@media screen and (max-width:360px){.gv-activated .gv-layout-product{gap:calc(var(--size-fluid-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-layout-product{gap:calc(calc(var(--size-fluid-min-value)*1px) + (var(--size-fluid-max-value) - var(--size-fluid-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-layout-product{gap:calc(var(--size-fluid-max-value)*1px)}}.gv-activated .gv-layout-product>*{min-width:0}.gv-activated .gv-layout-product .gv-area-nav{grid-area:nav}.gv-activated .gv-layout-product .gv-area-header{grid-area:header}.gv-activated .gv-layout-product .gv-area-table{grid-area:table}.gv-activated .gv-layout-product .gv-area-details{grid-area:details}.gv-activated .gv-layout-product .gv-area-content{grid-area:content}.gv-activated .gv-layout-product .gv-product-header{background:var(--color-surface-highlight);border:1px solid var(--color-border);border-radius:var(--border-radius);display:flex;flex-direction:column;overflow:hidden}@media screen and (max-width:360px){.gv-activated .gv-layout-product .gv-product-header .gv-content{padding:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-layout-product .gv-product-header .gv-content{padding:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-layout-product .gv-product-header .gv-content{padding:48px}}.gv-activated .gv-layout-product .gv-product-header .gv-image{position:relative}.gv-activated .gv-layout-product .gv-product-header .gv-image img{display:block;height:auto;max-width:480px;object-fit:cover;object-position:left top;width:100%}@media (min-width:768px){.gv-activated .gv-layout-product.gv-product-single{grid-template-columns:1fr 1fr;grid-template-areas:"nav nav""header table""details table""content content"}.gv-activated .gv-layout-product:not(.gv-product-single) .gv-product-header{align-items:center;flex-direction:row}.gv-activated .gv-layout-product:not(.gv-product-single) .gv-product-header .gv-content{flex:0 0 50%;min-width:0}.gv-activated .gv-layout-product:not(.gv-product-single) .gv-product-header .gv-image{flex:0 0 50%;height:100%;min-height:360px;min-width:0}.gv-activated .gv-layout-product:not(.gv-product-single) .gv-product-header .gv-image picture{align-items:stretch;display:flex;height:100%}.gv-activated .gv-layout-product:not(.gv-product-single) .gv-product-header .gv-image img{height:100%;width:auto;max-width:none}}@media (min-width:1024px){.gv-activated .gv-layout-product.gv-product-single{grid-template-columns:2fr 1fr}.gv-activated .gv-layout-product.gv-product-single .gv-product-header{align-items:center;flex-direction:row}.gv-activated .gv-layout-product.gv-product-single .gv-product-header .gv-content{flex:0 0 50%;min-width:0}.gv-activated .gv-layout-product.gv-product-single .gv-product-header .gv-image{flex:0 0 50%;height:100%;min-height:360px;min-width:0}.gv-activated .gv-layout-product.gv-product-single .gv-product-header .gv-image picture{align-items:stretch;display:flex;height:100%}.gv-activated .gv-layout-product.gv-product-single .gv-product-header .gv-image img{height:100%;width:auto;max-width:none}}.gv-activated .gv-resource{display:flex;flex-direction:column;gap:8px;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-resource .gv-content{display:flex;flex-direction:column;gap:4px}.gv-activated .gv-resource .gv-amount{font-weight:var(--font-weight-semibold);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-resource .gv-description{color:var(--color-body-on-alternative);font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:.048px;line-height:var(--line-height-body);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;white-space:normal}.gv-activated .gv-progress{background-color:var(--color-border-alt);border-radius:var(--border-radius);height:8px;overflow:hidden;position:relative;width:100%}.gv-activated .gv-progress .gv-bar{background-color:var(--color-signal-info);border-radius:var(--border-radius);display:block;height:100%;transition:width .4s ease-in-out}.gv-activated .gv-progress .gv-bar.gv-alert{background-color:var(--color-signal-alert)}.gv-activated .gv-progress .gv-bar.gv-good,.gv-activated .gv-shortcut .gv-content .gv-status.gv-active .gv-indicator{background-color:var(--color-signal-success)}.gv-activated .gv-progress .gv-bar.gv-warning,.gv-activated .gv-shortcut .gv-content .gv-status.gv-inactive-prio-high .gv-indicator{background-color:var(--color-signal-warning)}.gv-activated .gv-resource-card{background-color:var(--color-surface-bright);border:var(--size-border) solid var(--color-border-alt);border-radius:var(--border-radius);box-shadow:var(--color-shadow-subtle);display:flex;flex-direction:column;gap:var(--size-md);min-width:0;padding:var(--size-lg)}.gv-activated .gv-resource-card .gv-title{font-weight:var(--font-weight-semibold);line-height:var(--line-height-body);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media screen and (max-width:360px){.gv-activated .gv-resource-card .gv-title{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-resource-card .gv-title{font-size:calc(14px + 4*((100vw - 360px)/1080));letter-spacing:calc(.035px + -.035*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-resource-card .gv-title{font-size:18px;letter-spacing:0}}.gv-activated .gv-resource-card .gv-resource{flex-grow:1}.gv-activated .gv-shortcut,.gv-activated .gv-shortcut-tile{align-items:center;background:var(--color-surface-bright);border:1px solid var(--color-border-alt);border-radius:var(--border-radius);cursor:pointer;display:flex;gap:var(--size-md);padding:var(--size-md) var(--size-lg);text-decoration:none}.gv-activated .gv-shortcut .gv-content{color:var(--color-body-on-alternative);flex:1;font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-shortcut .gv-content .gv-status{align-items:center;display:flex;gap:var(--size-xs);font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-shortcut .gv-content .gv-status.gv-active{color:var(--color-signal-success)}.gv-activated .gv-shortcut .gv-content .gv-status.gv-inactive-prio-high{color:var(--color-signal-warning)}.gv-activated .gv-shortcut .gv-content .gv-status.gv-inactive-prio-low,.gv-activated .gv-stepper .gv-stepper-back a:hover{color:var(--color-body-on-alternative)}.gv-activated .gv-shortcut .gv-content .gv-status.gv-inactive-prio-low .gv-indicator{background-color:var(--color-body-on-alternative)}.gv-activated .gv-shortcut .gv-content .gv-status.gv-new{color:var(--color-signal-info)}.gv-activated .gv-shortcut .gv-content .gv-status.gv-new .gv-indicator{background-color:var(--color-signal-info)}.gv-activated .gv-shortcut .gv-content .gv-title{color:var(--color-body-on-default);font-weight:var(--font-weight-semibold);line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-shortcut .gv-content .gv-title{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-shortcut .gv-content .gv-title{font-size:calc(14px + 4*((100vw - 360px)/1080));letter-spacing:calc(.035px + -.035*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-shortcut .gv-content .gv-title{font-size:18px;letter-spacing:0}}.gv-activated .gv-shortcut-tile{padding:var(--size-lg)}.gv-activated .gv-shortcut-tile .gv-content{flex:1;min-width:0}.gv-activated .gv-shortcut-tile .gv-content .gv-title{font-weight:var(--font-weight-semibold);line-height:var(--line-height-body);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media screen and (max-width:360px){.gv-activated .gv-shortcut-tile .gv-content .gv-title{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-shortcut-tile .gv-content .gv-title{font-size:calc(14px + 4*((100vw - 360px)/1080));letter-spacing:calc(.035px + -.035*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-shortcut-tile .gv-content .gv-title{font-size:18px;letter-spacing:0}}.gv-activated .gv-shortcut-tile .gv-content .gv-description{align-items:center;display:flex;gap:var(--size-md);font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-shortcut-tile .gv-content .gv-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-shortcut .gv-button,.gv-activated .gv-shortcut-tile .gv-button{width:auto}.gv-activated .gv-sidedrawer{--side-content-width:300px;background-color:var(--color-overlay-dark);bottom:0;display:none;left:0;position:fixed;right:0;top:0;z-index:1100}.gv-activated .gv-sidedrawer.gv-slide-in{display:block;opacity:0;transition:opacity .2s;visibility:hidden}.gv-activated .gv-sidedrawer.gv-slide-in .gv-side-content{transition:transform .3s ease-in-out}.gv-activated .gv-sidedrawer.gv-slide-in .gv-side-content:not(.gv-pos-right){left:calc(-1*var(--side-content-width))}.gv-activated .gv-sidedrawer.gv-slide-in .gv-side-content.gv-pos-right{right:calc(-1*var(--side-content-width))}.gv-activated .gv-sidedrawer.gv-sidedrawer-open{display:block}.gv-activated .gv-sidedrawer.gv-sidedrawer-open.gv-slide-in{opacity:1;visibility:visible}.gv-activated .gv-sidedrawer.gv-sidedrawer-open.gv-slide-in .gv-side-content:not(.gv-pos-right){transform:translate(100%)}.gv-activated .gv-sidedrawer.gv-sidedrawer-open.gv-slide-in .gv-side-content.gv-pos-right{transform:translate(-100%)}.gv-activated .gv-sidedrawer .gv-side-content{background:var(--color-surface-bright);bottom:0;height:100%;overflow:auto;overscroll-behavior:contain;padding:24px 32px;position:absolute;top:0;width:var(--side-content-width)}.gv-activated .gv-sidebar>:not(:last-child),.gv-activated .gv-sidedrawer .gv-side-content>:not(:last-child){margin-bottom:16px}.gv-activated .gv-sidedrawer .gv-side-content .gv-btn-close{padding:8px;position:absolute;right:16px;top:8px}.gv-activated .gv-sidedrawer .gv-side-content .gv-side-account{padding:16px 8px}.gv-activated .gv-sidedrawer .gv-side-content .gv-side-account .gv-account-info>:not(:last-child),.gv-activated .gv-sidedrawer .gv-side-content .gv-side-account>:not(:last-child){margin-bottom:8px}.gv-activated .gv-sidedrawer .gv-side-content .gv-side-account .gv-account-info{padding-right:24px}.gv-activated .gv-sidedrawer .gv-side-content .gv-side-account .gv-name{font-weight:var(--font-weight-semibold)}.gv-activated .gv-sidedrawer .gv-side-content .gv-side-account .gv-sub{color:var(--color-body-on-alternative);font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-sidedrawer .gv-side-content .gv-side-account .gv-name,.gv-activated .gv-sidedrawer .gv-side-content .gv-side-account .gv-sub{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-sidedrawer .gv-side-content .gv-side-dropdown{display:none;padding:0 8px 0 32px}.gv-activated .gv-sidedrawer .gv-side-content [aria-expanded=true]+.gv-side-dropdown,.gv-activated .gv-stepper .gv-step.gv-step-done .gv-step-type gv-icon{display:block}.gv-activated .gv-sidebar{border-right:1px solid var(--color-border-alt);flex:0 0 232px;width:232px;padding:24px 16px 24px 40px}.gv-activated .gv-side-label,.gv-activated .gv-side-nav ul{font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-side-nav ul{list-style:none}.gv-activated .gv-side-label{color:var(--color-body-on-alternative);margin-bottom:8px;padding:0 8px 8px;font-weight:var(--font-weight-semibold);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-nav-item{align-items:flex-start;border-radius:var(--border-radius);display:flex;gap:8px;min-height:40px;padding:8px;text-align:left;text-decoration:none;width:100%;-webkit-hyphens:auto;hyphens:auto;overflow-wrap:break-word;word-break:break-word;word-wrap:break-word}.gv-activated .gv-nav-item:hover{background-color:var(--color-state-hover)}.gv-activated .gv-nav-item.gv-active,.gv-activated .gv-nav-item[aria-selected=true]{background-color:var(--color-state-active)}.gv-activated .gv-nav-item>span{flex-grow:1;padding-top:1px}.gv-activated .gv-skeleton{animation:gv-pulse 2s ease-in-out infinite;background-color:var(--color-surface-muted);border-radius:var(--border-radius);min-width:var(--size-md)}.gv-activated .gv-skeleton:before{content:" ";display:inline-block}.gv-activated{--size-stepper-dot:20px;color:var(--color-body-on-default);font-family:PlusJakartaSans,Arial,Verdana,sans-serif;font-variant-ligatures:none;font-weight:var(--font-weight-regular);-webkit-font-smoothing:antialiased}.gv-activated .gv-stepper{align-items:flex-start;color:var(--color-body-on-alternative);display:flex;padding-bottom:var(--size-md);padding-top:var(--size-md);position:relative;width:100%;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-stepper{gap:24px;padding-left:24px;padding-right:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-stepper{gap:calc(24px + 24*((100vw - 360px)/1080));padding-left:calc(24px + 24*((100vw - 360px)/1080));padding-right:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-stepper{gap:48px;padding-left:48px;padding-right:48px}}.gv-activated .gv-stepper .gv-stepper-back a{align-items:center;color:var(--color-body-on-alternative);display:inline-flex;gap:var(--size-xs);text-decoration:none}.gv-activated .gv-stepper .gv-stepper-collapsed{align-items:center;background-color:var(--color-surface-dim);cursor:pointer;display:flex;flex:1;gap:var(--size-md);padding:var(--size-md) var(--size-lg)}.gv-activated .gv-stepper .gv-stepper-collapsed .gv-step-label{flex-grow:1}.gv-activated .gv-stepper .gv-stepper-progress{background-color:var(--color-state-active);color:var(--color-primary);font-size:12px;font-weight:var(--font-weight-semibold);letter-spacing:.048px;line-height:var(--line-height-body);align-items:center;border-radius:50%;display:flex;height:32px;justify-content:center;position:relative;width:32px}.gv-activated .gv-stepper .gv-stepper-progress .gv-circle-top{transition:stroke-dashoffset .4s ease-in-out}.gv-activated .gv-stepper .gv-stepper-progress[data-progress-percent="20"] .gv-circle-top{stroke-dasharray:100.53096491;stroke-dashoffset:80.42477193}.gv-activated .gv-stepper .gv-stepper-progress[data-progress-percent="40"] .gv-circle-top{stroke-dasharray:100.53096491;stroke-dashoffset:60.31857895}.gv-activated .gv-stepper .gv-stepper-progress[data-progress-percent="60"] .gv-circle-top{stroke-dasharray:100.53096491;stroke-dashoffset:40.21238597}.gv-activated .gv-stepper .gv-stepper-progress[data-progress-percent="80"] .gv-circle-top{stroke-dasharray:100.53096491;stroke-dashoffset:20.10619298}.gv-activated .gv-stepper .gv-stepper-progress[data-progress-percent="100"] .gv-circle-top{stroke-dasharray:100.53096491;stroke-dashoffset:0}.gv-activated .gv-stepper .gv-stepper-list{align-items:center;color:var(--color-body-on-alternative);display:flex;flex:1;flex-wrap:nowrap;padding:0}.gv-activated .gv-stepper .gv-step{align-items:center;display:inline-flex;flex:1;list-style:none;position:relative}.gv-activated .gv-stepper .gv-step.gv-step-last{max-width:20px}.gv-activated .gv-stepper .gv-step.gv-step-last .gv-step-content{align-items:flex-end}.gv-activated .gv-stepper .gv-step .gv-step-line{background-color:var(--color-border);height:1px;left:0;position:absolute;top:10px;width:100%}.gv-activated .gv-stepper .gv-step .gv-step-content{cursor:default;display:inline-flex;gap:var(--size-sm);flex-direction:column;max-width:100%;position:relative;z-index:1}.gv-activated .gv-stepper .gv-step .gv-step-type{align-items:center;background-color:var(--color-surface-muted);border-radius:50%;display:flex;flex-shrink:0;height:var(--size-stepper-dot);justify-content:center;width:var(--size-stepper-dot);font-size:10px;font-weight:var(--font-weight-semibold);letter-spacing:.04px;line-height:var(--line-height-body)}.gv-activated .gv-stepper .gv-step .gv-step-type gv-icon{color:var(--color-link);display:none;height:var(--size-icon-sm);width:var(--size-icon-sm)}.gv-activated .gv-stepper .gv-step .gv-step-label{white-space:nowrap}.gv-activated .gv-stepper .gv-step .gv-step-label:before{margin-bottom:calc(-.375em + 0px)}.gv-activated .gv-stepper .gv-step .gv-step-label:after{margin-top:calc(-.3125em + 0px)}.gv-activated .gv-stepper .gv-step .gv-step-label:after,.gv-activated .gv-stepper .gv-step .gv-step-label:before{content:"";display:block;height:0;width:0}.gv-activated .gv-stepper .gv-step.gv-step-current .gv-step-type{background-color:var(--color-primary);color:var(--color-button-fg-on)}.gv-activated .gv-stepper .gv-step.gv-step-done .gv-step-line{background-color:var(--color-state-focus)}.gv-activated .gv-stepper .gv-step.gv-step-done .gv-step-type{background-color:var(--color-state-active);cursor:pointer}.gv-activated .gv-stepper .gv-step.gv-step-done .gv-step-type .gv-step-nr{display:none}.gv-activated .gv-stepper .gv-step.gv-step-done .gv-step-label{cursor:pointer}@media (max-width:599px){.gv-activated .gv-stepper{--size-stepper-dot:32px;background-color:var(--color-overlay-dark);padding:0}.gv-activated .gv-stepper .gv-stepper-back{display:none}.gv-activated .gv-stepper .gv-stepper-button-close{cursor:pointer;display:block}.gv-activated .gv-stepper .gv-stepper-list{align-items:flex-start;background-color:var(--color-surface-dim);display:none;flex-direction:column;padding:var(--size-md) var(--size-lg)}.gv-activated .gv-stepper .gv-step{width:100%}.gv-activated .gv-stepper .gv-step:not(.gv-step-last){padding-bottom:var(--size-lg)}.gv-activated .gv-stepper .gv-step.gv-step-last{align-items:center;max-width:none}.gv-activated .gv-stepper .gv-step.gv-step-last .gv-step-content{align-items:center}.gv-activated .gv-stepper .gv-step .gv-step-line{bottom:0;height:var(--size-lg);left:calc(var(--size-stepper-dot)/2);width:1px;top:auto}.gv-activated .gv-stepper .gv-step .gv-step-content{align-items:center;flex-direction:row;flex-grow:1}.gv-activated .gv-stepper .gv-step .gv-step-type{height:var(--size-stepper-dot);width:var(--size-stepper-dot);font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-stepper .gv-step .gv-step-label{flex-grow:1}.gv-activated .gv-stepper.gv-stepper-open{bottom:0;left:0;position:fixed;right:0;top:var(--navigation-bar-height);z-index:900}.gv-activated .gv-stepper.gv-stepper-open .gv-stepper-collapsed{display:none}.gv-activated .gv-stepper.gv-stepper-open .gv-stepper-list{display:flex}}@media (min-width:600px){.gv-activated .gv-stepper .gv-stepper-button-close,.gv-activated .gv-stepper .gv-stepper-collapsed{display:none}}@media (min-width:600px) and (max-width:1279px){.gv-activated .gv-stepper{align-items:center}.gv-activated .gv-stepper .gv-step .gv-step-line{flex-grow:1;position:relative;top:auto;width:auto}.gv-activated .gv-stepper .gv-step,.gv-activated .gv-stepper .gv-step .gv-step-content{align-items:center;flex-direction:row}.gv-activated .gv-stepper .gv-step.gv-step-last{flex:0 1 auto;max-width:none}.gv-activated .gv-stepper .gv-step.gv-step-last .gv-step-content{align-items:center;flex-direction:row-reverse}.gv-activated .gv-stepper .gv-step.gv-step-last .gv-step-label{padding-left:var(--size-sm)}.gv-activated .gv-stepper .gv-step:not(.gv-step-last) .gv-step-label{padding-right:var(--size-sm)}.gv-activated .gv-stepper .gv-step:not(.gv-step-current) .gv-step-label{display:none}}.gv-activated .gv-stepper-vertical{align-items:flex-start;color:var(--color-body-on-alternative);counter-reset:list-number;display:flex;flex-direction:column;position:relative;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-stepper-vertical .gv-step{align-items:flex-start;display:inline-flex;gap:var(--size-sm);list-style:none;position:relative;width:100%}.gv-activated .gv-stepper-vertical .gv-step:not(:last-child){padding-bottom:var(--size-lg)}.gv-activated .gv-stepper-vertical .gv-step:not(:last-child):after{background-color:var(--color-border);bottom:0;content:"";height:auto;left:calc(var(--size-stepper-dot)/2);position:absolute;top:20px;width:1px}.gv-activated .gv-stepper-vertical .gv-step:before{align-items:center;background-color:var(--color-primary);border-radius:50%;color:var(--color-button-fg-on);content:counter(list-number);counter-increment:list-number;display:flex;flex-shrink:0;height:var(--size-stepper-dot);justify-content:center;padding-top:1px;width:var(--size-stepper-dot);font-size:10px;font-weight:var(--font-weight-semibold);letter-spacing:.04px;line-height:var(--line-height-body)}.gv-activated .gv-sticky-bar .gv-stepper{padding:0;align-items:center}.gv-activated .gv-sticky-bar .gv-stepper .gv-step .gv-step-line{flex-grow:1;position:relative;top:auto;width:auto}.gv-activated .gv-sticky-bar .gv-stepper .gv-step,.gv-activated .gv-sticky-bar .gv-stepper .gv-step .gv-step-content{align-items:center;flex-direction:row}.gv-activated .gv-sticky-bar .gv-stepper .gv-step.gv-step-last{flex:0 1 auto;max-width:none}.gv-activated .gv-sticky-bar .gv-stepper .gv-step.gv-step-last .gv-step-content{align-items:center;flex-direction:row-reverse}.gv-activated .gv-sticky-bar .gv-stepper .gv-step.gv-step-last .gv-step-label{padding-left:var(--size-sm)}.gv-activated .gv-sticky-bar .gv-stepper .gv-step:not(.gv-step-last) .gv-step-label{padding-right:var(--size-sm)}.gv-activated .gv-sticky-bar .gv-stepper .gv-step:not(.gv-step-current) .gv-step-label{display:none}.gv-activated .gv-sticky-bar{display:none}@media screen and (max-width:360px){.gv-activated .gv-sticky-bar .gv-sticky-content{padding-left:24px;padding-right:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-sticky-bar .gv-sticky-content{padding-left:calc(24px + 24*((100vw - 360px)/1080));padding-right:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-sticky-bar .gv-sticky-content{padding-left:48px;padding-right:48px}}@media (min-width:600px){.gv-activated .gv-sticky-bar{background-color:var(--color-surface-dim);box-shadow:var(--color-shadow-elevated);left:0;position:fixed;top:var(--navigation-bar-height);width:100%;z-index:900}.gv-activated .gv-sticky-bar.gv-sticky-visible{display:block}.gv-activated .gv-sticky-bar .gv-sticky-content{padding-bottom:var(--size-md);padding-top:var(--size-md);width:100%}}.gv-activated .gv-tab-list{--tab-color-text:var(--color-body-on-alternative);display:flex;max-width:100%;border-bottom:var(--size-border) solid var(--color-border)}.gv-activated .gv-tab-list .gv-tab{align-items:center;background:0 0;border:0;color:var(--tab-color-text);cursor:pointer;display:flex;flex:0 1 auto;flex-wrap:nowrap;gap:8px;height:54px;margin-bottom:calc(var(--size-border)*-1);min-width:0;padding:0 24px;text-decoration:none;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-tab-list .gv-tab.gv-tab-active{--tab-color-text:var(--color-body-on-default);border-bottom:var(--size-border) solid var(--color-primary);font-weight:var(--font-weight-semibold)}.gv-activated .gv-tab-list .gv-tab gv-icon{flex-shrink:0;height:var(--size-icon-sm);width:var(--size-icon-sm)}.gv-activated .gv-tab-list .gv-tab .gv-tab-content{display:block;flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-tab-list .gv-tab:hover .gv-tab-content{color:var(--color-body-on-default)}.gv-activated .gv-tab-list .gv-tab .gv-tab-counter{align-items:center;background-color:var(--color-surface-muted);border-radius:var(--border-radius);color:var(--color-body-on-alternative);display:flex;flex-shrink:0;height:var(--size-lg);justify-content:center;min-width:var(--size-lg);padding:0 var(--size-xs);font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:.048px;line-height:var(--line-height-body)}@media (max-width:599px){.gv-activated .gv-tab-select+.gv-tab-list{display:none}}@media (min-width:600px){.gv-activated .gv-tab-select{display:none}}.gv-activated .gv-tab-panel{display:none}.gv-activated .gv-tab-panel.gv-panel-active,.gv-activated .gv-tour-with-media .gv-tour-media img{display:block}.gv-activated .gv-rounded-tabs .gv-tab-bar{align-items:center;display:flex;gap:var(--size-sm);justify-content:space-between}.gv-activated .gv-rounded-tabs .gv-tab-bar .gv-tab-list{border:0;flex:0 1 auto;gap:var(--size-xs);min-width:0}.gv-activated .gv-rounded-tabs .gv-tab-bar .gv-tab-list .gv-tab{border:var(--size-border) solid var(--color-border);border-bottom:none;border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius)}.gv-activated .gv-rounded-tabs .gv-tab-bar .gv-tab-list .gv-tab.gv-tab-active{background-color:var(--color-surface-bright);border-bottom:none}.gv-activated .gv-rounded-tabs .gv-tab-bar .gv-tabs-addon{flex-shrink:0;padding:var(--size-sm)}.gv-activated .gv-rounded-tabs .gv-tab-panel{background:var(--color-surface-bright);border:var(--size-border) solid var(--color-border);border-radius:var(--border-radius);padding:var(--size-md)}@media (max-width:599px){.gv-activated .gv-rounded-tabs .gv-tab-bar{margin-bottom:var(--size-sm)}.gv-activated .gv-rounded-tabs .gv-tab-bar .gv-tab-list{display:none}}@media (min-width:600px){.gv-activated .gv-rounded-tabs .gv-tab-bar .gv-input-select{display:none}.gv-activated .gv-rounded-tabs .gv-tab-panel{border-top-left-radius:0}}.gv-activated gv-tile{display:inline-block;vertical-align:text-bottom;font-size:0;height:var(--size-tile-sm);width:var(--size-tile-sm)}.gv-activated gv-tile[size=md]{height:var(--size-tile-md);width:var(--size-tile-md)}.gv-activated gv-tile[size=lg]{height:var(--size-tile-lg);width:var(--size-tile-lg)}.gv-activated gv-tile[size=xl]{height:var(--size-tile-xl);width:var(--size-tile-xl)}.gv-activated .gv-toast{--toast-color-background:inherit;--toast-color-text:var(--color-body-on-default);align-items:center;background:var(--toast-color-background);border-radius:var(--notice-radius);color:var(--toast-color-text);display:flex;flex-wrap:nowrap;gap:var(--size-md);max-width:100%;overflow:hidden;padding:var(--size-sm) var(--size-lg);position:relative;width:300px}.gv-activated .gv-toast .gv-toast-content{flex-grow:1;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-toast .gv-toast-content>:not(:last-child){margin-bottom:var(--size-xs)}.gv-activated .gv-toast .gv-toast-title{font-weight:var(--font-weight-semibold)}.gv-activated .gv-toast .gv-toast-close{cursor:pointer;padding:var(--size-sm)}.gv-activated .gv-toast.gv-toast-alert{--toast-color-background:var(--color-signal-alert-light)}.gv-activated .gv-toast.gv-toast-warning{--toast-color-background:var(--color-signal-warning-light)}.gv-activated .gv-toast.gv-toast-success{--toast-color-background:var(--color-signal-success-light)}.gv-activated .gv-toast.gv-toast-info{--toast-color-background:var(--color-signal-info-light)}.gv-activated .gv-toast-container{box-sizing:content-box;display:flex;flex-direction:column-reverse;gap:var(--size-sm);padding:var(--size-lg);pointer-events:none;position:fixed;right:0;top:0;width:300px;z-index:999999}.gv-activated .gv-toast-container .gv-toast{opacity:0;pointer-events:all;transform:scale(.7) translateY(-30px);transition:all .25s}.gv-activated .gv-toast-container .gv-toast+.gv-toast{margin-bottom:-50px}.gv-activated .gv-toast-container .gv-toast.gv-visible{margin:0 0 var(--size-xs);opacity:1;transform:scale(1) translateY(0)}.gv-activated .gv-toast-container .gv-toast.gv-remove{opacity:0;transform:scale(1) translateY(0) translate(25px)}@media (max-width:599px){.gv-activated .gv-toast-container{bottom:0;flex-direction:column;max-width:100%;padding:var(--size-sm);top:auto}.gv-activated .gv-toast-container .gv-toast.gv-remove{transform:scale(1) translateY(25px) translate(0)}}.gv-activated .gv-to-do{border:1px solid var(--color-border-alt);border-radius:var(--border-radius)}.gv-activated .gv-to-do .gv-item{list-style:none;font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-to-do .gv-item:not(:last-child){border-bottom:1px solid var(--color-border-alt)}.gv-activated .gv-to-do .gv-item .gv-trigger{display:flex;gap:var(--size-md);padding:var(--size-md) var(--size-lg)0;text-align:left;text-decoration:none;width:100%}.gv-activated .gv-to-do .gv-item .gv-trigger gv-icon{margin-top:1px}.gv-activated .gv-to-do .gv-item .gv-trigger-content{display:flex;flex:1;flex-direction:row-reverse;gap:var(--size-sm);justify-content:flex-end}.gv-activated .gv-to-do .gv-item .gv-text{display:flex;flex-direction:column;flex-grow:1;gap:var(--size-sm);justify-content:center;min-height:26px}.gv-activated .gv-to-do .gv-item .gv-title{font-weight:var(--font-weight-semibold);font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-text-icon gv-icon,.gv-activated .gv-to-do .gv-item .gv-badge,.gv-activated .gv-to-do .gv-item gv-icon{flex-shrink:0}.gv-activated .gv-to-do.gv-task-list .gv-trigger{align-items:center;padding-bottom:var(--size-md)}.gv-activated .gv-to-do.gv-task-list .gv-trigger-content{align-items:center}.gv-activated .gv-to-do.gv-task-list .gv-description{color:var(--color-body-on-alternative)}.gv-activated .gv-to-do.gv-task-accordion .gv-item{padding-bottom:var(--size-md)}.gv-activated .gv-to-do.gv-task-accordion .gv-trigger.gv-expanded gv-icon{transform:rotate(180deg)}.gv-activated .gv-to-do.gv-task-accordion .gv-trigger-content{align-items:flex-start}.gv-activated .gv-to-do.gv-task-accordion .gv-body-content{padding:var(--size-md) var(--size-xl)0 var(--size-lg)}.gv-activated .gv-to-do.gv-task-accordion .gv-body-content>:not(:last-child){margin-bottom:16px}@media (max-width:599px){.gv-activated .gv-to-do .gv-trigger-content{flex-wrap:wrap}.gv-activated .gv-to-do .gv-trigger-content .gv-text{width:100%}}.gv-activated .gv-tooltip{--tooltip-max-width:200px;background:var(--color-surface-inverted);border-radius:var(--border-radius);color:var(--color-body-on-inverted);max-width:var(--tooltip-max-width);padding:var(--size-md);position:fixed;text-align:left;width:fit-content;z-index:200;font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-tooltip:before{background:var(--color-surface-inverted);content:"";-webkit-mask:url("data:image/svg+xml,%3csvg%20width='17'%20height='6'%20viewBox='0%200%2017%206'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23a)'%3e%3cpath%20d='M1.414%209.9a2%202%200%200%201%200-2.829l5.657-5.657a2%202%200%200%201%202.828%200l5.657%205.657a2%202%200%200%201%200%202.829L9.9%2015.555a2%202%200%200%201-2.828%200L1.414%209.9Z'%20fill='currentColor'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='a'%3e%3cpath%20fill='%23fff'%20d='M0%200h16.971v6H0z'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e")no-repeat 50% 50%;mask:url("data:image/svg+xml,%3csvg%20width='17'%20height='6'%20viewBox='0%200%2017%206'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23a)'%3e%3cpath%20d='M1.414%209.9a2%202%200%200%201%200-2.829l5.657-5.657a2%202%200%200%201%202.828%200l5.657%205.657a2%202%200%200%201%200%202.829L9.9%2015.555a2%202%200%200%201-2.828%200L1.414%209.9Z'%20fill='currentColor'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='a'%3e%3cpath%20fill='%23fff'%20d='M0%200h16.971v6H0z'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e")no-repeat 50% 50%;-webkit-mask-size:contain;mask-size:contain;position:absolute;width:17px;height:6px;transform-origin:center;z-index:-1}.gv-activated .gv-tooltip[class*=gv-arrow-top]{margin-top:6px}.gv-activated .gv-tooltip[class*=gv-arrow-top]:before{top:-6px}.gv-activated .gv-tooltip[class*=gv-arrow-bottom]{margin-bottom:6px}.gv-activated .gv-tooltip[class*=gv-arrow-bottom]:before{bottom:-6px;transform:rotate(180deg)}.gv-activated .gv-tooltip.gv-arrow-bottom-left:before,.gv-activated .gv-tooltip.gv-arrow-top-left:before{left:8px}.gv-activated .gv-tooltip.gv-arrow-bottom-right:before,.gv-activated .gv-tooltip.gv-arrow-top-right:before{right:8px}.gv-activated .gv-tooltip.gv-arrow-bottom-center:before{right:50%;transform:rotate(180deg) translate(-50%)}.gv-activated .gv-tooltip.gv-arrow-top-center:before{left:50%;transform:translate(-50%)}.gv-activated .gv-tooltip-container{display:inline-block;position:relative}.gv-activated .gv-tooltip-container .gv-tooltip{display:none;min-width:max-content;position:absolute}.gv-activated .gv-tooltip-container .gv-tooltip>*{max-width:var(--tooltip-max-width)}.gv-activated .gv-tooltip-container .gv-tooltip-button:focus+.gv-tooltip,.gv-activated .gv-tooltip-container:hover .gv-tooltip{display:block}.gv-activated .gv-tooltip-container[class*=gv-tooltip-top] .gv-tooltip{bottom:100%}.gv-activated .gv-tooltip-container[class*=gv-tooltip-bottom] .gv-tooltip{top:100%}.gv-activated .gv-tooltip-container.gv-tooltip-bottom-left .gv-tooltip,.gv-activated .gv-tooltip-container.gv-tooltip-top-left .gv-tooltip{left:50%;transform:translate(-16px)}.gv-activated .gv-tooltip-container.gv-tooltip-bottom-center .gv-tooltip,.gv-activated .gv-tooltip-container.gv-tooltip-top-center .gv-tooltip{left:50%;transform:translate(-50%)}.gv-activated .gv-tooltip-container.gv-tooltip-bottom-right .gv-tooltip,.gv-activated .gv-tooltip-container.gv-tooltip-top-right .gv-tooltip{right:50%;transform:translate(16px)}.gv-activated .gv-tour,.gv-activated .gv-tour-with-media{display:flex;position:relative;z-index:200}.gv-activated .gv-tour{background:var(--color-surface-inverted);border-radius:var(--border-radius);color:var(--color-body-on-inverted);flex-direction:column;gap:var(--size-md);padding:var(--size-lg);width:300px;font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-tour:before{background:var(--color-surface-inverted);content:"";-webkit-mask:url("data:image/svg+xml,%3csvg%20width='27'%20height='11'%20viewBox='0%200%2027%2011'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23a)'%3e%3cpath%20d='M11.923%202.024a2%202%200%200%201%203.154%200l7.597%209.746c1.024%201.314.088%203.23-1.577%203.23H5.903c-1.665%200-2.6-1.916-1.577-3.23l7.597-9.746Z'%20fill='currentColor'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='a'%3e%3cpath%20d='M0%204a4%204%200%200%201%204-4h19a4%204%200%200%201%204%204v3a4%204%200%200%201-4%204H4a4%204%200%200%201-4-4V4Z'%20fill='currentColor'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e")no-repeat 50% 50%;mask:url("data:image/svg+xml,%3csvg%20width='27'%20height='11'%20viewBox='0%200%2027%2011'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23a)'%3e%3cpath%20d='M11.923%202.024a2%202%200%200%201%203.154%200l7.597%209.746c1.024%201.314.088%203.23-1.577%203.23H5.903c-1.665%200-2.6-1.916-1.577-3.23l7.597-9.746Z'%20fill='currentColor'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='a'%3e%3cpath%20d='M0%204a4%204%200%200%201%204-4h19a4%204%200%200%201%204%204v3a4%204%200%200%201-4%204H4a4%204%200%200%201-4-4V4Z'%20fill='currentColor'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e")no-repeat 50% 50%;-webkit-mask-size:contain;mask-size:contain;position:absolute;width:27px;height:11px;transform-origin:center}.gv-activated .gv-tour[class*=gv-arrow-top],.gv-activated .gv-tour[class*=gv-arrow-top]+.gv-tour-media{margin-top:11px}.gv-activated .gv-tour[class*=gv-arrow-top]:before{top:-11px}.gv-activated .gv-tour[class*=gv-arrow-bottom],.gv-activated .gv-tour[class*=gv-arrow-bottom]+.gv-tour-media{margin-bottom:11px}.gv-activated .gv-tour[class*=gv-arrow-bottom]:before{bottom:-11px;transform:rotate(180deg)}.gv-activated .gv-tour.gv-arrow-bottom-left:before,.gv-activated .gv-tour.gv-arrow-top-left:before{left:24px}.gv-activated .gv-tour.gv-arrow-bottom-right:before,.gv-activated .gv-tour.gv-arrow-top-right:before{right:24px}.gv-activated .gv-tour.gv-arrow-left{margin-left:11px}.gv-activated .gv-tour.gv-arrow-left:before{left:-19px;top:24px;transform:rotate(270deg)}.gv-activated .gv-tour.gv-arrow-right{margin-right:11px}.gv-activated .gv-tour.gv-arrow-right:before{right:-19px;top:24px;transform:rotate(90deg)}.gv-activated .gv-tour .gv-tour-steps{display:flex;gap:var(--size-xs);font-size:10px;font-weight:var(--font-weight-medium);letter-spacing:.04px;line-height:var(--line-height-body)}.gv-activated .gv-tour .gv-tour-body{padding-right:var(--size-icon-md);font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-tour .gv-tour-body>:not(:last-child){margin-bottom:var(--size-xs)}.gv-activated .gv-tour .gv-button-group .gv-button,.gv-activated .gv-tour .gv-tour-body .gv-tour-title{font-weight:var(--font-weight-semibold);font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-tour .gv-button-group{--form-element-height:30px}.gv-activated .gv-tour .gv-button-group .gv-button{font-size:12px;letter-spacing:.048px}.gv-activated .gv-tour .gv-button-group .gv-button-cancel{color:var(--color-body-on-inverted)}.gv-activated .gv-tour .gv-tour-close{cursor:pointer;padding:var(--size-sm);position:absolute;right:12px;top:12px}.gv-activated .gv-tour-with-media{align-items:stretch;flex-flow:nowrap row}.gv-activated .gv-tour-with-media .gv-tour-media{overflow:hidden;position:relative;width:300px}.gv-activated .gv-tour-with-media .gv-tour-media iframe{border:0;max-width:100%}@media (max-width:767px){.gv-activated .gv-tour-with-media .gv-tour-media{display:none}}@media (min-width:768px){.gv-activated .gv-tour-with-media .gv-arrow-bottom-left.gv-tour,.gv-activated .gv-tour-with-media .gv-arrow-left.gv-tour,.gv-activated .gv-tour-with-media .gv-arrow-top-left.gv-tour{border-top-right-radius:0;border-bottom-right-radius:0}.gv-activated .gv-tour-with-media .gv-arrow-bottom-left+.gv-tour-media,.gv-activated .gv-tour-with-media .gv-arrow-left+.gv-tour-media,.gv-activated .gv-tour-with-media .gv-arrow-top-left+.gv-tour-media{border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-tour-with-media .gv-arrow-bottom-right.gv-tour,.gv-activated .gv-tour-with-media .gv-arrow-right.gv-tour,.gv-activated .gv-tour-with-media .gv-arrow-top-right.gv-tour{border-top-left-radius:0;border-bottom-left-radius:0}.gv-activated .gv-tour-with-media .gv-arrow-bottom-right+.gv-tour-media,.gv-activated .gv-tour-with-media .gv-arrow-right+.gv-tour-media,.gv-activated .gv-tour-with-media .gv-arrow-top-right+.gv-tour-media{border-top-left-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius);order:-1}}.gv-activated .gv-font-mono{font-family:JetBrains Mono,monospace}.gv-activated .gv-heading-xxxl{font-weight:var(--font-weight-heading);line-height:var(--line-height-heading-xxxl)}@media screen and (max-width:360px){.gv-activated .gv-heading-xxxl{font-size:calc(var(--font-size-heading-xxxl-min)*1px);letter-spacing:calc(var(--letterspacing-heading-xxxl-min)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-heading-xxxl{font-size:calc(calc(var(--font-size-heading-xxxl-min)*1px) + (var(--font-size-heading-xxxl-max) - var(--font-size-heading-xxxl-min))*((100vw - 360px)/1080));letter-spacing:calc(calc(var(--letterspacing-heading-xxxl-min)*1px) + (var(--letterspacing-heading-xxxl-max) - var(--letterspacing-heading-xxxl-min))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-heading-xxxl{font-size:calc(var(--font-size-heading-xxxl-max)*1px);letter-spacing:calc(var(--letterspacing-heading-xxxl-max)*1px)}}.gv-activated .gv-heading-xxl,.gv-activated h1{font-weight:var(--font-weight-heading);line-height:var(--line-height-heading-xxl)}@media screen and (max-width:360px){.gv-activated .gv-heading-xxl,.gv-activated h1{font-size:calc(var(--font-size-heading-xxl-min)*1px);letter-spacing:calc(var(--letterspacing-heading-xxl-min)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-heading-xxl,.gv-activated h1{font-size:calc(calc(var(--font-size-heading-xxl-min)*1px) + (var(--font-size-heading-xxl-max) - var(--font-size-heading-xxl-min))*((100vw - 360px)/1080));letter-spacing:calc(calc(var(--letterspacing-heading-xxl-min)*1px) + (var(--letterspacing-heading-xxl-max) - var(--letterspacing-heading-xxl-min))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-heading-xxl,.gv-activated h1{font-size:calc(var(--font-size-heading-xxl-max)*1px);letter-spacing:calc(var(--letterspacing-heading-xxl-max)*1px)}}.gv-activated .gv-heading-xl,.gv-activated h2{font-weight:var(--font-weight-heading);line-height:var(--line-height-heading-xl)}@media screen and (max-width:360px){.gv-activated .gv-heading-xl,.gv-activated h2{font-size:calc(var(--font-size-heading-xl-min)*1px);letter-spacing:calc(var(--letterspacing-heading-xl-min)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-heading-xl,.gv-activated h2{font-size:calc(calc(var(--font-size-heading-xl-min)*1px) + (var(--font-size-heading-xl-max) - var(--font-size-heading-xl-min))*((100vw - 360px)/1080));letter-spacing:calc(calc(var(--letterspacing-heading-xl-min)*1px) + (var(--letterspacing-heading-xl-max) - var(--letterspacing-heading-xl-min))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-heading-xl,.gv-activated h2{font-size:calc(var(--font-size-heading-xl-max)*1px);letter-spacing:calc(var(--letterspacing-heading-xl-max)*1px)}}.gv-activated .gv-heading-lg,.gv-activated h3{font-weight:var(--font-weight-heading);line-height:var(--line-height-heading-lg)}@media screen and (max-width:360px){.gv-activated .gv-heading-lg,.gv-activated h3{font-size:calc(var(--font-size-heading-lg-min)*1px);letter-spacing:calc(var(--letterspacing-heading-lg-min)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-heading-lg,.gv-activated h3{font-size:calc(calc(var(--font-size-heading-lg-min)*1px) + (var(--font-size-heading-lg-max) - var(--font-size-heading-lg-min))*((100vw - 360px)/1080));letter-spacing:calc(calc(var(--letterspacing-heading-lg-min)*1px) + (var(--letterspacing-heading-lg-max) - var(--letterspacing-heading-lg-min))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-heading-lg,.gv-activated h3{font-size:calc(var(--font-size-heading-lg-max)*1px);letter-spacing:calc(var(--letterspacing-heading-lg-max)*1px)}}.gv-activated .gv-heading-md,.gv-activated h4{font-weight:var(--font-weight-heading);line-height:var(--line-height-heading-md)}@media screen and (max-width:360px){.gv-activated .gv-heading-md,.gv-activated h4{font-size:calc(var(--font-size-heading-md-min)*1px);letter-spacing:calc(var(--letterspacing-heading-md-min)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-heading-md,.gv-activated h4{font-size:calc(calc(var(--font-size-heading-md-min)*1px) + (var(--font-size-heading-md-max) - var(--font-size-heading-md-min))*((100vw - 360px)/1080));letter-spacing:calc(calc(var(--letterspacing-heading-md-min)*1px) + (var(--letterspacing-heading-md-max) - var(--letterspacing-heading-md-min))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-heading-md,.gv-activated h4{font-size:calc(var(--font-size-heading-md-max)*1px);letter-spacing:calc(var(--letterspacing-heading-md-max)*1px)}}.gv-activated .gv-heading-sm,.gv-activated h5{font-weight:var(--font-weight-heading);line-height:var(--line-height-heading-sm)}@media screen and (max-width:360px){.gv-activated .gv-heading-sm,.gv-activated h5{font-size:calc(var(--font-size-heading-sm-min)*1px);letter-spacing:calc(var(--letterspacing-heading-sm-min)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-heading-sm,.gv-activated h5{font-size:calc(calc(var(--font-size-heading-sm-min)*1px) + (var(--font-size-heading-sm-max) - var(--font-size-heading-sm-min))*((100vw - 360px)/1080));letter-spacing:calc(calc(var(--letterspacing-heading-sm-min)*1px) + (var(--letterspacing-heading-sm-max) - var(--letterspacing-heading-sm-min))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-heading-sm,.gv-activated h5{font-size:calc(var(--font-size-heading-sm-max)*1px);letter-spacing:calc(var(--letterspacing-heading-sm-max)*1px)}}.gv-activated .gv-heading-xs,.gv-activated h6{font-weight:var(--font-weight-heading);line-height:var(--line-height-heading-xs)}@media screen and (max-width:360px){.gv-activated .gv-heading-xs,.gv-activated h6{font-size:calc(var(--font-size-heading-xs-min)*1px);letter-spacing:calc(var(--letterspacing-heading-xs-min)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-heading-xs,.gv-activated h6{font-size:calc(calc(var(--font-size-heading-xs-min)*1px) + (var(--font-size-heading-xs-max) - var(--font-size-heading-xs-min))*((100vw - 360px)/1080));letter-spacing:calc(calc(var(--letterspacing-heading-xs-min)*1px) + (var(--letterspacing-heading-xs-max) - var(--letterspacing-heading-xs-min))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-heading-xs,.gv-activated h6{font-size:calc(var(--font-size-heading-xs-max)*1px);letter-spacing:calc(var(--letterspacing-heading-xs-max)*1px)}}.gv-activated .gv-text-xl{letter-spacing:0;line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-text-xl{font-size:16px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-text-xl{font-size:calc(16px + 8*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-text-xl{font-size:24px}}.gv-activated .gv-text-lg{line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated .gv-text-lg{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-text-lg{font-size:calc(14px + 4*((100vw - 360px)/1080));letter-spacing:calc(.035px + -.035*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-text-lg{font-size:18px;letter-spacing:0}}.gv-activated,.gv-activated .gv-text-md{line-height:var(--line-height-body)}@media screen and (max-width:360px){.gv-activated,.gv-activated .gv-text-md{font-size:14px;letter-spacing:.035px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated,.gv-activated .gv-text-md{font-size:calc(14px + 2*((100vw - 360px)/1080));letter-spacing:calc(.035px + .045*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated,.gv-activated .gv-text-md{font-size:16px;letter-spacing:.08px}}.gv-activated .gv-storefront-section .gv-section-tag .gv-tag-label,.gv-activated .gv-text-sm{font-size:14px;letter-spacing:.035px;line-height:var(--line-height-body)}.gv-activated .gv-caption-lg,.gv-activated .gv-caption-sm{font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:.048px;line-height:var(--line-height-body)}.gv-activated .gv-caption-sm{font-size:10px;letter-spacing:.04px}.gv-activated a{font-weight:var(--font-weight-regular);text-decoration:underline}.gv-activated a,.gv-activated a:hover{color:var(--color-link)}.gv-activated .gv-text-bold,.gv-activated b,.gv-activated strong{font-weight:var(--font-weight-semibold)}.gv-activated .gv-text-icon{display:inline-flex;gap:4px}.gv-activated .gv-text-max{max-width:var(--text-max-width)}.gv-activated{--color-section-accent:var(--color-section-accent-on-bright)}.gv-activated .gv-storefront-section{--font-size-heading-xl-max:36;--font-size-heading-lg-max:28;--font-size-heading-md-max:22;--font-size-heading-sm-max:20;--font-size-heading-xs-max:18;--font-weight-heading:var(--font-weight-heading-storefront);--line-height-heading-xxxl:1.4;--line-height-heading-xxl:1.5;--line-height-heading-xl:1.66;--line-height-heading-lg:1.92;--line-height-heading-md:1.73;--line-height-heading-sm:1.73;--line-height-heading-xs:1.73;--letterspacing-heading-xxxl-max:-1.2;--letterspacing-heading-xxxl-min:-.52;--letterspacing-heading-xxl-max:-.96;--letterspacing-heading-xxl-min:-.44;--letterspacing-heading-xl-max:-.72;--letterspacing-heading-xl-min:-.36;--letterspacing-heading-lg-max:-.56;--letterspacing-heading-lg-min:-.32;--letterspacing-heading-md-max:-.44;--letterspacing-heading-md-min:-.32;--letterspacing-heading-sm-max:-.4;--letterspacing-heading-sm-min:-.28;--letterspacing-heading-xs-max:-.36;--letterspacing-heading-xs-min:-.28}.gv-activated .gv-storefront-section .gv-section-tag{align-items:center;color:var(--color-section-accent);display:flex;gap:var(--size-sm)}.gv-activated .gv-storefront-section .gv-section-tag .gv-tag-label{flex:1;font-weight:var(--font-weight-semibold);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-section-content{margin-left:auto;margin-right:auto;max-width:1536px}.gv-activated .gv-surface-dim{--color-section-accent:var(--color-section-accent-on-dim)}.gv-activated .gv-section-surface-100{--color-section-accent:var(--color-section-accent-on-100)}.gv-activated .gv-section-surface-100,.gv-activated .gv-section-surface-200,.gv-activated .gv-section-surface-300{--color-body-on-default:var(--color-on-fixed-black);--color-body-on-alternative:var(--color-on-fixed-alternative)}.gv-activated .gv-section-surface-200{--color-section-accent:var(--color-section-accent-on-200)}.gv-activated .gv-section-surface-300{--color-section-accent:var(--color-section-accent-on-300)}.gv-activated .gv-section-surface-product-default{--color-body-on-default:var(--color-section-body-on-product-default);--color-body-on-alternative:var(--color-section-body-on-alternative-product-default);--color-section-accent:var(--color-section-accent-on-product-default)}.gv-activated .gv-section-body .gv-text>:not(:last-child),.gv-activated .gv-section-body>:not(:last-child){margin-bottom:var(--size-lg)}.gv-activated .gv-section-body .gv-content{display:flex;flex-flow:nowrap column;row-gap:var(--size-sm)}@media screen and (max-width:360px){.gv-activated .gv-section-body .gv-content{column-gap:calc(var(--section-gap-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-section-body .gv-content{column-gap:calc(calc(var(--section-gap-min-value)*1px) + (var(--section-gap-max-value) - var(--section-gap-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-section-body .gv-content{column-gap:calc(var(--section-gap-max-value)*1px)}}.gv-activated .gv-section-body .gv-title{flex:1}.gv-activated .gv-section-body .gv-text{flex:1;padding-top:var(--size-sm)}.gv-activated .gv-section-body .gv-description>:not(:last-child){margin-bottom:var(--size-md)}@media (min-width:768px){.gv-activated .gv-section-body .gv-content{flex-direction:row}}@media screen and (max-width:360px){.gv-activated .gv-section-comparison-table .gv-section-content>:not(:last-child),.gv-activated .gv-section-product-table .gv-section-content>:not(:last-child){margin-bottom:calc(var(--size-fluid-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-section-comparison-table .gv-section-content>:not(:last-child),.gv-activated .gv-section-product-table .gv-section-content>:not(:last-child){margin-bottom:calc(calc(var(--size-fluid-min-value)*1px) + (var(--size-fluid-max-value) - var(--size-fluid-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-section-comparison-table .gv-section-content>:not(:last-child),.gv-activated .gv-section-product-table .gv-section-content>:not(:last-child){margin-bottom:calc(var(--size-fluid-max-value)*1px)}}.gv-activated .gv-section-comparison-table .gv-features-table,.gv-activated .gv-section-product-table .gv-features-table{--slider-px-max:var(--section-x-max-value);--slider-px-min:var(--section-x-min-value)}.gv-flex-row-sm,.gv-flex-row-xs{display:flex;flex-direction:row;gap:4px}.gv-flex-row-sm{gap:8px}.gv-flex-row-lg,.gv-flex-row-md{display:flex;flex-direction:row;gap:16px}.gv-flex-row-lg{gap:24px}.gv-flex-column-sm,.gv-flex-column-xs{display:flex;flex-direction:column;gap:4px}.gv-flex-column-sm{gap:8px}.gv-flex-column-lg,.gv-flex-column-md{display:flex;flex-direction:column;gap:16px}.gv-flex-column-lg{gap:24px}.gv-activated .gv-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.gv-activated .gv-surface-bright{background-color:var(--color-surface-bright)}.gv-activated .gv-surface-dim{background-color:var(--color-surface-dim)}.gv-activated .gv-surface-muted{background-color:var(--color-surface-muted)}.gv-activated .gv-surface-form{background-color:var(--color-surface-form)}.gv-activated .gv-surface-highlight{background-color:var(--color-surface-highlight)}.gv-activated .gv-section-surface-100{background-color:var(--color-section-surface-100)}.gv-activated .gv-section-surface-200{background-color:var(--color-section-surface-200)}.gv-activated .gv-section-surface-300{background-color:var(--color-section-surface-300)}.gv-activated .gv-section-surface-product-default{background-color:var(--color-section-surface-product-default)}.gv-activated .gv-border-form{border:1px solid var(--color-border-form)}.gv-activated .gv-inline-flex{display:inline-flex}.gv-activated .gv-flex-1{flex:1 1 0}.gv-activated .gv-flex-auto{flex:1 1 auto}.gv-activated .gv-flex-none{flex:none}.gv-activated .gv-flex-shrink{flex-shrink:1}.gv-activated .gv-flex-shrink-0{flex-shrink:0}.gv-activated .gv-flex-grow{flex-grow:1}.gv-activated .gv-flex-grow-0{flex-grow:0}.gv-activated .gv-flex-wrap{flex-wrap:wrap}.gv-activated .gv-flex-nowrap{flex-wrap:nowrap}@media screen and (max-width:360px){.gv-activated .gv-gap-fluid{gap:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-gap-fluid{gap:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-gap-fluid{gap:48px}}@media screen and (max-width:360px){.gv-activated .gv-gap-section{gap:calc(var(--section-gap-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-gap-section{gap:calc(calc(var(--section-gap-min-value)*1px) + (var(--section-gap-max-value) - var(--section-gap-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-gap-section{gap:calc(var(--section-gap-max-value)*1px)}}.gv-activated .gv-overflow-auto{overflow:auto}.gv-activated .gv-overflow-x-auto{overflow-x:auto}.gv-activated .gv-overflow-y-auto{overflow-y:auto}.gv-activated .gv-overflow-hidden{overflow:hidden}.gv-activated .gv-overflow-x-hidden{overflow-x:hidden}.gv-activated .gv-overflow-y-hidden{overflow-y:hidden}.gv-activated .gv-overflow-scroll{overflow:scroll}.gv-activated .gv-overflow-x-scroll{overflow-x:scroll}.gv-activated .gv-overflow-y-scroll{overflow-y:scroll}.gv-activated .gv-pos-fixed{position:fixed}.gv-activated .gv-pos-absolute{position:absolute}.gv-activated .gv-pos-relative{position:relative}.gv-activated .gv-pos-sticky{position:sticky}.gv-activated .gv-pos-bottom{bottom:0}.gv-activated .gv-pos-left{left:0}.gv-activated .gv-pos-right{right:0}.gv-activated .gv-pos-top{top:0}.gv-activated .gv-object-pos-bottom{object-position:bottom}.gv-activated .gv-object-pos-center{object-position:center}.gv-activated .gv-object-pos-left{object-position:left}.gv-activated .gv-object-pos-left-bottom{object-position:left bottom}.gv-activated .gv-object-pos-left-top{object-position:left top}.gv-activated .gv-object-pos-right{object-position:right}.gv-activated .gv-object-pos-right-bottom{object-position:right bottom}.gv-activated .gv-object-pos-right-top{object-position:right top}.gv-activated .gv-object-pos-top{object-position:top}.gv-activated .gv-object-contain{object-fit:contain}.gv-activated .gv-object-cover{object-fit:cover}.gv-activated .gv-object-fill{object-fit:fill}.gv-activated .gv-aspect-video{aspect-ratio:16/9}.gv-activated .gv-shadow-subtle{box-shadow:var(--color-shadow-subtle)}.gv-activated .gv-shadow-elevated{box-shadow:var(--color-shadow-elevated)}.gv-activated .gv-h-full{height:100%}.gv-activated .gv-w-auto{width:auto}.gv-activated .gv-w-full{width:100%}.gv-activated .gv-w-max-container{max-width:1536px}.gv-activated .gv-w-max-form{max-width:var(--form-max-width)}.gv-activated .gv-text-on-default{color:var(--color-body-on-default)}.gv-activated .gv-text-on-alternative{color:var(--color-body-on-alternative)}.gv-activated .gv-text-on-inverted{color:var(--color-body-on-inverted)}.gv-activated .gv-text-primary{color:var(--color-primary)}.gv-activated .gv-text-secondary{color:var(--color-secondary)}.gv-activated .gv-text-uppercase{text-transform:uppercase}.gv-activated .gv-text-capitalize{text-transform:capitalize}.gv-activated .gv-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gv-activated .gv-white-space-nowrap{white-space:nowrap}.gv-activated .gv-break-word{overflow-wrap:break-word}.gv-activated .gv-break-all{word-break:break-all}.gv-activated .gv-text-trim:before{margin-bottom:calc(-.375em + 0px)}.gv-activated .gv-text-trim:after{margin-top:calc(-.3125em + 0px)}.gv-activated .gv-text-trim:after,.gv-activated .gv-text-trim:before{content:"";display:block;height:0;width:0}.gv-activated .gv-pt-nav,.gv-activated.gv-pt-nav{padding-top:var(--navigation-bar-height)}@media screen and (max-width:360px){.gv-activated .gv-m-fluid{margin:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-m-fluid{margin:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-m-fluid{margin:48px}}@media screen and (max-width:360px){.gv-activated .gv-mt-fluid{margin-top:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-mt-fluid{margin-top:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-mt-fluid{margin-top:48px}}@media screen and (max-width:360px){.gv-activated .gv-mb-fluid{margin-bottom:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-mb-fluid{margin-bottom:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-mb-fluid{margin-bottom:48px}}@media screen and (max-width:360px){.gv-activated .gv-ml-fluid{margin-left:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-ml-fluid{margin-left:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-ml-fluid{margin-left:48px}}@media screen and (max-width:360px){.gv-activated .gv-mr-fluid{margin-right:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-mr-fluid{margin-right:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-mr-fluid{margin-right:48px}}@media screen and (max-width:360px){.gv-activated .gv-mx-fluid{margin-left:24px;margin-right:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-mx-fluid{margin-left:calc(24px + 24*((100vw - 360px)/1080));margin-right:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-mx-fluid{margin-left:48px;margin-right:48px}}@media screen and (max-width:360px){.gv-activated .gv-my-fluid{margin-top:24px;margin-bottom:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-my-fluid{margin-top:calc(24px + 24*((100vw - 360px)/1080));margin-bottom:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-my-fluid{margin-top:48px;margin-bottom:48px}}@media screen and (max-width:360px){.gv-activated .gv-m-section{margin:calc(var(--section-y-min-value)*1px) calc(var(--section-x-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-m-section{margin:calc(calc(var(--section-y-min-value)*1px) + (var(--section-y-max-value) - var(--section-y-min-value))*((100vw - 360px)/1080)) calc(calc(var(--section-x-min-value)*1px) + (var(--section-x-max-value) - var(--section-x-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-m-section{margin:calc(var(--section-y-max-value)*1px) calc(var(--section-x-max-value)*1px)}}@media screen and (max-width:360px){.gv-activated .gv-mt-section{margin-top:calc(var(--section-y-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-mt-section{margin-top:calc(calc(var(--section-y-min-value)*1px) + (var(--section-y-max-value) - var(--section-y-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-mt-section{margin-top:calc(var(--section-y-max-value)*1px)}}@media screen and (max-width:360px){.gv-activated .gv-mb-section{margin-bottom:calc(var(--section-y-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-mb-section{margin-bottom:calc(calc(var(--section-y-min-value)*1px) + (var(--section-y-max-value) - var(--section-y-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-mb-section{margin-bottom:calc(var(--section-y-max-value)*1px)}}@media screen and (max-width:360px){.gv-activated .gv-ml-section{margin-left:calc(var(--section-x-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-ml-section{margin-left:calc(calc(var(--section-x-min-value)*1px) + (var(--section-x-max-value) - var(--section-x-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-ml-section{margin-left:calc(var(--section-x-max-value)*1px)}}@media screen and (max-width:360px){.gv-activated .gv-mr-section{margin-right:calc(var(--section-x-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-mr-section{margin-right:calc(calc(var(--section-x-min-value)*1px) + (var(--section-x-max-value) - var(--section-x-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-mr-section{margin-right:calc(var(--section-x-max-value)*1px)}}@media screen and (max-width:360px){.gv-activated .gv-mx-section{margin-left:calc(var(--section-x-min-value)*1px);margin-right:calc(var(--section-x-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-mx-section{margin-left:calc(calc(var(--section-x-min-value)*1px) + (var(--section-x-max-value) - var(--section-x-min-value))*((100vw - 360px)/1080));margin-right:calc(calc(var(--section-x-min-value)*1px) + (var(--section-x-max-value) - var(--section-x-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-mx-section{margin-left:calc(var(--section-x-max-value)*1px);margin-right:calc(var(--section-x-max-value)*1px)}}@media screen and (max-width:360px){.gv-activated .gv-my-section{margin-top:calc(var(--section-y-min-value)*1px);margin-bottom:calc(var(--section-y-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-my-section{margin-top:calc(calc(var(--section-y-min-value)*1px) + (var(--section-y-max-value) - var(--section-y-min-value))*((100vw - 360px)/1080));margin-bottom:calc(calc(var(--section-y-min-value)*1px) + (var(--section-y-max-value) - var(--section-y-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-my-section{margin-top:calc(var(--section-y-max-value)*1px);margin-bottom:calc(var(--section-y-max-value)*1px)}}@media screen and (max-width:360px){.gv-activated .gv-p-fluid{padding:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-p-fluid{padding:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-p-fluid{padding:48px}}@media screen and (max-width:360px){.gv-activated .gv-pt-fluid{padding-top:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-pt-fluid{padding-top:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-pt-fluid{padding-top:48px}}@media screen and (max-width:360px){.gv-activated .gv-pb-fluid{padding-bottom:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-pb-fluid{padding-bottom:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-pb-fluid{padding-bottom:48px}}@media screen and (max-width:360px){.gv-activated .gv-pl-fluid{padding-left:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-pl-fluid{padding-left:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-pl-fluid{padding-left:48px}}@media screen and (max-width:360px){.gv-activated .gv-pr-fluid{padding-right:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-pr-fluid{padding-right:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-pr-fluid{padding-right:48px}}@media screen and (max-width:360px){.gv-activated .gv-px-fluid{padding-left:24px;padding-right:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-px-fluid{padding-left:calc(24px + 24*((100vw - 360px)/1080));padding-right:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-px-fluid{padding-left:48px;padding-right:48px}}@media screen and (max-width:360px){.gv-activated .gv-py-fluid{padding-top:24px;padding-bottom:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-py-fluid{padding-top:calc(24px + 24*((100vw - 360px)/1080));padding-bottom:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-py-fluid{padding-top:48px;padding-bottom:48px}}@media screen and (max-width:360px){.gv-activated .gv-p-section{padding:calc(var(--section-y-min-value)*1px) calc(var(--section-x-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-p-section{padding:calc(calc(var(--section-y-min-value)*1px) + (var(--section-y-max-value) - var(--section-y-min-value))*((100vw - 360px)/1080)) calc(calc(var(--section-x-min-value)*1px) + (var(--section-x-max-value) - var(--section-x-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-p-section{padding:calc(var(--section-y-max-value)*1px) calc(var(--section-x-max-value)*1px)}}@media screen and (max-width:360px){.gv-activated .gv-pt-section{padding-top:calc(var(--section-y-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-pt-section{padding-top:calc(calc(var(--section-y-min-value)*1px) + (var(--section-y-max-value) - var(--section-y-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-pt-section{padding-top:calc(var(--section-y-max-value)*1px)}}@media screen and (max-width:360px){.gv-activated .gv-pb-section{padding-bottom:calc(var(--section-y-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-pb-section{padding-bottom:calc(calc(var(--section-y-min-value)*1px) + (var(--section-y-max-value) - var(--section-y-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-pb-section{padding-bottom:calc(var(--section-y-max-value)*1px)}}@media screen and (max-width:360px){.gv-activated .gv-pl-section{padding-left:calc(var(--section-x-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-pl-section{padding-left:calc(calc(var(--section-x-min-value)*1px) + (var(--section-x-max-value) - var(--section-x-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-pl-section{padding-left:calc(var(--section-x-max-value)*1px)}}@media screen and (max-width:360px){.gv-activated .gv-pr-section{padding-right:calc(var(--section-x-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-pr-section{padding-right:calc(calc(var(--section-x-min-value)*1px) + (var(--section-x-max-value) - var(--section-x-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-pr-section{padding-right:calc(var(--section-x-max-value)*1px)}}@media screen and (max-width:360px){.gv-activated .gv-px-section{padding-left:calc(var(--section-x-min-value)*1px);padding-right:calc(var(--section-x-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-px-section{padding-left:calc(calc(var(--section-x-min-value)*1px) + (var(--section-x-max-value) - var(--section-x-min-value))*((100vw - 360px)/1080));padding-right:calc(calc(var(--section-x-min-value)*1px) + (var(--section-x-max-value) - var(--section-x-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-px-section{padding-left:calc(var(--section-x-max-value)*1px);padding-right:calc(var(--section-x-max-value)*1px)}}@media screen and (max-width:360px){.gv-activated .gv-py-section{padding-top:calc(var(--section-y-min-value)*1px);padding-bottom:calc(var(--section-y-min-value)*1px)}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-py-section{padding-top:calc(calc(var(--section-y-min-value)*1px) + (var(--section-y-max-value) - var(--section-y-min-value))*((100vw - 360px)/1080));padding-bottom:calc(calc(var(--section-y-min-value)*1px) + (var(--section-y-max-value) - var(--section-y-min-value))*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-py-section{padding-top:calc(var(--section-y-max-value)*1px);padding-bottom:calc(var(--section-y-max-value)*1px)}}.gv-activated .gv-border{border:1px solid var(--color-border)}.gv-activated .gv-border-t{border-top:1px solid var(--color-border)}.gv-activated .gv-border-b{border-bottom:1px solid var(--color-border)}.gv-activated .gv-border-l{border-left:1px solid var(--color-border)}.gv-activated .gv-border-r{border-right:1px solid var(--color-border)}.gv-activated .gv-border-alt{border:1px solid var(--color-border-alt)}.gv-activated .gv-border-alt-t{border-top:1px solid var(--color-border-alt)}.gv-activated .gv-border-alt-b{border-bottom:1px solid var(--color-border-alt)}.gv-activated .gv-border-alt-l{border-left:1px solid var(--color-border-alt)}.gv-activated .gv-border-alt-r{border-right:1px solid var(--color-border-alt)}.gv-activated .gv-border-0{border:0!important}.gv-activated .gv-radius{border-radius:var(--border-radius)}.gv-activated .gv-radius-tl{border-top-left-radius:var(--border-radius)}.gv-activated .gv-radius-tr{border-top-right-radius:var(--border-radius)}.gv-activated .gv-radius-bl{border-bottom-left-radius:var(--border-radius)}.gv-activated .gv-radius-br{border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-radius-t{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius)}.gv-activated .gv-radius-r{border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-radius-b{border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-radius-l{border-top-left-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius)}.gv-activated .gv-radius-0{border-radius:0!important}.gv-activated .gv-flex-row{flex-direction:row}.gv-activated .gv-flex-row-reverse{flex-direction:row-reverse}.gv-activated .gv-flex-col{flex-direction:column}.gv-activated .gv-flex-col-reverse{flex-direction:column-reverse}.gv-activated .gv-content-center{align-content:center}.gv-activated .gv-items-start{align-items:flex-start}.gv-activated .gv-items-end{align-items:flex-end}.gv-activated .gv-items-center{align-items:center}.gv-activated .gv-items-baseline{align-items:baseline}.gv-activated .gv-items-stretch{align-items:stretch}.gv-activated .gv-justify-start{justify-content:flex-start}.gv-activated .gv-justify-end{justify-content:flex-end}.gv-activated .gv-justify-center{justify-content:center}.gv-activated .gv-justify-between{justify-content:space-between}.gv-activated .gv-justify-around{justify-content:space-around}.gv-activated .gv-justify-evenly{justify-content:space-evenly}.gv-activated .gv-order-first{order:-1}.gv-activated .gv-order-last{order:99}.gv-activated .gv-gap-xs{gap:4px}.gv-activated .gv-gap-sm{gap:8px}.gv-activated .gv-gap-md{gap:16px}.gv-activated .gv-gap-lg{gap:24px}.gv-activated .gv-gap-0{gap:0!important}.gv-activated .gv-flex{display:flex}.gv-activated .gv-block{display:block}.gv-activated .gv-inline{display:inline}.gv-activated .gv-inline-block{display:inline-block}.gv-activated .gv-hidden{display:none}.gv-activated .gv-invisible{visibility:hidden}.gv-activated .gv-collapse{visibility:collapse}.gv-activated .gv-m-0{margin:0!important}.gv-activated .gv-mt-0{margin-top:0!important}.gv-activated .gv-mb-0{margin-bottom:0!important}.gv-activated .gv-ml-0{margin-left:0!important}.gv-activated .gv-mr-0{margin-right:0!important}.gv-activated .gv-mx-0,.gv-activated .gv-my-0{margin-left:0!important;margin-right:0!important}.gv-activated .gv-m-xs{margin:4px}.gv-activated .gv-mt-xs{margin-top:4px}.gv-activated .gv-mb-xs{margin-bottom:4px}.gv-activated .gv-ml-xs{margin-left:4px}.gv-activated .gv-mr-xs{margin-right:4px}.gv-activated .gv-mx-xs{margin-left:4px;margin-right:4px}.gv-activated .gv-my-xs{margin-top:4px;margin-bottom:4px}.gv-activated .gv-m-sm{margin:8px}.gv-activated .gv-mt-sm{margin-top:8px}.gv-activated .gv-mb-sm{margin-bottom:8px}.gv-activated .gv-ml-sm{margin-left:8px}.gv-activated .gv-mr-sm{margin-right:8px}.gv-activated .gv-mx-sm{margin-left:8px;margin-right:8px}.gv-activated .gv-my-sm{margin-top:8px;margin-bottom:8px}.gv-activated .gv-m-md{margin:16px}.gv-activated .gv-mt-md{margin-top:16px}.gv-activated .gv-mb-md{margin-bottom:16px}.gv-activated .gv-ml-md{margin-left:16px}.gv-activated .gv-mr-md{margin-right:16px}.gv-activated .gv-mx-md{margin-left:16px;margin-right:16px}.gv-activated .gv-my-md{margin-top:16px;margin-bottom:16px}.gv-activated .gv-m-lg{margin:24px}.gv-activated .gv-mt-lg{margin-top:24px}.gv-activated .gv-mb-lg{margin-bottom:24px}.gv-activated .gv-ml-lg{margin-left:24px}.gv-activated .gv-mr-lg{margin-right:24px}.gv-activated .gv-mx-lg{margin-left:24px;margin-right:24px}.gv-activated .gv-my-lg{margin-top:24px;margin-bottom:24px}.gv-activated .gv-m-auto{margin:auto}.gv-activated .gv-mt-auto{margin-top:auto}.gv-activated .gv-mb-auto{margin-bottom:auto}.gv-activated .gv-ml-auto{margin-left:auto}.gv-activated .gv-mr-auto{margin-right:auto}.gv-activated .gv-mx-auto{margin-left:auto;margin-right:auto}.gv-activated .gv-my-auto{margin-top:auto;margin-bottom:auto}.gv-activated .gv-p-0{padding:0!important}.gv-activated .gv-pt-0{padding-top:0!important}.gv-activated .gv-pb-0{padding-bottom:0!important}.gv-activated .gv-pl-0{padding-left:0!important}.gv-activated .gv-pr-0{padding-right:0!important}.gv-activated .gv-px-0,.gv-activated .gv-py-0{padding-left:0!important;padding-right:0!important}.gv-activated .gv-p-xs{padding:4px}.gv-activated .gv-pt-xs{padding-top:4px}.gv-activated .gv-pb-xs{padding-bottom:4px}.gv-activated .gv-pl-xs{padding-left:4px}.gv-activated .gv-pr-xs{padding-right:4px}.gv-activated .gv-px-xs{padding-left:4px;padding-right:4px}.gv-activated .gv-py-xs{padding-top:4px;padding-bottom:4px}.gv-activated .gv-p-sm{padding:8px}.gv-activated .gv-pt-sm{padding-top:8px}.gv-activated .gv-pb-sm{padding-bottom:8px}.gv-activated .gv-pl-sm{padding-left:8px}.gv-activated .gv-pr-sm{padding-right:8px}.gv-activated .gv-px-sm{padding-left:8px;padding-right:8px}.gv-activated .gv-py-sm{padding-top:8px;padding-bottom:8px}.gv-activated .gv-p-md{padding:16px}.gv-activated .gv-pt-md{padding-top:16px}.gv-activated .gv-pb-md{padding-bottom:16px}.gv-activated .gv-pl-md{padding-left:16px}.gv-activated .gv-pr-md{padding-right:16px}.gv-activated .gv-px-md{padding-left:16px;padding-right:16px}.gv-activated .gv-py-md{padding-top:16px;padding-bottom:16px}.gv-activated .gv-p-lg{padding:24px}.gv-activated .gv-pt-lg{padding-top:24px}.gv-activated .gv-pb-lg{padding-bottom:24px}.gv-activated .gv-pl-lg{padding-left:24px}.gv-activated .gv-pr-lg{padding-right:24px}.gv-activated .gv-px-lg{padding-left:24px;padding-right:24px}.gv-activated .gv-py-lg{padding-top:24px;padding-bottom:24px}.gv-activated .gv-stack-space-xs>:not(:last-child){margin-bottom:4px}.gv-activated .gv-stack-space-sm>:not(:last-child){margin-bottom:8px}.gv-activated .gv-stack-space-md>:not(:last-child){margin-bottom:16px}.gv-activated .gv-stack-space-lg>:not(:last-child){margin-bottom:24px}.gv-activated .gv-text-left{text-align:left}.gv-activated .gv-text-center{text-align:center}.gv-activated .gv-text-right{text-align:right}@media (max-width:599px){.gv-activated .gv-max-mob-border{border:1px solid var(--color-border)}.gv-activated .gv-max-mob-border-t{border-top:1px solid var(--color-border)}.gv-activated .gv-max-mob-border-b{border-bottom:1px solid var(--color-border)}.gv-activated .gv-max-mob-border-l{border-left:1px solid var(--color-border)}.gv-activated .gv-max-mob-border-r{border-right:1px solid var(--color-border)}.gv-activated .gv-max-mob-border-alt{border:1px solid var(--color-border-alt)}.gv-activated .gv-max-mob-border-alt-t{border-top:1px solid var(--color-border-alt)}.gv-activated .gv-max-mob-border-alt-b{border-bottom:1px solid var(--color-border-alt)}.gv-activated .gv-max-mob-border-alt-l{border-left:1px solid var(--color-border-alt)}.gv-activated .gv-max-mob-border-alt-r{border-right:1px solid var(--color-border-alt)}.gv-activated .gv-max-mob-border-0{border:0!important}.gv-activated .gv-max-mob-radius{border-radius:var(--border-radius)}.gv-activated .gv-max-mob-radius-tl{border-top-left-radius:var(--border-radius)}.gv-activated .gv-max-mob-radius-tr{border-top-right-radius:var(--border-radius)}.gv-activated .gv-max-mob-radius-bl{border-bottom-left-radius:var(--border-radius)}.gv-activated .gv-max-mob-radius-br{border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-max-mob-radius-t{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius)}.gv-activated .gv-max-mob-radius-r{border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-max-mob-radius-b{border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-max-mob-radius-l{border-top-left-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius)}.gv-activated .gv-max-mob-radius-0{border-radius:0!important}.gv-activated .gv-max-mob-flex-row{flex-direction:row}.gv-activated .gv-max-mob-flex-row-reverse{flex-direction:row-reverse}.gv-activated .gv-max-mob-flex-col{flex-direction:column}.gv-activated .gv-max-mob-flex-col-reverse{flex-direction:column-reverse}.gv-activated .gv-max-mob-content-center{align-content:center}.gv-activated .gv-max-mob-items-start{align-items:flex-start}.gv-activated .gv-max-mob-items-end{align-items:flex-end}.gv-activated .gv-max-mob-items-center{align-items:center}.gv-activated .gv-max-mob-items-baseline{align-items:baseline}.gv-activated .gv-max-mob-items-stretch{align-items:stretch}.gv-activated .gv-max-mob-justify-start{justify-content:flex-start}.gv-activated .gv-max-mob-justify-end{justify-content:flex-end}.gv-activated .gv-max-mob-justify-center{justify-content:center}.gv-activated .gv-max-mob-justify-between{justify-content:space-between}.gv-activated .gv-max-mob-justify-around{justify-content:space-around}.gv-activated .gv-max-mob-justify-evenly{justify-content:space-evenly}.gv-activated .gv-max-mob-order-first{order:-1}.gv-activated .gv-max-mob-order-last{order:99}.gv-activated .gv-max-mob-gap-xs{gap:4px}.gv-activated .gv-max-mob-gap-sm{gap:8px}.gv-activated .gv-max-mob-gap-md{gap:16px}.gv-activated .gv-max-mob-gap-lg{gap:24px}.gv-activated .gv-max-mob-gap-0{gap:0!important}.gv-activated .gv-max-mob-flex{display:flex}.gv-activated .gv-max-mob-block{display:block}.gv-activated .gv-max-mob-inline{display:inline}.gv-activated .gv-max-mob-inline-block{display:inline-block}.gv-activated .gv-max-mob-hidden{display:none}.gv-activated .gv-max-mob-invisible{visibility:hidden}.gv-activated .gv-max-mob-collapse{visibility:collapse}.gv-activated .gv-max-mob-m-0{margin:0!important}.gv-activated .gv-max-mob-mt-0{margin-top:0!important}.gv-activated .gv-max-mob-mb-0{margin-bottom:0!important}.gv-activated .gv-max-mob-ml-0{margin-left:0!important}.gv-activated .gv-max-mob-mr-0{margin-right:0!important}.gv-activated .gv-max-mob-mx-0,.gv-activated .gv-max-mob-my-0{margin-left:0!important;margin-right:0!important}.gv-activated .gv-max-mob-m-xs{margin:4px}.gv-activated .gv-max-mob-mt-xs{margin-top:4px}.gv-activated .gv-max-mob-mb-xs{margin-bottom:4px}.gv-activated .gv-max-mob-ml-xs{margin-left:4px}.gv-activated .gv-max-mob-mr-xs{margin-right:4px}.gv-activated .gv-max-mob-mx-xs{margin-left:4px;margin-right:4px}.gv-activated .gv-max-mob-my-xs{margin-top:4px;margin-bottom:4px}.gv-activated .gv-max-mob-m-sm{margin:8px}.gv-activated .gv-max-mob-mt-sm{margin-top:8px}.gv-activated .gv-max-mob-mb-sm{margin-bottom:8px}.gv-activated .gv-max-mob-ml-sm{margin-left:8px}.gv-activated .gv-max-mob-mr-sm{margin-right:8px}.gv-activated .gv-max-mob-mx-sm{margin-left:8px;margin-right:8px}.gv-activated .gv-max-mob-my-sm{margin-top:8px;margin-bottom:8px}.gv-activated .gv-max-mob-m-md{margin:16px}.gv-activated .gv-max-mob-mt-md{margin-top:16px}.gv-activated .gv-max-mob-mb-md{margin-bottom:16px}.gv-activated .gv-max-mob-ml-md{margin-left:16px}.gv-activated .gv-max-mob-mr-md{margin-right:16px}.gv-activated .gv-max-mob-mx-md{margin-left:16px;margin-right:16px}.gv-activated .gv-max-mob-my-md{margin-top:16px;margin-bottom:16px}.gv-activated .gv-max-mob-m-lg{margin:24px}.gv-activated .gv-max-mob-mt-lg{margin-top:24px}.gv-activated .gv-max-mob-mb-lg{margin-bottom:24px}.gv-activated .gv-max-mob-ml-lg{margin-left:24px}.gv-activated .gv-max-mob-mr-lg{margin-right:24px}.gv-activated .gv-max-mob-mx-lg{margin-left:24px;margin-right:24px}.gv-activated .gv-max-mob-my-lg{margin-top:24px;margin-bottom:24px}.gv-activated .gv-max-mob-m-auto{margin:auto}.gv-activated .gv-max-mob-mt-auto{margin-top:auto}.gv-activated .gv-max-mob-mb-auto{margin-bottom:auto}.gv-activated .gv-max-mob-ml-auto{margin-left:auto}.gv-activated .gv-max-mob-mr-auto{margin-right:auto}.gv-activated .gv-max-mob-mx-auto{margin-left:auto;margin-right:auto}.gv-activated .gv-max-mob-my-auto{margin-top:auto;margin-bottom:auto}.gv-activated .gv-max-mob-p-0{padding:0!important}.gv-activated .gv-max-mob-pt-0{padding-top:0!important}.gv-activated .gv-max-mob-pb-0{padding-bottom:0!important}.gv-activated .gv-max-mob-pl-0{padding-left:0!important}.gv-activated .gv-max-mob-pr-0{padding-right:0!important}.gv-activated .gv-max-mob-px-0,.gv-activated .gv-max-mob-py-0{padding-left:0!important;padding-right:0!important}.gv-activated .gv-max-mob-p-xs{padding:4px}.gv-activated .gv-max-mob-pt-xs{padding-top:4px}.gv-activated .gv-max-mob-pb-xs{padding-bottom:4px}.gv-activated .gv-max-mob-pl-xs{padding-left:4px}.gv-activated .gv-max-mob-pr-xs{padding-right:4px}.gv-activated .gv-max-mob-px-xs{padding-left:4px;padding-right:4px}.gv-activated .gv-max-mob-py-xs{padding-top:4px;padding-bottom:4px}.gv-activated .gv-max-mob-p-sm{padding:8px}.gv-activated .gv-max-mob-pt-sm{padding-top:8px}.gv-activated .gv-max-mob-pb-sm{padding-bottom:8px}.gv-activated .gv-max-mob-pl-sm{padding-left:8px}.gv-activated .gv-max-mob-pr-sm{padding-right:8px}.gv-activated .gv-max-mob-px-sm{padding-left:8px;padding-right:8px}.gv-activated .gv-max-mob-py-sm{padding-top:8px;padding-bottom:8px}.gv-activated .gv-max-mob-p-md{padding:16px}.gv-activated .gv-max-mob-pt-md{padding-top:16px}.gv-activated .gv-max-mob-pb-md{padding-bottom:16px}.gv-activated .gv-max-mob-pl-md{padding-left:16px}.gv-activated .gv-max-mob-pr-md{padding-right:16px}.gv-activated .gv-max-mob-px-md{padding-left:16px;padding-right:16px}.gv-activated .gv-max-mob-py-md{padding-top:16px;padding-bottom:16px}.gv-activated .gv-max-mob-p-lg{padding:24px}.gv-activated .gv-max-mob-pt-lg{padding-top:24px}.gv-activated .gv-max-mob-pb-lg{padding-bottom:24px}.gv-activated .gv-max-mob-pl-lg{padding-left:24px}.gv-activated .gv-max-mob-pr-lg{padding-right:24px}.gv-activated .gv-max-mob-px-lg{padding-left:24px;padding-right:24px}.gv-activated .gv-max-mob-py-lg{padding-top:24px;padding-bottom:24px}.gv-activated .gv-max-mob-stack-space-xs>:not(:last-child){margin-bottom:4px}.gv-activated .gv-max-mob-stack-space-sm>:not(:last-child){margin-bottom:8px}.gv-activated .gv-max-mob-stack-space-md>:not(:last-child){margin-bottom:16px}.gv-activated .gv-max-mob-stack-space-lg>:not(:last-child){margin-bottom:24px}.gv-activated .gv-max-mob-text-left{text-align:left}.gv-activated .gv-max-mob-text-center{text-align:center}.gv-activated .gv-max-mob-text-right{text-align:right}}@media (min-width:600px){.gv-activated .gv-tab-border{border:1px solid var(--color-border)}.gv-activated .gv-tab-border-t{border-top:1px solid var(--color-border)}.gv-activated .gv-tab-border-b{border-bottom:1px solid var(--color-border)}.gv-activated .gv-tab-border-l{border-left:1px solid var(--color-border)}.gv-activated .gv-tab-border-r{border-right:1px solid var(--color-border)}.gv-activated .gv-tab-border-alt{border:1px solid var(--color-border-alt)}.gv-activated .gv-tab-border-alt-t{border-top:1px solid var(--color-border-alt)}.gv-activated .gv-tab-border-alt-b{border-bottom:1px solid var(--color-border-alt)}.gv-activated .gv-tab-border-alt-l{border-left:1px solid var(--color-border-alt)}.gv-activated .gv-tab-border-alt-r{border-right:1px solid var(--color-border-alt)}.gv-activated .gv-tab-border-0{border:0!important}.gv-activated .gv-tab-radius{border-radius:var(--border-radius)}.gv-activated .gv-tab-radius-tl{border-top-left-radius:var(--border-radius)}.gv-activated .gv-tab-radius-tr{border-top-right-radius:var(--border-radius)}.gv-activated .gv-tab-radius-bl{border-bottom-left-radius:var(--border-radius)}.gv-activated .gv-tab-radius-br{border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-tab-radius-t{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius)}.gv-activated .gv-tab-radius-r{border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-tab-radius-b{border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-tab-radius-l{border-top-left-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius)}.gv-activated .gv-tab-radius-0{border-radius:0!important}.gv-activated .gv-tab-flex-row{flex-direction:row}.gv-activated .gv-tab-flex-row-reverse{flex-direction:row-reverse}.gv-activated .gv-tab-flex-col{flex-direction:column}.gv-activated .gv-tab-flex-col-reverse{flex-direction:column-reverse}.gv-activated .gv-tab-content-center{align-content:center}.gv-activated .gv-tab-items-start{align-items:flex-start}.gv-activated .gv-tab-items-end{align-items:flex-end}.gv-activated .gv-tab-items-center{align-items:center}.gv-activated .gv-tab-items-baseline{align-items:baseline}.gv-activated .gv-tab-items-stretch{align-items:stretch}.gv-activated .gv-tab-justify-start{justify-content:flex-start}.gv-activated .gv-tab-justify-end{justify-content:flex-end}.gv-activated .gv-tab-justify-center{justify-content:center}.gv-activated .gv-tab-justify-between{justify-content:space-between}.gv-activated .gv-tab-justify-around{justify-content:space-around}.gv-activated .gv-tab-justify-evenly{justify-content:space-evenly}.gv-activated .gv-tab-order-first{order:-1}.gv-activated .gv-tab-order-last{order:99}.gv-activated .gv-tab-gap-xs{gap:4px}.gv-activated .gv-tab-gap-sm{gap:8px}.gv-activated .gv-tab-gap-md{gap:16px}.gv-activated .gv-tab-gap-lg{gap:24px}.gv-activated .gv-tab-gap-0{gap:0!important}.gv-activated .gv-tab-flex{display:flex}.gv-activated .gv-tab-block{display:block}.gv-activated .gv-tab-inline{display:inline}.gv-activated .gv-tab-inline-block{display:inline-block}.gv-activated .gv-tab-hidden{display:none}.gv-activated .gv-tab-invisible{visibility:hidden}.gv-activated .gv-tab-collapse{visibility:collapse}.gv-activated .gv-tab-m-0{margin:0!important}.gv-activated .gv-tab-mt-0{margin-top:0!important}.gv-activated .gv-tab-mb-0{margin-bottom:0!important}.gv-activated .gv-tab-ml-0{margin-left:0!important}.gv-activated .gv-tab-mr-0{margin-right:0!important}.gv-activated .gv-tab-mx-0,.gv-activated .gv-tab-my-0{margin-left:0!important;margin-right:0!important}.gv-activated .gv-tab-m-xs{margin:4px}.gv-activated .gv-tab-mt-xs{margin-top:4px}.gv-activated .gv-tab-mb-xs{margin-bottom:4px}.gv-activated .gv-tab-ml-xs{margin-left:4px}.gv-activated .gv-tab-mr-xs{margin-right:4px}.gv-activated .gv-tab-mx-xs{margin-left:4px;margin-right:4px}.gv-activated .gv-tab-my-xs{margin-top:4px;margin-bottom:4px}.gv-activated .gv-tab-m-sm{margin:8px}.gv-activated .gv-tab-mt-sm{margin-top:8px}.gv-activated .gv-tab-mb-sm{margin-bottom:8px}.gv-activated .gv-tab-ml-sm{margin-left:8px}.gv-activated .gv-tab-mr-sm{margin-right:8px}.gv-activated .gv-tab-mx-sm{margin-left:8px;margin-right:8px}.gv-activated .gv-tab-my-sm{margin-top:8px;margin-bottom:8px}.gv-activated .gv-tab-m-md{margin:16px}.gv-activated .gv-tab-mt-md{margin-top:16px}.gv-activated .gv-tab-mb-md{margin-bottom:16px}.gv-activated .gv-tab-ml-md{margin-left:16px}.gv-activated .gv-tab-mr-md{margin-right:16px}.gv-activated .gv-tab-mx-md{margin-left:16px;margin-right:16px}.gv-activated .gv-tab-my-md{margin-top:16px;margin-bottom:16px}.gv-activated .gv-tab-m-lg{margin:24px}.gv-activated .gv-tab-mt-lg{margin-top:24px}.gv-activated .gv-tab-mb-lg{margin-bottom:24px}.gv-activated .gv-tab-ml-lg{margin-left:24px}.gv-activated .gv-tab-mr-lg{margin-right:24px}.gv-activated .gv-tab-mx-lg{margin-left:24px;margin-right:24px}.gv-activated .gv-tab-my-lg{margin-top:24px;margin-bottom:24px}.gv-activated .gv-tab-m-auto{margin:auto}.gv-activated .gv-tab-mt-auto{margin-top:auto}.gv-activated .gv-tab-mb-auto{margin-bottom:auto}.gv-activated .gv-tab-ml-auto{margin-left:auto}.gv-activated .gv-tab-mr-auto{margin-right:auto}.gv-activated .gv-tab-mx-auto{margin-left:auto;margin-right:auto}.gv-activated .gv-tab-my-auto{margin-top:auto;margin-bottom:auto}.gv-activated .gv-tab-p-0{padding:0!important}.gv-activated .gv-tab-pt-0{padding-top:0!important}.gv-activated .gv-tab-pb-0{padding-bottom:0!important}.gv-activated .gv-tab-pl-0{padding-left:0!important}.gv-activated .gv-tab-pr-0{padding-right:0!important}.gv-activated .gv-tab-px-0,.gv-activated .gv-tab-py-0{padding-left:0!important;padding-right:0!important}.gv-activated .gv-tab-p-xs{padding:4px}.gv-activated .gv-tab-pt-xs{padding-top:4px}.gv-activated .gv-tab-pb-xs{padding-bottom:4px}.gv-activated .gv-tab-pl-xs{padding-left:4px}.gv-activated .gv-tab-pr-xs{padding-right:4px}.gv-activated .gv-tab-px-xs{padding-left:4px;padding-right:4px}.gv-activated .gv-tab-py-xs{padding-top:4px;padding-bottom:4px}.gv-activated .gv-tab-p-sm{padding:8px}.gv-activated .gv-tab-pt-sm{padding-top:8px}.gv-activated .gv-tab-pb-sm{padding-bottom:8px}.gv-activated .gv-tab-pl-sm{padding-left:8px}.gv-activated .gv-tab-pr-sm{padding-right:8px}.gv-activated .gv-tab-px-sm{padding-left:8px;padding-right:8px}.gv-activated .gv-tab-py-sm{padding-top:8px;padding-bottom:8px}.gv-activated .gv-tab-p-md{padding:16px}.gv-activated .gv-tab-pt-md{padding-top:16px}.gv-activated .gv-tab-pb-md{padding-bottom:16px}.gv-activated .gv-tab-pl-md{padding-left:16px}.gv-activated .gv-tab-pr-md{padding-right:16px}.gv-activated .gv-tab-px-md{padding-left:16px;padding-right:16px}.gv-activated .gv-tab-py-md{padding-top:16px;padding-bottom:16px}.gv-activated .gv-tab-p-lg{padding:24px}.gv-activated .gv-tab-pt-lg{padding-top:24px}.gv-activated .gv-tab-pb-lg{padding-bottom:24px}.gv-activated .gv-tab-pl-lg{padding-left:24px}.gv-activated .gv-tab-pr-lg{padding-right:24px}.gv-activated .gv-tab-px-lg{padding-left:24px;padding-right:24px}.gv-activated .gv-tab-py-lg{padding-top:24px;padding-bottom:24px}.gv-activated .gv-tab-stack-space-xs>:not(:last-child){margin-bottom:4px}.gv-activated .gv-tab-stack-space-sm>:not(:last-child){margin-bottom:8px}.gv-activated .gv-tab-stack-space-md>:not(:last-child){margin-bottom:16px}.gv-activated .gv-tab-stack-space-lg>:not(:last-child){margin-bottom:24px}.gv-activated .gv-tab-text-left{text-align:left}.gv-activated .gv-tab-text-center{text-align:center}.gv-activated .gv-tab-text-right{text-align:right}}@media (max-width:767px){.gv-activated .gv-max-tab-sm-border{border:1px solid var(--color-border)}.gv-activated .gv-max-tab-sm-border-t{border-top:1px solid var(--color-border)}.gv-activated .gv-max-tab-sm-border-b{border-bottom:1px solid var(--color-border)}.gv-activated .gv-max-tab-sm-border-l{border-left:1px solid var(--color-border)}.gv-activated .gv-max-tab-sm-border-r{border-right:1px solid var(--color-border)}.gv-activated .gv-max-tab-sm-border-alt{border:1px solid var(--color-border-alt)}.gv-activated .gv-max-tab-sm-border-alt-t{border-top:1px solid var(--color-border-alt)}.gv-activated .gv-max-tab-sm-border-alt-b{border-bottom:1px solid var(--color-border-alt)}.gv-activated .gv-max-tab-sm-border-alt-l{border-left:1px solid var(--color-border-alt)}.gv-activated .gv-max-tab-sm-border-alt-r{border-right:1px solid var(--color-border-alt)}.gv-activated .gv-max-tab-sm-border-0{border:0!important}.gv-activated .gv-max-tab-sm-radius{border-radius:var(--border-radius)}.gv-activated .gv-max-tab-sm-radius-tl{border-top-left-radius:var(--border-radius)}.gv-activated .gv-max-tab-sm-radius-tr{border-top-right-radius:var(--border-radius)}.gv-activated .gv-max-tab-sm-radius-bl{border-bottom-left-radius:var(--border-radius)}.gv-activated .gv-max-tab-sm-radius-br{border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-max-tab-sm-radius-t{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius)}.gv-activated .gv-max-tab-sm-radius-r{border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-max-tab-sm-radius-b{border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-max-tab-sm-radius-l{border-top-left-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius)}.gv-activated .gv-max-tab-sm-radius-0{border-radius:0!important}.gv-activated .gv-max-tab-sm-flex-row{flex-direction:row}.gv-activated .gv-max-tab-sm-flex-row-reverse{flex-direction:row-reverse}.gv-activated .gv-max-tab-sm-flex-col{flex-direction:column}.gv-activated .gv-max-tab-sm-flex-col-reverse{flex-direction:column-reverse}.gv-activated .gv-max-tab-sm-content-center{align-content:center}.gv-activated .gv-max-tab-sm-items-start{align-items:flex-start}.gv-activated .gv-max-tab-sm-items-end{align-items:flex-end}.gv-activated .gv-max-tab-sm-items-center{align-items:center}.gv-activated .gv-max-tab-sm-items-baseline{align-items:baseline}.gv-activated .gv-max-tab-sm-items-stretch{align-items:stretch}.gv-activated .gv-max-tab-sm-justify-start{justify-content:flex-start}.gv-activated .gv-max-tab-sm-justify-end{justify-content:flex-end}.gv-activated .gv-max-tab-sm-justify-center{justify-content:center}.gv-activated .gv-max-tab-sm-justify-between{justify-content:space-between}.gv-activated .gv-max-tab-sm-justify-around{justify-content:space-around}.gv-activated .gv-max-tab-sm-justify-evenly{justify-content:space-evenly}.gv-activated .gv-max-tab-sm-order-first{order:-1}.gv-activated .gv-max-tab-sm-order-last{order:99}.gv-activated .gv-max-tab-sm-gap-xs{gap:4px}.gv-activated .gv-max-tab-sm-gap-sm{gap:8px}.gv-activated .gv-max-tab-sm-gap-md{gap:16px}.gv-activated .gv-max-tab-sm-gap-lg{gap:24px}.gv-activated .gv-max-tab-sm-gap-0{gap:0!important}.gv-activated .gv-max-tab-sm-flex{display:flex}.gv-activated .gv-max-tab-sm-block{display:block}.gv-activated .gv-max-tab-sm-inline{display:inline}.gv-activated .gv-max-tab-sm-inline-block{display:inline-block}.gv-activated .gv-max-tab-sm-hidden{display:none}.gv-activated .gv-max-tab-sm-invisible{visibility:hidden}.gv-activated .gv-max-tab-sm-collapse{visibility:collapse}.gv-activated .gv-max-tab-sm-m-0{margin:0!important}.gv-activated .gv-max-tab-sm-mt-0{margin-top:0!important}.gv-activated .gv-max-tab-sm-mb-0{margin-bottom:0!important}.gv-activated .gv-max-tab-sm-ml-0{margin-left:0!important}.gv-activated .gv-max-tab-sm-mr-0{margin-right:0!important}.gv-activated .gv-max-tab-sm-mx-0,.gv-activated .gv-max-tab-sm-my-0{margin-left:0!important;margin-right:0!important}.gv-activated .gv-max-tab-sm-m-xs{margin:4px}.gv-activated .gv-max-tab-sm-mt-xs{margin-top:4px}.gv-activated .gv-max-tab-sm-mb-xs{margin-bottom:4px}.gv-activated .gv-max-tab-sm-ml-xs{margin-left:4px}.gv-activated .gv-max-tab-sm-mr-xs{margin-right:4px}.gv-activated .gv-max-tab-sm-mx-xs{margin-left:4px;margin-right:4px}.gv-activated .gv-max-tab-sm-my-xs{margin-top:4px;margin-bottom:4px}.gv-activated .gv-max-tab-sm-m-sm{margin:8px}.gv-activated .gv-max-tab-sm-mt-sm{margin-top:8px}.gv-activated .gv-max-tab-sm-mb-sm{margin-bottom:8px}.gv-activated .gv-max-tab-sm-ml-sm{margin-left:8px}.gv-activated .gv-max-tab-sm-mr-sm{margin-right:8px}.gv-activated .gv-max-tab-sm-mx-sm{margin-left:8px;margin-right:8px}.gv-activated .gv-max-tab-sm-my-sm{margin-top:8px;margin-bottom:8px}.gv-activated .gv-max-tab-sm-m-md{margin:16px}.gv-activated .gv-max-tab-sm-mt-md{margin-top:16px}.gv-activated .gv-max-tab-sm-mb-md{margin-bottom:16px}.gv-activated .gv-max-tab-sm-ml-md{margin-left:16px}.gv-activated .gv-max-tab-sm-mr-md{margin-right:16px}.gv-activated .gv-max-tab-sm-mx-md{margin-left:16px;margin-right:16px}.gv-activated .gv-max-tab-sm-my-md{margin-top:16px;margin-bottom:16px}.gv-activated .gv-max-tab-sm-m-lg{margin:24px}.gv-activated .gv-max-tab-sm-mt-lg{margin-top:24px}.gv-activated .gv-max-tab-sm-mb-lg{margin-bottom:24px}.gv-activated .gv-max-tab-sm-ml-lg{margin-left:24px}.gv-activated .gv-max-tab-sm-mr-lg{margin-right:24px}.gv-activated .gv-max-tab-sm-mx-lg{margin-left:24px;margin-right:24px}.gv-activated .gv-max-tab-sm-my-lg{margin-top:24px;margin-bottom:24px}.gv-activated .gv-max-tab-sm-m-auto{margin:auto}.gv-activated .gv-max-tab-sm-mt-auto{margin-top:auto}.gv-activated .gv-max-tab-sm-mb-auto{margin-bottom:auto}.gv-activated .gv-max-tab-sm-ml-auto{margin-left:auto}.gv-activated .gv-max-tab-sm-mr-auto{margin-right:auto}.gv-activated .gv-max-tab-sm-mx-auto{margin-left:auto;margin-right:auto}.gv-activated .gv-max-tab-sm-my-auto{margin-top:auto;margin-bottom:auto}.gv-activated .gv-max-tab-sm-p-0{padding:0!important}.gv-activated .gv-max-tab-sm-pt-0{padding-top:0!important}.gv-activated .gv-max-tab-sm-pb-0{padding-bottom:0!important}.gv-activated .gv-max-tab-sm-pl-0{padding-left:0!important}.gv-activated .gv-max-tab-sm-pr-0{padding-right:0!important}.gv-activated .gv-max-tab-sm-px-0,.gv-activated .gv-max-tab-sm-py-0{padding-left:0!important;padding-right:0!important}.gv-activated .gv-max-tab-sm-p-xs{padding:4px}.gv-activated .gv-max-tab-sm-pt-xs{padding-top:4px}.gv-activated .gv-max-tab-sm-pb-xs{padding-bottom:4px}.gv-activated .gv-max-tab-sm-pl-xs{padding-left:4px}.gv-activated .gv-max-tab-sm-pr-xs{padding-right:4px}.gv-activated .gv-max-tab-sm-px-xs{padding-left:4px;padding-right:4px}.gv-activated .gv-max-tab-sm-py-xs{padding-top:4px;padding-bottom:4px}.gv-activated .gv-max-tab-sm-p-sm{padding:8px}.gv-activated .gv-max-tab-sm-pt-sm{padding-top:8px}.gv-activated .gv-max-tab-sm-pb-sm{padding-bottom:8px}.gv-activated .gv-max-tab-sm-pl-sm{padding-left:8px}.gv-activated .gv-max-tab-sm-pr-sm{padding-right:8px}.gv-activated .gv-max-tab-sm-px-sm{padding-left:8px;padding-right:8px}.gv-activated .gv-max-tab-sm-py-sm{padding-top:8px;padding-bottom:8px}.gv-activated .gv-max-tab-sm-p-md{padding:16px}.gv-activated .gv-max-tab-sm-pt-md{padding-top:16px}.gv-activated .gv-max-tab-sm-pb-md{padding-bottom:16px}.gv-activated .gv-max-tab-sm-pl-md{padding-left:16px}.gv-activated .gv-max-tab-sm-pr-md{padding-right:16px}.gv-activated .gv-max-tab-sm-px-md{padding-left:16px;padding-right:16px}.gv-activated .gv-max-tab-sm-py-md{padding-top:16px;padding-bottom:16px}.gv-activated .gv-max-tab-sm-p-lg{padding:24px}.gv-activated .gv-max-tab-sm-pt-lg{padding-top:24px}.gv-activated .gv-max-tab-sm-pb-lg{padding-bottom:24px}.gv-activated .gv-max-tab-sm-pl-lg{padding-left:24px}.gv-activated .gv-max-tab-sm-pr-lg{padding-right:24px}.gv-activated .gv-max-tab-sm-px-lg{padding-left:24px;padding-right:24px}.gv-activated .gv-max-tab-sm-py-lg{padding-top:24px;padding-bottom:24px}.gv-activated .gv-max-tab-sm-stack-space-xs>:not(:last-child){margin-bottom:4px}.gv-activated .gv-max-tab-sm-stack-space-sm>:not(:last-child){margin-bottom:8px}.gv-activated .gv-max-tab-sm-stack-space-md>:not(:last-child){margin-bottom:16px}.gv-activated .gv-max-tab-sm-stack-space-lg>:not(:last-child){margin-bottom:24px}.gv-activated .gv-max-tab-sm-text-left{text-align:left}.gv-activated .gv-max-tab-sm-text-center{text-align:center}.gv-activated .gv-max-tab-sm-text-right{text-align:right}}@media (min-width:768px){.gv-activated .gv-tab-lg-border{border:1px solid var(--color-border)}.gv-activated .gv-tab-lg-border-t{border-top:1px solid var(--color-border)}.gv-activated .gv-tab-lg-border-b{border-bottom:1px solid var(--color-border)}.gv-activated .gv-tab-lg-border-l{border-left:1px solid var(--color-border)}.gv-activated .gv-tab-lg-border-r{border-right:1px solid var(--color-border)}.gv-activated .gv-tab-lg-border-alt{border:1px solid var(--color-border-alt)}.gv-activated .gv-tab-lg-border-alt-t{border-top:1px solid var(--color-border-alt)}.gv-activated .gv-tab-lg-border-alt-b{border-bottom:1px solid var(--color-border-alt)}.gv-activated .gv-tab-lg-border-alt-l{border-left:1px solid var(--color-border-alt)}.gv-activated .gv-tab-lg-border-alt-r{border-right:1px solid var(--color-border-alt)}.gv-activated .gv-tab-lg-border-0{border:0!important}.gv-activated .gv-tab-lg-radius{border-radius:var(--border-radius)}.gv-activated .gv-tab-lg-radius-tl{border-top-left-radius:var(--border-radius)}.gv-activated .gv-tab-lg-radius-tr{border-top-right-radius:var(--border-radius)}.gv-activated .gv-tab-lg-radius-bl{border-bottom-left-radius:var(--border-radius)}.gv-activated .gv-tab-lg-radius-br{border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-tab-lg-radius-t{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius)}.gv-activated .gv-tab-lg-radius-r{border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-tab-lg-radius-b{border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-tab-lg-radius-l{border-top-left-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius)}.gv-activated .gv-tab-lg-radius-0{border-radius:0!important}.gv-activated .gv-tab-lg-flex-row{flex-direction:row}.gv-activated .gv-tab-lg-flex-row-reverse{flex-direction:row-reverse}.gv-activated .gv-tab-lg-flex-col{flex-direction:column}.gv-activated .gv-tab-lg-flex-col-reverse{flex-direction:column-reverse}.gv-activated .gv-tab-lg-content-center{align-content:center}.gv-activated .gv-tab-lg-items-start{align-items:flex-start}.gv-activated .gv-tab-lg-items-end{align-items:flex-end}.gv-activated .gv-tab-lg-items-center{align-items:center}.gv-activated .gv-tab-lg-items-baseline{align-items:baseline}.gv-activated .gv-tab-lg-items-stretch{align-items:stretch}.gv-activated .gv-tab-lg-justify-start{justify-content:flex-start}.gv-activated .gv-tab-lg-justify-end{justify-content:flex-end}.gv-activated .gv-tab-lg-justify-center{justify-content:center}.gv-activated .gv-tab-lg-justify-between{justify-content:space-between}.gv-activated .gv-tab-lg-justify-around{justify-content:space-around}.gv-activated .gv-tab-lg-justify-evenly{justify-content:space-evenly}.gv-activated .gv-tab-lg-order-first{order:-1}.gv-activated .gv-tab-lg-order-last{order:99}.gv-activated .gv-tab-lg-gap-xs{gap:4px}.gv-activated .gv-tab-lg-gap-sm{gap:8px}.gv-activated .gv-tab-lg-gap-md{gap:16px}.gv-activated .gv-tab-lg-gap-lg{gap:24px}.gv-activated .gv-tab-lg-gap-0{gap:0!important}.gv-activated .gv-tab-lg-flex{display:flex}.gv-activated .gv-tab-lg-block{display:block}.gv-activated .gv-tab-lg-inline{display:inline}.gv-activated .gv-tab-lg-inline-block{display:inline-block}.gv-activated .gv-tab-lg-hidden{display:none}.gv-activated .gv-tab-lg-invisible{visibility:hidden}.gv-activated .gv-tab-lg-collapse{visibility:collapse}.gv-activated .gv-tab-lg-m-0{margin:0!important}.gv-activated .gv-tab-lg-mt-0{margin-top:0!important}.gv-activated .gv-tab-lg-mb-0{margin-bottom:0!important}.gv-activated .gv-tab-lg-ml-0{margin-left:0!important}.gv-activated .gv-tab-lg-mr-0{margin-right:0!important}.gv-activated .gv-tab-lg-mx-0,.gv-activated .gv-tab-lg-my-0{margin-left:0!important;margin-right:0!important}.gv-activated .gv-tab-lg-m-xs{margin:4px}.gv-activated .gv-tab-lg-mt-xs{margin-top:4px}.gv-activated .gv-tab-lg-mb-xs{margin-bottom:4px}.gv-activated .gv-tab-lg-ml-xs{margin-left:4px}.gv-activated .gv-tab-lg-mr-xs{margin-right:4px}.gv-activated .gv-tab-lg-mx-xs{margin-left:4px;margin-right:4px}.gv-activated .gv-tab-lg-my-xs{margin-top:4px;margin-bottom:4px}.gv-activated .gv-tab-lg-m-sm{margin:8px}.gv-activated .gv-tab-lg-mt-sm{margin-top:8px}.gv-activated .gv-tab-lg-mb-sm{margin-bottom:8px}.gv-activated .gv-tab-lg-ml-sm{margin-left:8px}.gv-activated .gv-tab-lg-mr-sm{margin-right:8px}.gv-activated .gv-tab-lg-mx-sm{margin-left:8px;margin-right:8px}.gv-activated .gv-tab-lg-my-sm{margin-top:8px;margin-bottom:8px}.gv-activated .gv-tab-lg-m-md{margin:16px}.gv-activated .gv-tab-lg-mt-md{margin-top:16px}.gv-activated .gv-tab-lg-mb-md{margin-bottom:16px}.gv-activated .gv-tab-lg-ml-md{margin-left:16px}.gv-activated .gv-tab-lg-mr-md{margin-right:16px}.gv-activated .gv-tab-lg-mx-md{margin-left:16px;margin-right:16px}.gv-activated .gv-tab-lg-my-md{margin-top:16px;margin-bottom:16px}.gv-activated .gv-tab-lg-m-lg{margin:24px}.gv-activated .gv-tab-lg-mt-lg{margin-top:24px}.gv-activated .gv-tab-lg-mb-lg{margin-bottom:24px}.gv-activated .gv-tab-lg-ml-lg{margin-left:24px}.gv-activated .gv-tab-lg-mr-lg{margin-right:24px}.gv-activated .gv-tab-lg-mx-lg{margin-left:24px;margin-right:24px}.gv-activated .gv-tab-lg-my-lg{margin-top:24px;margin-bottom:24px}.gv-activated .gv-tab-lg-m-auto{margin:auto}.gv-activated .gv-tab-lg-mt-auto{margin-top:auto}.gv-activated .gv-tab-lg-mb-auto{margin-bottom:auto}.gv-activated .gv-tab-lg-ml-auto{margin-left:auto}.gv-activated .gv-tab-lg-mr-auto{margin-right:auto}.gv-activated .gv-tab-lg-mx-auto{margin-left:auto;margin-right:auto}.gv-activated .gv-tab-lg-my-auto{margin-top:auto;margin-bottom:auto}.gv-activated .gv-tab-lg-p-0{padding:0!important}.gv-activated .gv-tab-lg-pt-0{padding-top:0!important}.gv-activated .gv-tab-lg-pb-0{padding-bottom:0!important}.gv-activated .gv-tab-lg-pl-0{padding-left:0!important}.gv-activated .gv-tab-lg-pr-0{padding-right:0!important}.gv-activated .gv-tab-lg-px-0,.gv-activated .gv-tab-lg-py-0{padding-left:0!important;padding-right:0!important}.gv-activated .gv-tab-lg-p-xs{padding:4px}.gv-activated .gv-tab-lg-pt-xs{padding-top:4px}.gv-activated .gv-tab-lg-pb-xs{padding-bottom:4px}.gv-activated .gv-tab-lg-pl-xs{padding-left:4px}.gv-activated .gv-tab-lg-pr-xs{padding-right:4px}.gv-activated .gv-tab-lg-px-xs{padding-left:4px;padding-right:4px}.gv-activated .gv-tab-lg-py-xs{padding-top:4px;padding-bottom:4px}.gv-activated .gv-tab-lg-p-sm{padding:8px}.gv-activated .gv-tab-lg-pt-sm{padding-top:8px}.gv-activated .gv-tab-lg-pb-sm{padding-bottom:8px}.gv-activated .gv-tab-lg-pl-sm{padding-left:8px}.gv-activated .gv-tab-lg-pr-sm{padding-right:8px}.gv-activated .gv-tab-lg-px-sm{padding-left:8px;padding-right:8px}.gv-activated .gv-tab-lg-py-sm{padding-top:8px;padding-bottom:8px}.gv-activated .gv-tab-lg-p-md{padding:16px}.gv-activated .gv-tab-lg-pt-md{padding-top:16px}.gv-activated .gv-tab-lg-pb-md{padding-bottom:16px}.gv-activated .gv-tab-lg-pl-md{padding-left:16px}.gv-activated .gv-tab-lg-pr-md{padding-right:16px}.gv-activated .gv-tab-lg-px-md{padding-left:16px;padding-right:16px}.gv-activated .gv-tab-lg-py-md{padding-top:16px;padding-bottom:16px}.gv-activated .gv-tab-lg-p-lg{padding:24px}.gv-activated .gv-tab-lg-pt-lg{padding-top:24px}.gv-activated .gv-tab-lg-pb-lg{padding-bottom:24px}.gv-activated .gv-tab-lg-pl-lg{padding-left:24px}.gv-activated .gv-tab-lg-pr-lg{padding-right:24px}.gv-activated .gv-tab-lg-px-lg{padding-left:24px;padding-right:24px}.gv-activated .gv-tab-lg-py-lg{padding-top:24px;padding-bottom:24px}.gv-activated .gv-tab-lg-stack-space-xs>:not(:last-child){margin-bottom:4px}.gv-activated .gv-tab-lg-stack-space-sm>:not(:last-child){margin-bottom:8px}.gv-activated .gv-tab-lg-stack-space-md>:not(:last-child){margin-bottom:16px}.gv-activated .gv-tab-lg-stack-space-lg>:not(:last-child){margin-bottom:24px}.gv-activated .gv-tab-lg-text-left{text-align:left}.gv-activated .gv-tab-lg-text-center{text-align:center}.gv-activated .gv-tab-lg-text-right{text-align:right}}@media (max-width:1023px){.gv-activated .gv-max-tab-border{border:1px solid var(--color-border)}.gv-activated .gv-max-tab-border-t{border-top:1px solid var(--color-border)}.gv-activated .gv-max-tab-border-b{border-bottom:1px solid var(--color-border)}.gv-activated .gv-max-tab-border-l{border-left:1px solid var(--color-border)}.gv-activated .gv-max-tab-border-r{border-right:1px solid var(--color-border)}.gv-activated .gv-max-tab-border-alt{border:1px solid var(--color-border-alt)}.gv-activated .gv-max-tab-border-alt-t{border-top:1px solid var(--color-border-alt)}.gv-activated .gv-max-tab-border-alt-b{border-bottom:1px solid var(--color-border-alt)}.gv-activated .gv-max-tab-border-alt-l{border-left:1px solid var(--color-border-alt)}.gv-activated .gv-max-tab-border-alt-r{border-right:1px solid var(--color-border-alt)}.gv-activated .gv-max-tab-border-0{border:0!important}.gv-activated .gv-max-tab-radius{border-radius:var(--border-radius)}.gv-activated .gv-max-tab-radius-tl{border-top-left-radius:var(--border-radius)}.gv-activated .gv-max-tab-radius-tr{border-top-right-radius:var(--border-radius)}.gv-activated .gv-max-tab-radius-bl{border-bottom-left-radius:var(--border-radius)}.gv-activated .gv-max-tab-radius-br{border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-max-tab-radius-t{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius)}.gv-activated .gv-max-tab-radius-r{border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-max-tab-radius-b{border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-max-tab-radius-l{border-top-left-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius)}.gv-activated .gv-max-tab-radius-0{border-radius:0!important}.gv-activated .gv-max-tab-flex-row{flex-direction:row}.gv-activated .gv-max-tab-flex-row-reverse{flex-direction:row-reverse}.gv-activated .gv-max-tab-flex-col{flex-direction:column}.gv-activated .gv-max-tab-flex-col-reverse{flex-direction:column-reverse}.gv-activated .gv-max-tab-content-center{align-content:center}.gv-activated .gv-max-tab-items-start{align-items:flex-start}.gv-activated .gv-max-tab-items-end{align-items:flex-end}.gv-activated .gv-max-tab-items-center{align-items:center}.gv-activated .gv-max-tab-items-baseline{align-items:baseline}.gv-activated .gv-max-tab-items-stretch{align-items:stretch}.gv-activated .gv-max-tab-justify-start{justify-content:flex-start}.gv-activated .gv-max-tab-justify-end{justify-content:flex-end}.gv-activated .gv-max-tab-justify-center{justify-content:center}.gv-activated .gv-max-tab-justify-between{justify-content:space-between}.gv-activated .gv-max-tab-justify-around{justify-content:space-around}.gv-activated .gv-max-tab-justify-evenly{justify-content:space-evenly}.gv-activated .gv-max-tab-order-first{order:-1}.gv-activated .gv-max-tab-order-last{order:99}.gv-activated .gv-max-tab-gap-xs{gap:4px}.gv-activated .gv-max-tab-gap-sm{gap:8px}.gv-activated .gv-max-tab-gap-md{gap:16px}.gv-activated .gv-max-tab-gap-lg{gap:24px}.gv-activated .gv-max-tab-gap-0{gap:0!important}.gv-activated .gv-max-tab-flex{display:flex}.gv-activated .gv-max-tab-block{display:block}.gv-activated .gv-max-tab-inline{display:inline}.gv-activated .gv-max-tab-inline-block{display:inline-block}.gv-activated .gv-max-tab-hidden{display:none}.gv-activated .gv-max-tab-invisible{visibility:hidden}.gv-activated .gv-max-tab-collapse{visibility:collapse}.gv-activated .gv-max-tab-m-0{margin:0!important}.gv-activated .gv-max-tab-mt-0{margin-top:0!important}.gv-activated .gv-max-tab-mb-0{margin-bottom:0!important}.gv-activated .gv-max-tab-ml-0{margin-left:0!important}.gv-activated .gv-max-tab-mr-0{margin-right:0!important}.gv-activated .gv-max-tab-mx-0,.gv-activated .gv-max-tab-my-0{margin-left:0!important;margin-right:0!important}.gv-activated .gv-max-tab-m-xs{margin:4px}.gv-activated .gv-max-tab-mt-xs{margin-top:4px}.gv-activated .gv-max-tab-mb-xs{margin-bottom:4px}.gv-activated .gv-max-tab-ml-xs{margin-left:4px}.gv-activated .gv-max-tab-mr-xs{margin-right:4px}.gv-activated .gv-max-tab-mx-xs{margin-left:4px;margin-right:4px}.gv-activated .gv-max-tab-my-xs{margin-top:4px;margin-bottom:4px}.gv-activated .gv-max-tab-m-sm{margin:8px}.gv-activated .gv-max-tab-mt-sm{margin-top:8px}.gv-activated .gv-max-tab-mb-sm{margin-bottom:8px}.gv-activated .gv-max-tab-ml-sm{margin-left:8px}.gv-activated .gv-max-tab-mr-sm{margin-right:8px}.gv-activated .gv-max-tab-mx-sm{margin-left:8px;margin-right:8px}.gv-activated .gv-max-tab-my-sm{margin-top:8px;margin-bottom:8px}.gv-activated .gv-max-tab-m-md{margin:16px}.gv-activated .gv-max-tab-mt-md{margin-top:16px}.gv-activated .gv-max-tab-mb-md{margin-bottom:16px}.gv-activated .gv-max-tab-ml-md{margin-left:16px}.gv-activated .gv-max-tab-mr-md{margin-right:16px}.gv-activated .gv-max-tab-mx-md{margin-left:16px;margin-right:16px}.gv-activated .gv-max-tab-my-md{margin-top:16px;margin-bottom:16px}.gv-activated .gv-max-tab-m-lg{margin:24px}.gv-activated .gv-max-tab-mt-lg{margin-top:24px}.gv-activated .gv-max-tab-mb-lg{margin-bottom:24px}.gv-activated .gv-max-tab-ml-lg{margin-left:24px}.gv-activated .gv-max-tab-mr-lg{margin-right:24px}.gv-activated .gv-max-tab-mx-lg{margin-left:24px;margin-right:24px}.gv-activated .gv-max-tab-my-lg{margin-top:24px;margin-bottom:24px}.gv-activated .gv-max-tab-m-auto{margin:auto}.gv-activated .gv-max-tab-mt-auto{margin-top:auto}.gv-activated .gv-max-tab-mb-auto{margin-bottom:auto}.gv-activated .gv-max-tab-ml-auto{margin-left:auto}.gv-activated .gv-max-tab-mr-auto{margin-right:auto}.gv-activated .gv-max-tab-mx-auto{margin-left:auto;margin-right:auto}.gv-activated .gv-max-tab-my-auto{margin-top:auto;margin-bottom:auto}.gv-activated .gv-max-tab-p-0{padding:0!important}.gv-activated .gv-max-tab-pt-0{padding-top:0!important}.gv-activated .gv-max-tab-pb-0{padding-bottom:0!important}.gv-activated .gv-max-tab-pl-0{padding-left:0!important}.gv-activated .gv-max-tab-pr-0{padding-right:0!important}.gv-activated .gv-max-tab-px-0,.gv-activated .gv-max-tab-py-0{padding-left:0!important;padding-right:0!important}.gv-activated .gv-max-tab-p-xs{padding:4px}.gv-activated .gv-max-tab-pt-xs{padding-top:4px}.gv-activated .gv-max-tab-pb-xs{padding-bottom:4px}.gv-activated .gv-max-tab-pl-xs{padding-left:4px}.gv-activated .gv-max-tab-pr-xs{padding-right:4px}.gv-activated .gv-max-tab-px-xs{padding-left:4px;padding-right:4px}.gv-activated .gv-max-tab-py-xs{padding-top:4px;padding-bottom:4px}.gv-activated .gv-max-tab-p-sm{padding:8px}.gv-activated .gv-max-tab-pt-sm{padding-top:8px}.gv-activated .gv-max-tab-pb-sm{padding-bottom:8px}.gv-activated .gv-max-tab-pl-sm{padding-left:8px}.gv-activated .gv-max-tab-pr-sm{padding-right:8px}.gv-activated .gv-max-tab-px-sm{padding-left:8px;padding-right:8px}.gv-activated .gv-max-tab-py-sm{padding-top:8px;padding-bottom:8px}.gv-activated .gv-max-tab-p-md{padding:16px}.gv-activated .gv-max-tab-pt-md{padding-top:16px}.gv-activated .gv-max-tab-pb-md{padding-bottom:16px}.gv-activated .gv-max-tab-pl-md{padding-left:16px}.gv-activated .gv-max-tab-pr-md{padding-right:16px}.gv-activated .gv-max-tab-px-md{padding-left:16px;padding-right:16px}.gv-activated .gv-max-tab-py-md{padding-top:16px;padding-bottom:16px}.gv-activated .gv-max-tab-p-lg{padding:24px}.gv-activated .gv-max-tab-pt-lg{padding-top:24px}.gv-activated .gv-max-tab-pb-lg{padding-bottom:24px}.gv-activated .gv-max-tab-pl-lg{padding-left:24px}.gv-activated .gv-max-tab-pr-lg{padding-right:24px}.gv-activated .gv-max-tab-px-lg{padding-left:24px;padding-right:24px}.gv-activated .gv-max-tab-py-lg{padding-top:24px;padding-bottom:24px}.gv-activated .gv-max-tab-stack-space-xs>:not(:last-child){margin-bottom:4px}.gv-activated .gv-max-tab-stack-space-sm>:not(:last-child){margin-bottom:8px}.gv-activated .gv-max-tab-stack-space-md>:not(:last-child){margin-bottom:16px}.gv-activated .gv-max-tab-stack-space-lg>:not(:last-child){margin-bottom:24px}.gv-activated .gv-max-tab-text-left{text-align:left}.gv-activated .gv-max-tab-text-center{text-align:center}.gv-activated .gv-max-tab-text-right{text-align:right}}@media (min-width:1024px){.gv-activated .gv-desk-border{border:1px solid var(--color-border)}.gv-activated .gv-desk-border-t{border-top:1px solid var(--color-border)}.gv-activated .gv-desk-border-b{border-bottom:1px solid var(--color-border)}.gv-activated .gv-desk-border-l{border-left:1px solid var(--color-border)}.gv-activated .gv-desk-border-r{border-right:1px solid var(--color-border)}.gv-activated .gv-desk-border-alt{border:1px solid var(--color-border-alt)}.gv-activated .gv-desk-border-alt-t{border-top:1px solid var(--color-border-alt)}.gv-activated .gv-desk-border-alt-b{border-bottom:1px solid var(--color-border-alt)}.gv-activated .gv-desk-border-alt-l{border-left:1px solid var(--color-border-alt)}.gv-activated .gv-desk-border-alt-r{border-right:1px solid var(--color-border-alt)}.gv-activated .gv-desk-border-0{border:0!important}.gv-activated .gv-desk-radius{border-radius:var(--border-radius)}.gv-activated .gv-desk-radius-tl{border-top-left-radius:var(--border-radius)}.gv-activated .gv-desk-radius-tr{border-top-right-radius:var(--border-radius)}.gv-activated .gv-desk-radius-bl{border-bottom-left-radius:var(--border-radius)}.gv-activated .gv-desk-radius-br{border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-desk-radius-t{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius)}.gv-activated .gv-desk-radius-r{border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-desk-radius-b{border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-desk-radius-l{border-top-left-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius)}.gv-activated .gv-desk-radius-0{border-radius:0!important}.gv-activated .gv-desk-flex-row{flex-direction:row}.gv-activated .gv-desk-flex-row-reverse{flex-direction:row-reverse}.gv-activated .gv-desk-flex-col{flex-direction:column}.gv-activated .gv-desk-flex-col-reverse{flex-direction:column-reverse}.gv-activated .gv-desk-content-center{align-content:center}.gv-activated .gv-desk-items-start{align-items:flex-start}.gv-activated .gv-desk-items-end{align-items:flex-end}.gv-activated .gv-desk-items-center{align-items:center}.gv-activated .gv-desk-items-baseline{align-items:baseline}.gv-activated .gv-desk-items-stretch{align-items:stretch}.gv-activated .gv-desk-justify-start{justify-content:flex-start}.gv-activated .gv-desk-justify-end{justify-content:flex-end}.gv-activated .gv-desk-justify-center{justify-content:center}.gv-activated .gv-desk-justify-between{justify-content:space-between}.gv-activated .gv-desk-justify-around{justify-content:space-around}.gv-activated .gv-desk-justify-evenly{justify-content:space-evenly}.gv-activated .gv-desk-order-first{order:-1}.gv-activated .gv-desk-order-last{order:99}.gv-activated .gv-desk-gap-xs{gap:4px}.gv-activated .gv-desk-gap-sm{gap:8px}.gv-activated .gv-desk-gap-md{gap:16px}.gv-activated .gv-desk-gap-lg{gap:24px}.gv-activated .gv-desk-gap-0{gap:0!important}.gv-activated .gv-desk-flex{display:flex}.gv-activated .gv-desk-block{display:block}.gv-activated .gv-desk-inline{display:inline}.gv-activated .gv-desk-inline-block{display:inline-block}.gv-activated .gv-desk-hidden{display:none}.gv-activated .gv-desk-invisible{visibility:hidden}.gv-activated .gv-desk-collapse{visibility:collapse}.gv-activated .gv-desk-m-0{margin:0!important}.gv-activated .gv-desk-mt-0{margin-top:0!important}.gv-activated .gv-desk-mb-0{margin-bottom:0!important}.gv-activated .gv-desk-ml-0{margin-left:0!important}.gv-activated .gv-desk-mr-0{margin-right:0!important}.gv-activated .gv-desk-mx-0,.gv-activated .gv-desk-my-0{margin-left:0!important;margin-right:0!important}.gv-activated .gv-desk-m-xs{margin:4px}.gv-activated .gv-desk-mt-xs{margin-top:4px}.gv-activated .gv-desk-mb-xs{margin-bottom:4px}.gv-activated .gv-desk-ml-xs{margin-left:4px}.gv-activated .gv-desk-mr-xs{margin-right:4px}.gv-activated .gv-desk-mx-xs{margin-left:4px;margin-right:4px}.gv-activated .gv-desk-my-xs{margin-top:4px;margin-bottom:4px}.gv-activated .gv-desk-m-sm{margin:8px}.gv-activated .gv-desk-mt-sm{margin-top:8px}.gv-activated .gv-desk-mb-sm{margin-bottom:8px}.gv-activated .gv-desk-ml-sm{margin-left:8px}.gv-activated .gv-desk-mr-sm{margin-right:8px}.gv-activated .gv-desk-mx-sm{margin-left:8px;margin-right:8px}.gv-activated .gv-desk-my-sm{margin-top:8px;margin-bottom:8px}.gv-activated .gv-desk-m-md{margin:16px}.gv-activated .gv-desk-mt-md{margin-top:16px}.gv-activated .gv-desk-mb-md{margin-bottom:16px}.gv-activated .gv-desk-ml-md{margin-left:16px}.gv-activated .gv-desk-mr-md{margin-right:16px}.gv-activated .gv-desk-mx-md{margin-left:16px;margin-right:16px}.gv-activated .gv-desk-my-md{margin-top:16px;margin-bottom:16px}.gv-activated .gv-desk-m-lg{margin:24px}.gv-activated .gv-desk-mt-lg{margin-top:24px}.gv-activated .gv-desk-mb-lg{margin-bottom:24px}.gv-activated .gv-desk-ml-lg{margin-left:24px}.gv-activated .gv-desk-mr-lg{margin-right:24px}.gv-activated .gv-desk-mx-lg{margin-left:24px;margin-right:24px}.gv-activated .gv-desk-my-lg{margin-top:24px;margin-bottom:24px}.gv-activated .gv-desk-m-auto{margin:auto}.gv-activated .gv-desk-mt-auto{margin-top:auto}.gv-activated .gv-desk-mb-auto{margin-bottom:auto}.gv-activated .gv-desk-ml-auto{margin-left:auto}.gv-activated .gv-desk-mr-auto{margin-right:auto}.gv-activated .gv-desk-mx-auto{margin-left:auto;margin-right:auto}.gv-activated .gv-desk-my-auto{margin-top:auto;margin-bottom:auto}.gv-activated .gv-desk-p-0{padding:0!important}.gv-activated .gv-desk-pt-0{padding-top:0!important}.gv-activated .gv-desk-pb-0{padding-bottom:0!important}.gv-activated .gv-desk-pl-0{padding-left:0!important}.gv-activated .gv-desk-pr-0{padding-right:0!important}.gv-activated .gv-desk-px-0,.gv-activated .gv-desk-py-0{padding-left:0!important;padding-right:0!important}.gv-activated .gv-desk-p-xs{padding:4px}.gv-activated .gv-desk-pt-xs{padding-top:4px}.gv-activated .gv-desk-pb-xs{padding-bottom:4px}.gv-activated .gv-desk-pl-xs{padding-left:4px}.gv-activated .gv-desk-pr-xs{padding-right:4px}.gv-activated .gv-desk-px-xs{padding-left:4px;padding-right:4px}.gv-activated .gv-desk-py-xs{padding-top:4px;padding-bottom:4px}.gv-activated .gv-desk-p-sm{padding:8px}.gv-activated .gv-desk-pt-sm{padding-top:8px}.gv-activated .gv-desk-pb-sm{padding-bottom:8px}.gv-activated .gv-desk-pl-sm{padding-left:8px}.gv-activated .gv-desk-pr-sm{padding-right:8px}.gv-activated .gv-desk-px-sm{padding-left:8px;padding-right:8px}.gv-activated .gv-desk-py-sm{padding-top:8px;padding-bottom:8px}.gv-activated .gv-desk-p-md{padding:16px}.gv-activated .gv-desk-pt-md{padding-top:16px}.gv-activated .gv-desk-pb-md{padding-bottom:16px}.gv-activated .gv-desk-pl-md{padding-left:16px}.gv-activated .gv-desk-pr-md{padding-right:16px}.gv-activated .gv-desk-px-md{padding-left:16px;padding-right:16px}.gv-activated .gv-desk-py-md{padding-top:16px;padding-bottom:16px}.gv-activated .gv-desk-p-lg{padding:24px}.gv-activated .gv-desk-pt-lg{padding-top:24px}.gv-activated .gv-desk-pb-lg{padding-bottom:24px}.gv-activated .gv-desk-pl-lg{padding-left:24px}.gv-activated .gv-desk-pr-lg{padding-right:24px}.gv-activated .gv-desk-px-lg{padding-left:24px;padding-right:24px}.gv-activated .gv-desk-py-lg{padding-top:24px;padding-bottom:24px}.gv-activated .gv-desk-stack-space-xs>:not(:last-child){margin-bottom:4px}.gv-activated .gv-desk-stack-space-sm>:not(:last-child){margin-bottom:8px}.gv-activated .gv-desk-stack-space-md>:not(:last-child){margin-bottom:16px}.gv-activated .gv-desk-stack-space-lg>:not(:last-child){margin-bottom:24px}.gv-activated .gv-desk-text-left{text-align:left}.gv-activated .gv-desk-text-center{text-align:center}.gv-activated .gv-desk-text-right{text-align:right}}@media (min-width:1280px){.gv-activated .gv-desk-lg-border{border:1px solid var(--color-border)}.gv-activated .gv-desk-lg-border-t{border-top:1px solid var(--color-border)}.gv-activated .gv-desk-lg-border-b{border-bottom:1px solid var(--color-border)}.gv-activated .gv-desk-lg-border-l{border-left:1px solid var(--color-border)}.gv-activated .gv-desk-lg-border-r{border-right:1px solid var(--color-border)}.gv-activated .gv-desk-lg-border-alt{border:1px solid var(--color-border-alt)}.gv-activated .gv-desk-lg-border-alt-t{border-top:1px solid var(--color-border-alt)}.gv-activated .gv-desk-lg-border-alt-b{border-bottom:1px solid var(--color-border-alt)}.gv-activated .gv-desk-lg-border-alt-l{border-left:1px solid var(--color-border-alt)}.gv-activated .gv-desk-lg-border-alt-r{border-right:1px solid var(--color-border-alt)}.gv-activated .gv-desk-lg-border-0{border:0!important}.gv-activated .gv-desk-lg-radius{border-radius:var(--border-radius)}.gv-activated .gv-desk-lg-radius-tl{border-top-left-radius:var(--border-radius)}.gv-activated .gv-desk-lg-radius-tr{border-top-right-radius:var(--border-radius)}.gv-activated .gv-desk-lg-radius-bl{border-bottom-left-radius:var(--border-radius)}.gv-activated .gv-desk-lg-radius-br{border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-desk-lg-radius-t{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius)}.gv-activated .gv-desk-lg-radius-r{border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-desk-lg-radius-b{border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.gv-activated .gv-desk-lg-radius-l{border-top-left-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius)}.gv-activated .gv-desk-lg-radius-0{border-radius:0!important}.gv-activated .gv-desk-lg-flex-row{flex-direction:row}.gv-activated .gv-desk-lg-flex-row-reverse{flex-direction:row-reverse}.gv-activated .gv-desk-lg-flex-col{flex-direction:column}.gv-activated .gv-desk-lg-flex-col-reverse{flex-direction:column-reverse}.gv-activated .gv-desk-lg-content-center{align-content:center}.gv-activated .gv-desk-lg-items-start{align-items:flex-start}.gv-activated .gv-desk-lg-items-end{align-items:flex-end}.gv-activated .gv-desk-lg-items-center{align-items:center}.gv-activated .gv-desk-lg-items-baseline{align-items:baseline}.gv-activated .gv-desk-lg-items-stretch{align-items:stretch}.gv-activated .gv-desk-lg-justify-start{justify-content:flex-start}.gv-activated .gv-desk-lg-justify-end{justify-content:flex-end}.gv-activated .gv-desk-lg-justify-center{justify-content:center}.gv-activated .gv-desk-lg-justify-between{justify-content:space-between}.gv-activated .gv-desk-lg-justify-around{justify-content:space-around}.gv-activated .gv-desk-lg-justify-evenly{justify-content:space-evenly}.gv-activated .gv-desk-lg-order-first{order:-1}.gv-activated .gv-desk-lg-order-last{order:99}.gv-activated .gv-desk-lg-gap-xs{gap:4px}.gv-activated .gv-desk-lg-gap-sm{gap:8px}.gv-activated .gv-desk-lg-gap-md{gap:16px}.gv-activated .gv-desk-lg-gap-lg{gap:24px}.gv-activated .gv-desk-lg-gap-0{gap:0!important}.gv-activated .gv-desk-lg-flex{display:flex}.gv-activated .gv-desk-lg-block{display:block}.gv-activated .gv-desk-lg-inline{display:inline}.gv-activated .gv-desk-lg-inline-block{display:inline-block}.gv-activated .gv-desk-lg-hidden{display:none}.gv-activated .gv-desk-lg-invisible{visibility:hidden}.gv-activated .gv-desk-lg-collapse{visibility:collapse}.gv-activated .gv-desk-lg-m-0{margin:0!important}.gv-activated .gv-desk-lg-mt-0{margin-top:0!important}.gv-activated .gv-desk-lg-mb-0{margin-bottom:0!important}.gv-activated .gv-desk-lg-ml-0{margin-left:0!important}.gv-activated .gv-desk-lg-mr-0{margin-right:0!important}.gv-activated .gv-desk-lg-mx-0,.gv-activated .gv-desk-lg-my-0{margin-left:0!important;margin-right:0!important}.gv-activated .gv-desk-lg-m-xs{margin:4px}.gv-activated .gv-desk-lg-mt-xs{margin-top:4px}.gv-activated .gv-desk-lg-mb-xs{margin-bottom:4px}.gv-activated .gv-desk-lg-ml-xs{margin-left:4px}.gv-activated .gv-desk-lg-mr-xs{margin-right:4px}.gv-activated .gv-desk-lg-mx-xs{margin-left:4px;margin-right:4px}.gv-activated .gv-desk-lg-my-xs{margin-top:4px;margin-bottom:4px}.gv-activated .gv-desk-lg-m-sm{margin:8px}.gv-activated .gv-desk-lg-mt-sm{margin-top:8px}.gv-activated .gv-desk-lg-mb-sm{margin-bottom:8px}.gv-activated .gv-desk-lg-ml-sm{margin-left:8px}.gv-activated .gv-desk-lg-mr-sm{margin-right:8px}.gv-activated .gv-desk-lg-mx-sm{margin-left:8px;margin-right:8px}.gv-activated .gv-desk-lg-my-sm{margin-top:8px;margin-bottom:8px}.gv-activated .gv-desk-lg-m-md{margin:16px}.gv-activated .gv-desk-lg-mt-md{margin-top:16px}.gv-activated .gv-desk-lg-mb-md{margin-bottom:16px}.gv-activated .gv-desk-lg-ml-md{margin-left:16px}.gv-activated .gv-desk-lg-mr-md{margin-right:16px}.gv-activated .gv-desk-lg-mx-md{margin-left:16px;margin-right:16px}.gv-activated .gv-desk-lg-my-md{margin-top:16px;margin-bottom:16px}.gv-activated .gv-desk-lg-m-lg{margin:24px}.gv-activated .gv-desk-lg-mt-lg{margin-top:24px}.gv-activated .gv-desk-lg-mb-lg{margin-bottom:24px}.gv-activated .gv-desk-lg-ml-lg{margin-left:24px}.gv-activated .gv-desk-lg-mr-lg{margin-right:24px}.gv-activated .gv-desk-lg-mx-lg{margin-left:24px;margin-right:24px}.gv-activated .gv-desk-lg-my-lg{margin-top:24px;margin-bottom:24px}.gv-activated .gv-desk-lg-m-auto{margin:auto}.gv-activated .gv-desk-lg-mt-auto{margin-top:auto}.gv-activated .gv-desk-lg-mb-auto{margin-bottom:auto}.gv-activated .gv-desk-lg-ml-auto{margin-left:auto}.gv-activated .gv-desk-lg-mr-auto{margin-right:auto}.gv-activated .gv-desk-lg-mx-auto{margin-left:auto;margin-right:auto}.gv-activated .gv-desk-lg-my-auto{margin-top:auto;margin-bottom:auto}.gv-activated .gv-desk-lg-p-0{padding:0!important}.gv-activated .gv-desk-lg-pt-0{padding-top:0!important}.gv-activated .gv-desk-lg-pb-0{padding-bottom:0!important}.gv-activated .gv-desk-lg-pl-0{padding-left:0!important}.gv-activated .gv-desk-lg-pr-0{padding-right:0!important}.gv-activated .gv-desk-lg-px-0,.gv-activated .gv-desk-lg-py-0{padding-left:0!important;padding-right:0!important}.gv-activated .gv-desk-lg-p-xs{padding:4px}.gv-activated .gv-desk-lg-pt-xs{padding-top:4px}.gv-activated .gv-desk-lg-pb-xs{padding-bottom:4px}.gv-activated .gv-desk-lg-pl-xs{padding-left:4px}.gv-activated .gv-desk-lg-pr-xs{padding-right:4px}.gv-activated .gv-desk-lg-px-xs{padding-left:4px;padding-right:4px}.gv-activated .gv-desk-lg-py-xs{padding-top:4px;padding-bottom:4px}.gv-activated .gv-desk-lg-p-sm{padding:8px}.gv-activated .gv-desk-lg-pt-sm{padding-top:8px}.gv-activated .gv-desk-lg-pb-sm{padding-bottom:8px}.gv-activated .gv-desk-lg-pl-sm{padding-left:8px}.gv-activated .gv-desk-lg-pr-sm{padding-right:8px}.gv-activated .gv-desk-lg-px-sm{padding-left:8px;padding-right:8px}.gv-activated .gv-desk-lg-py-sm{padding-top:8px;padding-bottom:8px}.gv-activated .gv-desk-lg-p-md{padding:16px}.gv-activated .gv-desk-lg-pt-md{padding-top:16px}.gv-activated .gv-desk-lg-pb-md{padding-bottom:16px}.gv-activated .gv-desk-lg-pl-md{padding-left:16px}.gv-activated .gv-desk-lg-pr-md{padding-right:16px}.gv-activated .gv-desk-lg-px-md{padding-left:16px;padding-right:16px}.gv-activated .gv-desk-lg-py-md{padding-top:16px;padding-bottom:16px}.gv-activated .gv-desk-lg-p-lg{padding:24px}.gv-activated .gv-desk-lg-pt-lg{padding-top:24px}.gv-activated .gv-desk-lg-pb-lg{padding-bottom:24px}.gv-activated .gv-desk-lg-pl-lg{padding-left:24px}.gv-activated .gv-desk-lg-pr-lg{padding-right:24px}.gv-activated .gv-desk-lg-px-lg{padding-left:24px;padding-right:24px}.gv-activated .gv-desk-lg-py-lg{padding-top:24px;padding-bottom:24px}.gv-activated .gv-desk-lg-stack-space-xs>:not(:last-child){margin-bottom:4px}.gv-activated .gv-desk-lg-stack-space-sm>:not(:last-child){margin-bottom:8px}.gv-activated .gv-desk-lg-stack-space-md>:not(:last-child){margin-bottom:16px}.gv-activated .gv-desk-lg-stack-space-lg>:not(:last-child){margin-bottom:24px}.gv-activated .gv-desk-lg-text-left{text-align:left}.gv-activated .gv-desk-lg-text-center{text-align:center}.gv-activated .gv-desk-lg-text-right{text-align:right}}.gv-activated .gv-margin-sm{margin:var(--size-sm)}.gv-activated .gv-margin-md{margin:var(--size-md)}.gv-activated .gv-margin-lg{margin:var(--size-lg)}.gv-activated .gv-margin-top-sm{margin-top:var(--size-sm)}.gv-activated .gv-margin-top-md{margin-top:var(--size-md)}.gv-activated .gv-margin-top-lg{margin-top:var(--size-lg)}.gv-activated .gv-margin-bottom-sm{margin-bottom:var(--size-sm)}.gv-activated .gv-margin-bottom-md{margin-bottom:var(--size-md)}.gv-activated .gv-margin-bottom-lg{margin-bottom:var(--size-lg)}.gv-activated .gv-margin-left-sm{margin-left:var(--size-sm)}.gv-activated .gv-margin-left-md{margin-left:var(--size-md)}.gv-activated .gv-margin-left-lg{margin-left:var(--size-lg)}.gv-activated .gv-margin-right-sm{margin-right:var(--size-sm)}.gv-activated .gv-margin-right-md{margin-right:var(--size-md)}.gv-activated .gv-margin-right-lg{margin-right:var(--size-lg)}.gv-activated .gv-padding-sm{padding:var(--size-sm)}.gv-activated .gv-padding-md{padding:var(--size-md)}.gv-activated .gv-padding-lg{padding:var(--size-lg)}.gv-activated .gv-padding-top-sm{padding-top:var(--size-sm)}.gv-activated .gv-padding-top-md{padding-top:var(--size-md)}.gv-activated .gv-padding-top-lg{padding-top:var(--size-lg)}.gv-activated .gv-padding-bottom-sm{padding-bottom:var(--size-sm)}.gv-activated .gv-padding-bottom-md{padding-bottom:var(--size-md)}.gv-activated .gv-padding-bottom-lg{padding-bottom:var(--size-lg)}.gv-activated .gv-padding-left-sm{padding-left:var(--size-sm)}.gv-activated .gv-padding-left-md{padding-left:var(--size-md)}.gv-activated .gv-padding-left-lg{padding-left:var(--size-lg)}.gv-activated .gv-padding-right-sm{padding-right:var(--size-sm)}.gv-activated .gv-padding-right-md{padding-right:var(--size-md)}.gv-activated .gv-padding-right-lg{padding-right:var(--size-lg)}.gv-activated .gv-no-margin{margin:0!important}.gv-activated .gv-no-margin-top{margin-top:0!important}.gv-activated .gv-no-margin-bottom{margin-bottom:0!important}.gv-activated .gv-no-margin-top-bottom{margin-top:0!important;margin-bottom:0!important}.gv-activated .gv-no-margin-left{margin-left:0!important}.gv-activated .gv-no-margin-right{margin-right:0!important}.gv-activated .gv-no-margin-left-right{margin-left:0!important;margin-right:0!important}.gv-activated .gv-no-padding{padding:0!important}.gv-activated .gv-no-padding-top{padding-top:0!important}.gv-activated .gv-no-padding-bottom{padding-bottom:0!important}.gv-activated .gv-no-padding-top-bottom{padding-top:0!important;padding-bottom:0!important}.gv-activated .gv-no-padding-left{padding-left:0!important}.gv-activated .gv-no-padding-right{padding-right:0!important}.gv-activated .gv-no-padding-left-right{padding-left:0!important;padding-right:0!important}@media screen and (max-width:360px){.gv-activated .gv-fluid-margin{margin:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-fluid-margin{margin:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-fluid-margin{margin:48px}}@media screen and (max-width:360px){.gv-activated .gv-fluid-margin-top{margin-top:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-fluid-margin-top{margin-top:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-fluid-margin-top{margin-top:48px}}@media screen and (max-width:360px){.gv-activated .gv-fluid-margin-bottom{margin-bottom:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-fluid-margin-bottom{margin-bottom:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-fluid-margin-bottom{margin-bottom:48px}}@media screen and (max-width:360px){.gv-activated .gv-fluid-margin-left{margin-left:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-fluid-margin-left{margin-left:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-fluid-margin-left{margin-left:48px}}@media screen and (max-width:360px){.gv-activated .gv-fluid-margin-right{margin-right:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-fluid-margin-right{margin-right:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-fluid-margin-right{margin-right:48px}}@media screen and (max-width:360px){.gv-activated .gv-fluid-margin-top-bottom{margin-top:24px;margin-bottom:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-fluid-margin-top-bottom{margin-top:calc(24px + 24*((100vw - 360px)/1080));margin-bottom:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-fluid-margin-top-bottom{margin-top:48px;margin-bottom:48px}}@media screen and (max-width:360px){.gv-activated .gv-fluid-margin-left-right{margin-left:24px;margin-right:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-fluid-margin-left-right{margin-left:calc(24px + 24*((100vw - 360px)/1080));margin-right:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-fluid-margin-left-right{margin-left:48px;margin-right:48px}}@media screen and (max-width:360px){.gv-activated .gv-fluid-padding{padding:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-fluid-padding{padding:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-fluid-padding{padding:48px}}@media screen and (max-width:360px){.gv-activated .gv-fluid-padding-top{padding-top:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-fluid-padding-top{padding-top:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-fluid-padding-top{padding-top:48px}}@media screen and (max-width:360px){.gv-activated .gv-fluid-padding-bottom{padding-bottom:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-fluid-padding-bottom{padding-bottom:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-fluid-padding-bottom{padding-bottom:48px}}@media screen and (max-width:360px){.gv-activated .gv-fluid-padding-left{padding-left:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-fluid-padding-left{padding-left:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-fluid-padding-left{padding-left:48px}}@media screen and (max-width:360px){.gv-activated .gv-fluid-padding-right{padding-right:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-fluid-padding-right{padding-right:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-fluid-padding-right{padding-right:48px}}@media screen and (max-width:360px){.gv-activated .gv-fluid-padding-top-bottom{padding-top:24px;padding-bottom:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-fluid-padding-top-bottom{padding-top:calc(24px + 24*((100vw - 360px)/1080));padding-bottom:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-fluid-padding-top-bottom{padding-top:48px;padding-bottom:48px}}@media screen and (max-width:360px){.gv-activated .gv-fluid-padding-left-right{padding-left:24px;padding-right:24px}}@media screen and (min-width:361px) and (max-width:1439px){.gv-activated .gv-fluid-padding-left-right{padding-left:calc(24px + 24*((100vw - 360px)/1080));padding-right:calc(24px + 24*((100vw - 360px)/1080))}}@media screen and (min-width:1440px){.gv-activated .gv-fluid-padding-left-right{padding-left:48px;padding-right:48px}}@media (max-width:599px){.gv-activated .gv-mobile-margin-sm{margin:var(--size-sm)}.gv-activated .gv-mobile-margin-md{margin:var(--size-md)}.gv-activated .gv-mobile-margin-lg{margin:var(--size-lg)}.gv-activated .gv-mobile-margin-top-sm{margin-top:var(--size-sm)}.gv-activated .gv-mobile-margin-top-md{margin-top:var(--size-md)}.gv-activated .gv-mobile-margin-top-lg{margin-top:var(--size-lg)}.gv-activated .gv-mobile-margin-bottom-sm{margin-bottom:var(--size-sm)}.gv-activated .gv-mobile-margin-bottom-md{margin-bottom:var(--size-md)}.gv-activated .gv-mobile-margin-bottom-lg{margin-bottom:var(--size-lg)}.gv-activated .gv-mobile-margin-left-sm{margin-left:var(--size-sm)}.gv-activated .gv-mobile-margin-left-md{margin-left:var(--size-md)}.gv-activated .gv-mobile-margin-left-lg{margin-left:var(--size-lg)}.gv-activated .gv-mobile-margin-right-sm{margin-right:var(--size-sm)}.gv-activated .gv-mobile-margin-right-md{margin-right:var(--size-md)}.gv-activated .gv-mobile-margin-right-lg{margin-right:var(--size-lg)}.gv-activated .gv-mobile-padding-sm{padding:var(--size-sm)}.gv-activated .gv-mobile-padding-md{padding:var(--size-md)}.gv-activated .gv-mobile-padding-lg{padding:var(--size-lg)}.gv-activated .gv-mobile-padding-top-sm{padding-top:var(--size-sm)}.gv-activated .gv-mobile-padding-top-md{padding-top:var(--size-md)}.gv-activated .gv-mobile-padding-top-lg{padding-top:var(--size-lg)}.gv-activated .gv-mobile-padding-bottom-sm{padding-bottom:var(--size-sm)}.gv-activated .gv-mobile-padding-bottom-md{padding-bottom:var(--size-md)}.gv-activated .gv-mobile-padding-bottom-lg{padding-bottom:var(--size-lg)}.gv-activated .gv-mobile-padding-left-sm{padding-left:var(--size-sm)}.gv-activated .gv-mobile-padding-left-md{padding-left:var(--size-md)}.gv-activated .gv-mobile-padding-left-lg{padding-left:var(--size-lg)}.gv-activated .gv-mobile-padding-right-sm{padding-right:var(--size-sm)}.gv-activated .gv-mobile-padding-right-md{padding-right:var(--size-md)}.gv-activated .gv-mobile-padding-right-lg{padding-right:var(--size-lg)}.gv-activated .gv-mobile-no-margin{margin:0!important}.gv-activated .gv-mobile-no-margin-top{margin-top:0!important}.gv-activated .gv-mobile-no-margin-bottom{margin-bottom:0!important}.gv-activated .gv-mobile-no-margin-top-bottom{margin-top:0!important;margin-bottom:0!important}.gv-activated .gv-mobile-no-margin-left{margin-left:0!important}.gv-activated .gv-mobile-no-margin-right{margin-right:0!important}.gv-activated .gv-mobile-no-margin-left-right{margin-left:0!important;margin-right:0!important}.gv-activated .gv-mobile-no-padding{padding:0!important}.gv-activated .gv-mobile-no-padding-top{padding-top:0!important}.gv-activated .gv-mobile-no-padding-bottom{padding-bottom:0!important}.gv-activated .gv-mobile-no-padding-top-bottom{padding-top:0!important;padding-bottom:0!important}.gv-activated .gv-mobile-no-padding-left{padding-left:0!important}.gv-activated .gv-mobile-no-padding-right{padding-right:0!important}.gv-activated .gv-mobile-no-padding-left-right{padding-left:0!important;padding-right:0!important}}@media (min-width:600px) and (max-width:1023px){.gv-activated .gv-tablet-margin-sm{margin:var(--size-sm)}.gv-activated .gv-tablet-margin-md{margin:var(--size-md)}.gv-activated .gv-tablet-margin-lg{margin:var(--size-lg)}.gv-activated .gv-tablet-margin-top-sm{margin-top:var(--size-sm)}.gv-activated .gv-tablet-margin-top-md{margin-top:var(--size-md)}.gv-activated .gv-tablet-margin-top-lg{margin-top:var(--size-lg)}.gv-activated .gv-tablet-margin-bottom-sm{margin-bottom:var(--size-sm)}.gv-activated .gv-tablet-margin-bottom-md{margin-bottom:var(--size-md)}.gv-activated .gv-tablet-margin-bottom-lg{margin-bottom:var(--size-lg)}.gv-activated .gv-tablet-margin-left-sm{margin-left:var(--size-sm)}.gv-activated .gv-tablet-margin-left-md{margin-left:var(--size-md)}.gv-activated .gv-tablet-margin-left-lg{margin-left:var(--size-lg)}.gv-activated .gv-tablet-margin-right-sm{margin-right:var(--size-sm)}.gv-activated .gv-tablet-margin-right-md{margin-right:var(--size-md)}.gv-activated .gv-tablet-margin-right-lg{margin-right:var(--size-lg)}.gv-activated .gv-tablet-padding-sm{padding:var(--size-sm)}.gv-activated .gv-tablet-padding-md{padding:var(--size-md)}.gv-activated .gv-tablet-padding-lg{padding:var(--size-lg)}.gv-activated .gv-tablet-padding-top-sm{padding-top:var(--size-sm)}.gv-activated .gv-tablet-padding-top-md{padding-top:var(--size-md)}.gv-activated .gv-tablet-padding-top-lg{padding-top:var(--size-lg)}.gv-activated .gv-tablet-padding-bottom-sm{padding-bottom:var(--size-sm)}.gv-activated .gv-tablet-padding-bottom-md{padding-bottom:var(--size-md)}.gv-activated .gv-tablet-padding-bottom-lg{padding-bottom:var(--size-lg)}.gv-activated .gv-tablet-padding-left-sm{padding-left:var(--size-sm)}.gv-activated .gv-tablet-padding-left-md{padding-left:var(--size-md)}.gv-activated .gv-tablet-padding-left-lg{padding-left:var(--size-lg)}.gv-activated .gv-tablet-padding-right-sm{padding-right:var(--size-sm)}.gv-activated .gv-tablet-padding-right-md{padding-right:var(--size-md)}.gv-activated .gv-tablet-padding-right-lg{padding-right:var(--size-lg)}}@media (min-width:600px) and (max-width:767px){.gv-activated .gv-tablet-small-margin-sm{margin:var(--size-sm)}.gv-activated .gv-tablet-small-margin-md{margin:var(--size-md)}.gv-activated .gv-tablet-small-margin-lg{margin:var(--size-lg)}.gv-activated .gv-tablet-small-margin-top-sm{margin-top:var(--size-sm)}.gv-activated .gv-tablet-small-margin-top-md{margin-top:var(--size-md)}.gv-activated .gv-tablet-small-margin-top-lg{margin-top:var(--size-lg)}.gv-activated .gv-tablet-small-margin-bottom-sm{margin-bottom:var(--size-sm)}.gv-activated .gv-tablet-small-margin-bottom-md{margin-bottom:var(--size-md)}.gv-activated .gv-tablet-small-margin-bottom-lg{margin-bottom:var(--size-lg)}.gv-activated .gv-tablet-small-margin-left-sm{margin-left:var(--size-sm)}.gv-activated .gv-tablet-small-margin-left-md{margin-left:var(--size-md)}.gv-activated .gv-tablet-small-margin-left-lg{margin-left:var(--size-lg)}.gv-activated .gv-tablet-small-margin-right-sm{margin-right:var(--size-sm)}.gv-activated .gv-tablet-small-margin-right-md{margin-right:var(--size-md)}.gv-activated .gv-tablet-small-margin-right-lg{margin-right:var(--size-lg)}.gv-activated .gv-tablet-small-padding-sm{padding:var(--size-sm)}.gv-activated .gv-tablet-small-padding-md{padding:var(--size-md)}.gv-activated .gv-tablet-small-padding-lg{padding:var(--size-lg)}.gv-activated .gv-tablet-small-padding-top-sm{padding-top:var(--size-sm)}.gv-activated .gv-tablet-small-padding-top-md{padding-top:var(--size-md)}.gv-activated .gv-tablet-small-padding-top-lg{padding-top:var(--size-lg)}.gv-activated .gv-tablet-small-padding-bottom-sm{padding-bottom:var(--size-sm)}.gv-activated .gv-tablet-small-padding-bottom-md{padding-bottom:var(--size-md)}.gv-activated .gv-tablet-small-padding-bottom-lg{padding-bottom:var(--size-lg)}.gv-activated .gv-tablet-small-padding-left-sm{padding-left:var(--size-sm)}.gv-activated .gv-tablet-small-padding-left-md{padding-left:var(--size-md)}.gv-activated .gv-tablet-small-padding-left-lg{padding-left:var(--size-lg)}.gv-activated .gv-tablet-small-padding-right-sm{padding-right:var(--size-sm)}.gv-activated .gv-tablet-small-padding-right-md{padding-right:var(--size-md)}.gv-activated .gv-tablet-small-padding-right-lg{padding-right:var(--size-lg)}}@media (min-width:768px) and (max-width:1023px){.gv-activated .gv-tablet-large-margin-sm{margin:var(--size-sm)}.gv-activated .gv-tablet-large-margin-md{margin:var(--size-md)}.gv-activated .gv-tablet-large-margin-lg{margin:var(--size-lg)}.gv-activated .gv-tablet-large-margin-top-sm{margin-top:var(--size-sm)}.gv-activated .gv-tablet-large-margin-top-md{margin-top:var(--size-md)}.gv-activated .gv-tablet-large-margin-top-lg{margin-top:var(--size-lg)}.gv-activated .gv-tablet-large-margin-bottom-sm{margin-bottom:var(--size-sm)}.gv-activated .gv-tablet-large-margin-bottom-md{margin-bottom:var(--size-md)}.gv-activated .gv-tablet-large-margin-bottom-lg{margin-bottom:var(--size-lg)}.gv-activated .gv-tablet-large-margin-left-sm{margin-left:var(--size-sm)}.gv-activated .gv-tablet-large-margin-left-md{margin-left:var(--size-md)}.gv-activated .gv-tablet-large-margin-left-lg{margin-left:var(--size-lg)}.gv-activated .gv-tablet-large-margin-right-sm{margin-right:var(--size-sm)}.gv-activated .gv-tablet-large-margin-right-md{margin-right:var(--size-md)}.gv-activated .gv-tablet-large-margin-right-lg{margin-right:var(--size-lg)}.gv-activated .gv-tablet-large-padding-sm{padding:var(--size-sm)}.gv-activated .gv-tablet-large-padding-md{padding:var(--size-md)}.gv-activated .gv-tablet-large-padding-lg{padding:var(--size-lg)}.gv-activated .gv-tablet-large-padding-top-sm{padding-top:var(--size-sm)}.gv-activated .gv-tablet-large-padding-top-md{padding-top:var(--size-md)}.gv-activated .gv-tablet-large-padding-top-lg{padding-top:var(--size-lg)}.gv-activated .gv-tablet-large-padding-bottom-sm{padding-bottom:var(--size-sm)}.gv-activated .gv-tablet-large-padding-bottom-md{padding-bottom:var(--size-md)}.gv-activated .gv-tablet-large-padding-bottom-lg{padding-bottom:var(--size-lg)}.gv-activated .gv-tablet-large-padding-left-sm{padding-left:var(--size-sm)}.gv-activated .gv-tablet-large-padding-left-md{padding-left:var(--size-md)}.gv-activated .gv-tablet-large-padding-left-lg{padding-left:var(--size-lg)}.gv-activated .gv-tablet-large-padding-right-sm{padding-right:var(--size-sm)}.gv-activated .gv-tablet-large-padding-right-md{padding-right:var(--size-md)}.gv-activated .gv-tablet-large-padding-right-lg{padding-right:var(--size-lg)}}@media (min-width:1024px){.gv-activated .gv-desktop-margin-sm{margin:var(--size-sm)}.gv-activated .gv-desktop-margin-md{margin:var(--size-md)}.gv-activated .gv-desktop-margin-lg{margin:var(--size-lg)}.gv-activated .gv-desktop-margin-top-sm{margin-top:var(--size-sm)}.gv-activated .gv-desktop-margin-top-md{margin-top:var(--size-md)}.gv-activated .gv-desktop-margin-top-lg{margin-top:var(--size-lg)}.gv-activated .gv-desktop-margin-bottom-sm{margin-bottom:var(--size-sm)}.gv-activated .gv-desktop-margin-bottom-md{margin-bottom:var(--size-md)}.gv-activated .gv-desktop-margin-bottom-lg{margin-bottom:var(--size-lg)}.gv-activated .gv-desktop-margin-left-sm{margin-left:var(--size-sm)}.gv-activated .gv-desktop-margin-left-md{margin-left:var(--size-md)}.gv-activated .gv-desktop-margin-left-lg{margin-left:var(--size-lg)}.gv-activated .gv-desktop-margin-right-sm{margin-right:var(--size-sm)}.gv-activated .gv-desktop-margin-right-md{margin-right:var(--size-md)}.gv-activated .gv-desktop-margin-right-lg{margin-right:var(--size-lg)}.gv-activated .gv-desktop-padding-sm{padding:var(--size-sm)}.gv-activated .gv-desktop-padding-md{padding:var(--size-md)}.gv-activated .gv-desktop-padding-lg{padding:var(--size-lg)}.gv-activated .gv-desktop-padding-top-sm{padding-top:var(--size-sm)}.gv-activated .gv-desktop-padding-top-md{padding-top:var(--size-md)}.gv-activated .gv-desktop-padding-top-lg{padding-top:var(--size-lg)}.gv-activated .gv-desktop-padding-bottom-sm{padding-bottom:var(--size-sm)}.gv-activated .gv-desktop-padding-bottom-md{padding-bottom:var(--size-md)}.gv-activated .gv-desktop-padding-bottom-lg{padding-bottom:var(--size-lg)}.gv-activated .gv-desktop-padding-left-sm{padding-left:var(--size-sm)}.gv-activated .gv-desktop-padding-left-md{padding-left:var(--size-md)}.gv-activated .gv-desktop-padding-left-lg{padding-left:var(--size-lg)}.gv-activated .gv-desktop-padding-right-sm{padding-right:var(--size-sm)}.gv-activated .gv-desktop-padding-right-md{padding-right:var(--size-md)}.gv-activated .gv-desktop-padding-right-lg{padding-right:var(--size-lg)}}.gv-activated,.gv-activated.gv-dark-mode{--color-border-form:var(--color-border);--color-chart-400:#029697;--color-chart-500:#965592;--color-chart-700:#c55986;--color-chart-800:#89a8c2;--color-chart-400-hover:#01696a;--color-chart-700-hover:#9e476b}.gv-activated{--size-xs:4px;--size-sm:8px;--size-md:16px;--size-lg:24px;--size-xl:48px;--size-border:1px;--size-fluid-max-value:48;--size-fluid-min-value:24;--size-icon-sm:20px;--size-icon-md:24px;--size-tile-sm:48px;--size-tile-md:72px;--size-tile-lg:96px;--size-tile-xl:144px;--font-size-heading-xxxl-max:60;--font-size-heading-xxxl-min:26;--font-size-heading-xxl-max:48;--font-size-heading-xxl-min:22;--font-size-heading-xl-max:40;--font-size-heading-xl-min:18;--font-size-heading-lg-max:32;--font-size-heading-lg-min:16;--font-size-heading-md-max:28;--font-size-heading-md-min:16;--font-size-heading-sm-max:24;--font-size-heading-sm-min:14;--font-size-heading-xs-max:20;--font-size-heading-xs-min:14;--letterspacing-heading-xxxl-max:0;--letterspacing-heading-xxxl-min:.04;--letterspacing-heading-xxl-max:0;--letterspacing-heading-xxl-min:.04;--letterspacing-heading-xl-max:.1;--letterspacing-heading-xl-min:0;--letterspacing-heading-lg-max:.05;--letterspacing-heading-lg-min:0;--letterspacing-heading-md-max:.04;--letterspacing-heading-md-min:.05;--letterspacing-heading-sm-max:.04;--letterspacing-heading-sm-min:.05;--letterspacing-heading-xs-max:.03;--letterspacing-heading-xs-min:.05;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-heading-default:var(--font-weight-bold);--font-weight-heading-storefront:var(--font-weight-semibold);--font-weight-heading:var(--font-weight-heading-default);--line-height-body:1.5;--line-height-heading:1.3;--line-height-heading-xxxl:var(--line-height-heading);--line-height-heading-xxl:var(--line-height-heading);--line-height-heading-xl:var(--line-height-heading);--line-height-heading-lg:var(--line-height-heading);--line-height-heading-md:var(--line-height-heading);--line-height-heading-sm:var(--line-height-heading);--line-height-heading-xs:var(--line-height-heading);--color-gray-100:#ffffff;--color-gray-200:#f7f7f7;--color-gray-300:#e2e2e2;--color-gray-400:#cecece;--color-gray-500:#69686b;--color-gray-600:#3a383e;--color-gray-700:#282629;--color-gray-800:#1e1d1f;--color-gray-900:#141414;--color-on-fixed-white:var(--color-gray-100);--color-on-fixed-black:var(--color-gray-900);--color-on-fixed-alternative:var(--color-gray-500);--color-body-on-default:var(--color-gray-900);--color-body-on-alternative:var(--color-gray-500);--color-body-on-inverted:var(--color-gray-200);--color-body-on-placeholder:var(--color-gray-500);--color-body-on-disabled:rgba(20, 20, 20, .5);--color-body-on-deleted:rgba(20, 20, 20, .8);--color-button-bg-primary:var(--color-primary);--color-button-bg-cta:var(--color-cta);--color-button-border-secondary:var(--color-primary);--color-button-fg-on:var(--color-on-fixed-white);--color-button-fg-on-primary:var(--color-button-fg-on);--color-button-fg-on-cta:var(--color-button-fg-on);--color-chart-100:#0066aa;--color-chart-200:#fec600;--color-chart-300:#63528d;--color-chart-600:#7ebdf0;--color-chart-neutral:#cecece;--color-chart-100-hover:#004777;--color-chart-200-hover:#b28b00;--color-chart-300-hover:#453963;--color-chart-500-hover:#693c66;--color-chart-600-hover:#5884a8;--color-chart-800-hover:#6e869b;--color-chart-neutral-hover:#909090;--color-link:var(--color-body-on-default);--color-surface-bright:var(--color-gray-100);--color-surface-dim:var(--color-gray-200);--color-surface-muted:var(--color-gray-300);--color-surface-inverted:var(--color-gray-700);--color-surface-form:var(--color-gray-200);--color-surface-form-disabled:rgba(247, 247, 247, .5);--color-surface-form-deleted:rgba(248, 217, 221, .5);--color-surface-highlight:var(--color-state-active);--color-illustration-background:var(--color-gray-100);--color-illustration-gray:var(--color-gray-200);--color-illustration-line:var(--color-gray-900);--color-overlay-dark:rgba(20, 20, 20, .6);--color-overlay-light:rgba(255, 255, 255, .9);--color-shadow-subtle:0 1px 1px 0 rgba(20, 20, 20, .05);--color-shadow-elevated:0 2px 2px 0 rgba(20, 20, 20, .05);--opacity-active-elements:.7;--opacity-disabled-elements:.5;--color-signal-alert:#c70018;--color-signal-alert-light:#f8d9dd;--color-signal-info:#0066aa;--color-signal-info-light:#d9ebf7;--color-signal-success:#5d9a18;--color-signal-success-light:#ddedca;--color-signal-warning:#db7300;--color-signal-warning-light:#ffedd9;--color-border:var(--color-gray-400);--color-border-alt:var(--color-gray-300);--color-border-form-disabled:rgba(206, 206, 206, .5);--color-border-form-deleted:var(--color-border-form-disabled);--border-radius:4px;--input-radius:var(--border-radius);--card-radius:var(--border-radius);--notice-radius:var(--border-radius);--chip-radius:100px;--button-radius:var(--border-radius);--button-padding-lr:var(--size-md);--button-padding-tb:var(--size-sm);--color-state-form-active:#0066aa;--color-fg-form-on:var(--color-gray-100);--form-element-height:48px;--form-max-width:700px;--color-zebra-odd:var(--color-surface-dim);--color-zebra-even:var(--color-surface-bright);--color-zebra-hover:var(--color-state-hover);--navigation-bar-height:56px;--text-max-width:700px;--section-max-width-content:1112px;--section-y-max-value:136;--section-y-min-value:48;--section-x-max-value:164;--section-x-min-value:24;--section-gap-max-value:96;--section-gap-min-value:48;--color-primary:#0078c8;--color-secondary:#76b82a;--color-cta:var(--color-secondary);--color-illustration-100:#ebf5df;--color-illustration-200:#d9ebf7;--color-illustration-300:#a6d0ec;--color-state-active:#d9ebf7;--color-state-hover:#f2f8fc;--color-state-focus:#59a7db;--color-loader-primary:var(--color-primary);--color-loader-secondary:#b3d7ef;--color-section-surface-100:#7047eb;--color-section-surface-200:#88e4b7;--color-section-surface-300:#ffbd7c;--color-section-surface-product-default:#5423e7;--color-section-body-on-product-default:var(--color-on-fixed-white);--color-section-body-on-alternative-product-default:var(--color-on-fixed-white);--color-section-accent-on-bright:#ffbd7c;--color-section-accent-on-dim:#8bb2e5;--color-section-accent-on-100:#7047eb;--color-section-accent-on-200:#7ddaac;--color-section-accent-on-300:#de8934;--color-section-accent-on-product-default:#de8934;--section-max-width-content:1320px;--section-x-max-value:120}.gv-activated .gv-storefront-section .gv-section-tag:before{background-color:var(--color-section-accent);border-radius:50%;content:"";display:block;flex-shrink:0;height:var(--size-icon-sm);width:var(--size-icon-sm)}.gv-activated.gv-dark-mode{--color-body-on-default:var(--color-gray-200);--color-body-on-alternative:var(--color-gray-400);--color-body-on-inverted:var(--color-gray-900);--color-body-on-placeholder:var(--color-gray-400);--color-body-on-disabled:rgba(247, 247, 247, .5);--color-body-on-deleted:rgba(247, 247, 247, .8);--color-surface-bright:var(--color-gray-700);--color-surface-dim:var(--color-gray-800);--color-surface-muted:var(--color-gray-600);--color-surface-inverted:var(--color-gray-100);--color-surface-form:var(--color-gray-600);--color-surface-form-disabled:rgba(58, 56, 62, .5);--color-surface-form-deleted:rgba(133, 13, 10, .5);--color-illustration-background:var(--color-gray-700);--color-illustration-gray:var(--color-gray-500);--color-illustration-line:var(--color-gray-200);--color-overlay-light:rgba(20, 20, 20, .8);--color-signal-alert:#f18c99;--color-signal-alert-light:#850d0a;--color-signal-info:#d9ebf7;--color-signal-info-light:#235c9d;--color-signal-success:#d7f4b5;--color-signal-success-light:#186065;--color-signal-warning:#febf79;--color-signal-warning-light:#856304;--color-border:var(--color-gray-500);--color-border-alt:var(--color-gray-600);--color-border-form-disabled:rgba(105, 104, 107, .5);--color-chart-100:#d9ebf7;--color-chart-200:#b28b00;--color-chart-300:#453963;--color-chart-600:#6b8aa4;--color-chart-neutral:#a5a5a5;--color-chart-100-hover:#98a4ad;--color-chart-200-hover:#7f6300;--color-chart-300-hover:#736398;--color-chart-500-hover:#a66fa2;--color-chart-600-hover:#4b6173;--color-chart-800-hover:#acc2d4;--color-chart-neutral-hover:#7c7c7c;--color-state-form-active:#bfd9ea;--color-fg-form-on:var(--color-gray-900);--color-illustration-100:#bcc4b2;--color-illustration-200:#aebaca;--color-illustration-300:#87a1c8;--color-state-active:#00548c;--color-state-hover:#003c64;--color-surface-highlight:#00426e} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..cb5cb84 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "wp-marketplace", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/phpcs.xml b/phpcs.xml index 1186241..4d414c6 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -18,9 +18,8 @@ - - - + + @@ -29,6 +28,35 @@ + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + +