Copy disabled (too large)
Download .txt
Showing preview only (67,497K chars total). Download the full file to get everything.
Repository: wpscanteam/wpscan
Branch: master
Commit: 43a3de076bba
Files: 4987
Total size: 62.7 MB
Directory structure:
gitextract_9u6uo61d/
├── .codeclimate.yml
├── .dockerignore
├── .github/
│ ├── CONTRIBUTING.md
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── feature_request.md
│ │ └── other-issue.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── dependabot.yml
│ └── workflows/
│ ├── build.yml
│ ├── docker.yml
│ └── gempush.yml
├── .gitignore
├── .rspec
├── .rubocop.yml
├── .ruby-gemset
├── .ruby-version
├── .simplecov
├── Dockerfile
├── Gemfile
├── LICENSE
├── README.md
├── Rakefile
├── app/
│ ├── app.rb
│ ├── controllers/
│ │ ├── aliases.rb
│ │ ├── core.rb
│ │ ├── custom_directories.rb
│ │ ├── enumeration/
│ │ │ ├── cli_options.rb
│ │ │ └── enum_methods.rb
│ │ ├── enumeration.rb
│ │ ├── main_theme.rb
│ │ ├── password_attack.rb
│ │ ├── vuln_api.rb
│ │ └── wp_version.rb
│ ├── controllers.rb
│ ├── finders/
│ │ ├── config_backups/
│ │ │ └── known_filenames.rb
│ │ ├── config_backups.rb
│ │ ├── db_exports/
│ │ │ └── known_locations.rb
│ │ ├── db_exports.rb
│ │ ├── interesting_findings/
│ │ │ ├── backup_db.rb
│ │ │ ├── debug_log.rb
│ │ │ ├── duplicator_installer_log.rb
│ │ │ ├── emergency_pwd_reset_script.rb
│ │ │ ├── full_path_disclosure.rb
│ │ │ ├── mu_plugins.rb
│ │ │ ├── multisite.rb
│ │ │ ├── php_disabled.rb
│ │ │ ├── readme.rb
│ │ │ ├── registration.rb
│ │ │ ├── tmm_db_migrate.rb
│ │ │ ├── upload_directory_listing.rb
│ │ │ ├── upload_sql_dump.rb
│ │ │ └── wp_cron.rb
│ │ ├── interesting_findings.rb
│ │ ├── main_theme/
│ │ │ ├── css_style_in_404_page.rb
│ │ │ ├── css_style_in_homepage.rb
│ │ │ ├── urls_in_404_page.rb
│ │ │ ├── urls_in_homepage.rb
│ │ │ └── woo_framework_meta_generator.rb
│ │ ├── main_theme.rb
│ │ ├── medias/
│ │ │ └── attachment_brute_forcing.rb
│ │ ├── medias.rb
│ │ ├── passwords/
│ │ │ ├── wp_login.rb
│ │ │ ├── xml_rpc.rb
│ │ │ └── xml_rpc_multicall.rb
│ │ ├── passwords.rb
│ │ ├── plugin_version/
│ │ │ └── readme.rb
│ │ ├── plugin_version.rb
│ │ ├── plugins/
│ │ │ ├── body_pattern.rb
│ │ │ ├── comment.rb
│ │ │ ├── config_parser.rb
│ │ │ ├── header_pattern.rb
│ │ │ ├── javascript_var.rb
│ │ │ ├── known_locations.rb
│ │ │ ├── query_parameter.rb
│ │ │ ├── urls_in_404_page.rb
│ │ │ ├── urls_in_homepage.rb
│ │ │ └── xpath.rb
│ │ ├── plugins.rb
│ │ ├── theme_version/
│ │ │ ├── style.rb
│ │ │ └── woo_framework_meta_generator.rb
│ │ ├── theme_version.rb
│ │ ├── themes/
│ │ │ ├── known_locations.rb
│ │ │ ├── urls_in_404_page.rb
│ │ │ └── urls_in_homepage.rb
│ │ ├── themes.rb
│ │ ├── timthumb_version/
│ │ │ └── bad_request.rb
│ │ ├── timthumb_version.rb
│ │ ├── timthumbs/
│ │ │ └── known_locations.rb
│ │ ├── timthumbs.rb
│ │ ├── users/
│ │ │ ├── author_id_brute_forcing.rb
│ │ │ ├── author_posts.rb
│ │ │ ├── author_sitemap.rb
│ │ │ ├── login_error_messages.rb
│ │ │ ├── oembed_api.rb
│ │ │ ├── rss_generator.rb
│ │ │ ├── wp_json_api.rb
│ │ │ └── yoast_seo_author_sitemap.rb
│ │ ├── users.rb
│ │ ├── wp_items/
│ │ │ └── urls_in_page.rb
│ │ ├── wp_items.rb
│ │ ├── wp_version/
│ │ │ ├── atom_generator.rb
│ │ │ ├── rdf_generator.rb
│ │ │ ├── readme.rb
│ │ │ ├── rss_generator.rb
│ │ │ └── unique_fingerprinting.rb
│ │ └── wp_version.rb
│ ├── finders.rb
│ ├── models/
│ │ ├── config_backup.rb
│ │ ├── db_export.rb
│ │ ├── interesting_finding.rb
│ │ ├── media.rb
│ │ ├── plugin.rb
│ │ ├── theme.rb
│ │ ├── timthumb.rb
│ │ ├── wp_item.rb
│ │ ├── wp_version.rb
│ │ └── xml_rpc.rb
│ ├── models.rb
│ └── views/
│ ├── cli/
│ │ ├── core/
│ │ │ ├── banner.erb
│ │ │ ├── db_update_finished.erb
│ │ │ ├── db_update_started.erb
│ │ │ ├── not_fully_configured.erb
│ │ │ └── version.erb
│ │ ├── enumeration/
│ │ │ ├── config_backups.erb
│ │ │ ├── db_exports.erb
│ │ │ ├── medias.erb
│ │ │ ├── plugins.erb
│ │ │ ├── themes.erb
│ │ │ ├── timthumbs.erb
│ │ │ └── users.erb
│ │ ├── finding.erb
│ │ ├── info.erb
│ │ ├── main_theme/
│ │ │ └── theme.erb
│ │ ├── notice.erb
│ │ ├── password_attack/
│ │ │ └── users.erb
│ │ ├── theme.erb
│ │ ├── usage.erb
│ │ ├── vuln_api/
│ │ │ └── status.erb
│ │ ├── vulnerability.erb
│ │ ├── wp_item.erb
│ │ └── wp_version/
│ │ └── version.erb
│ └── json/
│ ├── core/
│ │ ├── banner.erb
│ │ ├── db_update_finished.erb
│ │ ├── db_update_started.erb
│ │ ├── not_fully_configured.erb
│ │ └── version.erb
│ ├── enumeration/
│ │ ├── config_backups.erb
│ │ ├── db_exports.erb
│ │ ├── medias.erb
│ │ ├── plugins.erb
│ │ ├── themes.erb
│ │ ├── timthumbs.erb
│ │ └── users.erb
│ ├── finding.erb
│ ├── main_theme/
│ │ └── theme.erb
│ ├── password_attack/
│ │ └── users.erb
│ ├── theme.erb
│ ├── vuln_api/
│ │ └── status.erb
│ ├── wp_item.erb
│ └── wp_version/
│ └── version.erb
├── bin/
│ ├── wpscan
│ ├── wpscan-docker
│ ├── wpscan-docker-dev
│ ├── wpscan-memprof
│ └── wpscan-stackprof
├── lib/
│ ├── wpscan/
│ │ ├── browser.rb
│ │ ├── controller.rb
│ │ ├── controllers.rb
│ │ ├── db/
│ │ │ ├── dynamic_finders/
│ │ │ │ ├── base.rb
│ │ │ │ ├── plugin.rb
│ │ │ │ ├── theme.rb
│ │ │ │ └── wordpress.rb
│ │ │ ├── fingerprints.rb
│ │ │ ├── plugin.rb
│ │ │ ├── plugins.rb
│ │ │ ├── sponsor.rb
│ │ │ ├── theme.rb
│ │ │ ├── themes.rb
│ │ │ ├── updater.rb
│ │ │ ├── vuln_api.rb
│ │ │ ├── wp_item.rb
│ │ │ ├── wp_items.rb
│ │ │ └── wp_version.rb
│ │ ├── db.rb
│ │ ├── errors/
│ │ │ ├── enumeration.rb
│ │ │ ├── http.rb
│ │ │ ├── update.rb
│ │ │ ├── vuln_api.rb
│ │ │ ├── wordpress.rb
│ │ │ └── xmlrpc.rb
│ │ ├── errors.rb
│ │ ├── finders/
│ │ │ ├── dynamic_finder/
│ │ │ │ ├── finder.rb
│ │ │ │ ├── version/
│ │ │ │ │ ├── body_pattern.rb
│ │ │ │ │ ├── comment.rb
│ │ │ │ │ ├── config_parser.rb
│ │ │ │ │ ├── finder.rb
│ │ │ │ │ ├── header_pattern.rb
│ │ │ │ │ ├── javascript_var.rb
│ │ │ │ │ ├── query_parameter.rb
│ │ │ │ │ └── xpath.rb
│ │ │ │ ├── wp_item_version.rb
│ │ │ │ ├── wp_items/
│ │ │ │ │ └── finder.rb
│ │ │ │ └── wp_version.rb
│ │ │ └── finder/
│ │ │ └── wp_version/
│ │ │ └── smart_url_checker.rb
│ │ ├── finders.rb
│ │ ├── helper.rb
│ │ ├── parsed_cli.rb
│ │ ├── references.rb
│ │ ├── target/
│ │ │ └── platform/
│ │ │ ├── wordpress/
│ │ │ │ └── custom_directories.rb
│ │ │ └── wordpress.rb
│ │ ├── target.rb
│ │ ├── typhoeus/
│ │ │ └── response.rb
│ │ ├── version.rb
│ │ ├── vulnerability.rb
│ │ └── vulnerable.rb
│ └── wpscan.rb
├── spec/
│ ├── app/
│ │ ├── controllers/
│ │ │ ├── aliases_spec.rb
│ │ │ ├── core_spec.rb
│ │ │ ├── custom_directories_spec.rb
│ │ │ ├── enumeration_spec.rb
│ │ │ ├── password_attack_spec.rb
│ │ │ ├── vuln_api_spec.rb
│ │ │ └── wp_version_spec.rb
│ │ ├── finders/
│ │ │ ├── config_backups/
│ │ │ │ └── known_filenames_spec.rb
│ │ │ ├── config_backups_spec.rb
│ │ │ ├── db_exports/
│ │ │ │ └── known_locations_spec.rb
│ │ │ ├── db_exports_spec.rb
│ │ │ ├── interesting_findings/
│ │ │ │ ├── backup_db_spec.rb
│ │ │ │ ├── debug_log_spec.rb
│ │ │ │ ├── duplicator_installer_log_spec.rb
│ │ │ │ ├── emergency_pwd_reset_script_spec.rb
│ │ │ │ ├── full_path_disclosure_spec.rb
│ │ │ │ ├── mu_plugins_spec.rb
│ │ │ │ ├── multisite_spec.rb
│ │ │ │ ├── php_disabled_spec.rb
│ │ │ │ ├── readme_spec.rb
│ │ │ │ ├── registration_spec.rb
│ │ │ │ ├── tmm_db_migrate_spec.rb
│ │ │ │ ├── upload_direcrory_listing_spec.rb
│ │ │ │ ├── upload_sql_dump_spec.rb
│ │ │ │ └── wp_cron_spec.rb
│ │ │ ├── interesting_findings_spec.rb
│ │ │ ├── main_theme/
│ │ │ │ ├── css_style_in_404_page_spec.rb
│ │ │ │ ├── css_style_in_homepage_spec.rb
│ │ │ │ ├── urls_in_404_page_spec.rb.rb
│ │ │ │ ├── urls_in_homepage_spec.rb
│ │ │ │ └── woo_framework_meta_generator_spec.rb
│ │ │ ├── main_theme_spec.rb
│ │ │ ├── medias/
│ │ │ │ └── attachment_brute_forcing_spec.rb
│ │ │ ├── medias_spec.rb
│ │ │ ├── passwords/
│ │ │ │ ├── wp_login_spec.rb
│ │ │ │ └── xml_rpc_spec.rb
│ │ │ ├── plugin_version/
│ │ │ │ └── readme_spec.rb
│ │ │ ├── plugin_version_spec.rb
│ │ │ ├── plugins/
│ │ │ │ ├── body_pattern_spec.rb
│ │ │ │ ├── comment_spec.rb
│ │ │ │ ├── config_parser_spec.rb
│ │ │ │ ├── header_pattern_spec.rb
│ │ │ │ ├── javascript_var_spec.rb
│ │ │ │ ├── known_locations_spec.rb
│ │ │ │ ├── query_parameter_spec.rb
│ │ │ │ ├── urls_in_404_page_spec.rb
│ │ │ │ ├── urls_in_homepage_spec.rb
│ │ │ │ └── xpath_spec.rb
│ │ │ ├── plugins_spec.rb
│ │ │ ├── theme_version/
│ │ │ │ ├── style_spec.rb
│ │ │ │ └── woo_framework_meta_generator_spec.rb
│ │ │ ├── theme_version_spec.rb
│ │ │ ├── themes/
│ │ │ │ ├── known_locations_spec.rb
│ │ │ │ ├── urls_in_404_page_spec.rb
│ │ │ │ └── urls_in_homepage_spec.rb
│ │ │ ├── themes_spec.rb
│ │ │ ├── timthumb_version/
│ │ │ │ └── bad_request_spec.rb
│ │ │ ├── timthumb_version_spec.rb
│ │ │ ├── timthumbs/
│ │ │ │ └── known_locations_spec.rb
│ │ │ ├── timthumbs_spec.rb
│ │ │ ├── users/
│ │ │ │ ├── author_id_brute_forcing_spec.rb
│ │ │ │ ├── author_posts_spec.rb
│ │ │ │ ├── author_sitemap_spec.rb
│ │ │ │ ├── login_error_messages_spec.rb
│ │ │ │ ├── oembed_api_spec.rb
│ │ │ │ ├── rss_generator_spec.rb
│ │ │ │ ├── wp_json_api_spec.rb
│ │ │ │ └── yoast_seo_author_sitemap_spec.rb
│ │ │ ├── users_spec.rb
│ │ │ ├── wp_version/
│ │ │ │ ├── atom_generator_spec.rb
│ │ │ │ ├── rdf_generator_spec.rb
│ │ │ │ ├── readme_spec.rb
│ │ │ │ ├── rss_generator_spec.rb
│ │ │ │ └── unique_fingerprinting_spec.rb
│ │ │ └── wp_version_spec.rb
│ │ ├── models/
│ │ │ ├── interesting_finding_spec.rb
│ │ │ ├── media_spec.rb
│ │ │ ├── plugin_spec.rb
│ │ │ ├── theme_spec.rb
│ │ │ ├── timthumb_spec.rb
│ │ │ ├── wp_item_spec.rb
│ │ │ ├── wp_version_spec.rb
│ │ │ └── xml_rpc_spec.rb
│ │ └── views_spec.rb
│ ├── cache/
│ │ └── .gitignore
│ ├── fixtures/
│ │ ├── db/
│ │ │ ├── config_backups.txt
│ │ │ ├── db_exports.txt
│ │ │ ├── dynamic_finders.yml
│ │ │ ├── metadata.json
│ │ │ ├── sponsor.txt
│ │ │ ├── vuln_api/
│ │ │ │ ├── plugins/
│ │ │ │ │ ├── no-vulns-popular.json
│ │ │ │ │ ├── vulnerable-introduced-in.json
│ │ │ │ │ └── vulnerable-not-popular.json
│ │ │ │ ├── themes/
│ │ │ │ │ ├── dignitas-themes.json
│ │ │ │ │ ├── no-vulns-popular.json
│ │ │ │ │ ├── vulnerable-not-popular.json
│ │ │ │ │ └── yaaburnee-themes.json
│ │ │ │ └── wordpresses/
│ │ │ │ ├── 38.json
│ │ │ │ ├── 381.json
│ │ │ │ └── 40.json
│ │ │ └── wp_fingerprints.json
│ │ ├── dynamic_finders/
│ │ │ ├── expected.yml
│ │ │ ├── plugin_version/
│ │ │ │ ├── 10bit-paybuttons-easycard/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── 10bit-paybuttons-easycard-he_IL.po
│ │ │ │ ├── 10bit-paybuttons-pelecard/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── 10bit-paybuttons-pelecard-he_IL.po
│ │ │ │ ├── 24liveblog/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── 2fas/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── 2fas-pt_BR.po
│ │ │ │ ├── 2fas-light/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── 2kb-amazon-affiliates-store/
│ │ │ │ │ └── version_log/
│ │ │ │ │ └── template/
│ │ │ │ │ └── admin/
│ │ │ │ │ └── version.phtml
│ │ │ │ ├── 3-word-address-validation-field/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── 300form/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── 360-image/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── 360-product-viewer-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── wp360view.pot
│ │ │ │ ├── 360-video/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── 404-page/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── 404-solution/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── CHANGELOG.md
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── 404-to-301/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── 404-to-301.pot
│ │ │ │ ├── 4nton-extensions/
│ │ │ │ │ └── javascript_file/
│ │ │ │ │ └── assets/
│ │ │ │ │ └── js/
│ │ │ │ │ └── script.js
│ │ │ │ ├── 4partners/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── 4partners-ru_RU.po
│ │ │ │ ├── 9mail-wp-email-templates-designer/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── LayerSlider/
│ │ │ │ │ ├── language_translation_file/
│ │ │ │ │ │ └── languages/
│ │ │ │ │ │ └── LayerSlider-en_US.po
│ │ │ │ │ └── locale_translation_file/
│ │ │ │ │ └── locales/
│ │ │ │ │ └── LayerSlider-en_US.po
│ │ │ │ ├── Ultimate_VC_Addons/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── a-note-above-wp-dashboard-notes/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── a-z-listing/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.md
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── a-z-listing.pot
│ │ │ │ ├── a3-portfolio/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── a4-barcode-generator/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── wpbcu-barcode-generator.pot
│ │ │ │ ├── ab-human-time/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ab-human-time-it_IT.po
│ │ │ │ ├── abandoned-cart-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── abandoned-cart-for-woocommerce.pot
│ │ │ │ ├── abandoned-contact-form-7/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── abandoned-forms-contact-form-7.pot
│ │ │ │ ├── above-the-fold-optimization/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── absolute-thumbnail-column/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── absolute-thumbnail-column.pot
│ │ │ │ ├── academic-bloggers-toolkit/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── academic-bloggers-toolkit.pot
│ │ │ │ ├── academy-starter-templates/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── academy-starter-templates.pot
│ │ │ │ ├── accedeme-for-wp/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── wp-accedeme-es_ES.po
│ │ │ │ ├── accelerated-mobile-pages/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── accept-2checkout-payments-using-contact-form-7/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── accept-2checkout-payments-using-contact-form-7.pot
│ │ │ │ ├── accept-authorize-net-payments-using-contact-form-7/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── contact-form-7-authorize-net-addon.pot
│ │ │ │ ├── accept-qpay-payments-using-contact-form-7/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── accept-qpay-payments-using-contact-form-7.pot
│ │ │ │ ├── accept-sagepay-payments-using-contact-form-7/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── accept-sagepay-payments-using-contact-form-7.pot
│ │ │ │ ├── accept-stripe-payments-using-contact-form-7/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── contact-form-7-stripe-addon.pot
│ │ │ │ ├── accept-worldpay-payments-using-contact-form-7/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── contact-form-7-worldpay-addon.pot
│ │ │ │ ├── access-guard/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── access-guard.pot
│ │ │ │ ├── accessiblewp-skiplinks/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── accessiblewp-skiplinks.pot
│ │ │ │ ├── accordion-blocks/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── accordion-faq-block/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── accordion-for-wp/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── accordion-for-wp.pot
│ │ │ │ ├── aceide/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── acf-beautiful-flexible/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── acf-conditional-logic-advanced/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── acf-dropzone/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── acf-dropzone.pot
│ │ │ │ ├── acf-duplicate-repeater/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── acf-duplicate-repeater.pot
│ │ │ │ ├── acf-field-selector-field/
│ │ │ │ │ ├── translation_file/
│ │ │ │ │ │ └── lang/
│ │ │ │ │ │ └── acf-field-selector-field-hu_HU.mo
│ │ │ │ │ ├── translation_file2/
│ │ │ │ │ │ └── lang/
│ │ │ │ │ │ └── translation.po
│ │ │ │ │ ├── translation_file3/
│ │ │ │ │ │ └── lang/
│ │ │ │ │ │ └── acf-field-selector-field-hu_HU.po
│ │ │ │ │ └── translation_file_/
│ │ │ │ │ └── lang/
│ │ │ │ │ ├── acf-field-selector-field-hu_HU.mo
│ │ │ │ │ ├── acf-field-selector-field-hu_HU.po
│ │ │ │ │ └── translation.po
│ │ │ │ ├── acf-fields-in-custom-table/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── acffict.pot
│ │ │ │ ├── acf-flexible-content-extended/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── acf-flexible-content-preview/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── acf-openstreetmap-field/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── acf-openstreetmap-field.pot
│ │ │ │ ├── acf-options-for-polylang/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── acf-pro-show-fields-shortcode/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── uk_UA.po
│ │ │ │ ├── acf-quickedit-fields/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── acf-quickedit-fields.pot
│ │ │ │ ├── acf-sidebar-selector-field/
│ │ │ │ │ ├── translation_file/
│ │ │ │ │ │ └── lang/
│ │ │ │ │ │ └── acf-sidebar-selector-field-hu_HU.mo
│ │ │ │ │ ├── translation_file2/
│ │ │ │ │ │ └── lang/
│ │ │ │ │ │ └── translation.pot
│ │ │ │ │ └── translation_file3/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── acf-sidebar-selector-field-hu_HU.po
│ │ │ │ ├── acf-to-rest-api/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── composer.json
│ │ │ │ │ └── composer_file_/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── ach-updates-manager/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ach_upn_manager.pot
│ │ │ │ ├── aco-product-labels-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── aco-product-labels-for-woocommerce.pot
│ │ │ │ ├── aco-variation-swatches-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── aco-variation-swatches-for-woocommerce.pot
│ │ │ │ ├── aco-wishlist-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── aco-wishlist-for-woocommerce.pot
│ │ │ │ ├── acobot-chatbot/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── acobot.pot
│ │ │ │ ├── action-scheduler/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── active-directory-authentication-integration/
│ │ │ │ │ ├── translation_file/
│ │ │ │ │ │ └── active-directory-authentication-integration.pot
│ │ │ │ │ ├── translation_file2/
│ │ │ │ │ │ └── languages/
│ │ │ │ │ │ └── default.mo
│ │ │ │ │ └── translation_file3/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── default.po
│ │ │ │ ├── active-plugins-on-multisite/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── active-plugins.pot
│ │ │ │ ├── activecampaign-newsletter-subscription/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── default.pot
│ │ │ │ ├── activity-log-gravity-forms/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── wsal-gravityforms.pot
│ │ │ │ ├── activity-log-memberpress/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── activity-log-memberpress.pot
│ │ │ │ ├── activity-log-tablepress/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── activity-log-tablepress.pot
│ │ │ │ ├── activity-log-wp-seo/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── activity-log-wp-seo.pot
│ │ │ │ ├── activitystream-extension/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── localization/
│ │ │ │ │ └── activitystream_extension.pot
│ │ │ │ ├── actus-animated-tags/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── acumulus/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── lib/
│ │ │ │ │ │ └── siel/
│ │ │ │ │ │ └── acumulus/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── libraries/
│ │ │ │ │ └── Siel/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── acymailing-integration-for-uncanny-automator/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── language/
│ │ │ │ │ └── acymailing-integration-for-uncanny-automator.pot
│ │ │ │ ├── ad-blocks/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ad-blocks.pot
│ │ │ │ ├── ad-inserter/
│ │ │ │ │ ├── javascript_var/
│ │ │ │ │ │ └── js/
│ │ │ │ │ │ └── ad-inserter.js
│ │ │ │ │ └── style_var/
│ │ │ │ │ └── css/
│ │ │ │ │ └── ad-inserter.css
│ │ │ │ ├── ad-music-player-lite/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── plugin-name.pot
│ │ │ │ ├── adamrob-parallax-scroll/
│ │ │ │ │ └── style_comment/
│ │ │ │ │ └── css/
│ │ │ │ │ └── parallax.css
│ │ │ │ ├── adaptive-learning-with-learndash/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── adblock-notify-by-bweb/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── add-amazon-block/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── add-from-server/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── add-meta-tags/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── add-meta-tags.pot
│ │ │ │ ├── add-on-cf7-for-airtable/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── wpc-wpcf7-at.pot
│ │ │ │ ├── add-on-cf7-for-notion/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── wpc-wpcf7-ntn.pot
│ │ │ │ ├── add-on-contact-form-7-mailpoet/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── add-on-gravity-forms-mailpoet/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── add-on-woocommerce-mailpoet/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── add-product-frontend-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bytes_product_frontend.pot
│ │ │ │ ├── additional-block-styles/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── additional-content/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── additional-content.pot
│ │ │ │ ├── additional-product-fields-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── rednaowooextraproduct.pot
│ │ │ │ ├── addon-gravityforms-sendinblue-free/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── addon-gravityforms-sendinblue-free.pot
│ │ │ │ ├── addon-library/
│ │ │ │ │ └── release_log/
│ │ │ │ │ └── release_log.txt
│ │ │ │ ├── addon-library-layouts/
│ │ │ │ │ └── release_log/
│ │ │ │ │ └── release_log.txt
│ │ │ │ ├── addon-stripe-with-contact-form-7/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── stripe-with-contact-form-7.pot
│ │ │ │ ├── addonify-quick-view/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── address-autocomplete-google-places/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── address-autocomplete.pot
│ │ │ │ ├── addressfinder-woo/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── CHANGELOG.md
│ │ │ │ │ └── javascript_var/
│ │ │ │ │ └── addressfinder.js
│ │ │ │ ├── addy-autocomplete-woocommerce/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── adl-team/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── at.pot
│ │ │ │ ├── admin-atlex-cloud/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ru_RU.pot
│ │ │ │ ├── admin-bar/
│ │ │ │ │ ├── translation_file/
│ │ │ │ │ │ └── lang/
│ │ │ │ │ │ └── ru_RU.po
│ │ │ │ │ └── translation_file2/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── ru_RU.mo
│ │ │ │ ├── admin-bar-backend-search/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── ab-backend-search-de_DE.po
│ │ │ │ ├── admin-category-filter/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── post-category-filter.pot
│ │ │ │ ├── admin-color-schemes/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── admin-dashboard-last-edits/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── admin-email-as-from-address/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── admin-help-docs/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── admin-live-search/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── admin-live-search.pot
│ │ │ │ ├── admin-menu-manager/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── admin-menu-manager.pot
│ │ │ │ ├── admin-menu-reorder/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── admin-notes-wp/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── wp-admin-notes.pot
│ │ │ │ ├── admin-only-jetpack/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── admin-only-jetpack.pot
│ │ │ │ ├── admin-todotastic/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── admin-todotastic.pot
│ │ │ │ ├── admin-user-control/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── admin-user-control-ja.po
│ │ │ │ ├── admitad-tracking/
│ │ │ │ │ ├── translation_file/
│ │ │ │ │ │ └── languages/
│ │ │ │ │ │ └── admitadtracking.pot
│ │ │ │ │ ├── translation_file2/
│ │ │ │ │ │ └── languages/
│ │ │ │ │ │ └── admitadtracking-ru_RU.mo
│ │ │ │ │ └── translation_file3/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── admitadtracking-ru_RU.po
│ │ │ │ ├── adobe-xmp-for-wp/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── adobe-xmp-for-wp.pot
│ │ │ │ ├── adplugg/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── adrecord-affiliate/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── adrecord-affiliate.pot
│ │ │ │ ├── adshares/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── adsimple-vote/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── adsimple-vote-de_DE.po
│ │ │ │ ├── advance-cash-on-delivery-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── coderockz-wc-advance-cod-free.pot
│ │ │ │ ├── advance-custom-html/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── custom-html.pot
│ │ │ │ ├── advanced-category-column/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── advanced-cc-es_ES.po
│ │ │ │ ├── advanced-custom-fields-table-field/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── acf-table-pl_PL.po
│ │ │ │ ├── advanced-custom-types-for-divi/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── en_US.po
│ │ │ │ ├── advanced-database-cleaner/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── advanced-db-cleaner.pot
│ │ │ │ ├── advanced-google-recaptcha/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── advanced-google-recaptcha.pot
│ │ │ │ ├── advanced-image-comparison-for-elementor/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── advanced-options-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── i18n/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── advanced-options-for-woocommerce-he_IL.po
│ │ │ │ ├── advanced-post-excerpt/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── advanced-quiz/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── advanced-random-posts-widget/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── advanced-random-posts-widget.pot
│ │ │ │ ├── advanced-testimonial-carousel-for-elementor/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── advanced-testimonial-for-wp/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── itt_testimonial_textdomain-en_US.po
│ │ │ │ ├── advanced-twitter-profile-widget/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── atpw-pl_PL.po
│ │ │ │ ├── advanced-wp-table/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── advanced-wp-table.pot
│ │ │ │ ├── advanced-xprofile-fields-for-buddypress/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── advanced-xprofile-fields-for-buddypress.pot
│ │ │ │ ├── af-companion/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── affiliate-bridge/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── affiliate-bridge.pot
│ │ │ │ ├── affiliate-links-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── uk_UA.po
│ │ │ │ ├── affiliatebooster-blocks/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── affiliates/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── affiliates-buddypress/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── affiliates-events-manager/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── affiliates-formidable/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── affiliates-ninja-forms/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── affiliates-woocommerce-light/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── affiliatewp-blocks/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── affilicious/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── affliates-manager-prime-for-wc-lite/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ciwcamp-affliate-manager.pot
│ │ │ │ ├── afi-to-integrations/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── after-comment-prompts/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── ag-twitter/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── age-verify/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── age-verify.pot
│ │ │ │ ├── aged-content-message/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── agile-whatsapp-share/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── agile_whatsapp_share.po
│ │ │ │ ├── agnoplay/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── nl.po
│ │ │ │ ├── agy-verification/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── agy-verification.pot
│ │ │ │ ├── ahachat-messenger-marketing/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── ahime-image-printer/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── ai-bot/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ai-bot.pot
│ │ │ │ ├── ai-co-pilot-for-wp/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── ai-contact-form/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── ai-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── i18n/
│ │ │ │ │ └── firstmedia-ai-text-es_VE.po
│ │ │ │ ├── ai-image-generator/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── ai-scribe/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── aiscribe.pot
│ │ │ │ ├── aiaibot/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── aiaibot.pot
│ │ │ │ ├── aio-for-divi/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── en_US.po
│ │ │ │ ├── air-wp-sync/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── airwpsync-fr_FR.po
│ │ │ │ ├── aircash-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── aircash-for-woocommerce-hr.po
│ │ │ │ ├── airstory/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── CHANGELOG.md
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── airstory.pot
│ │ │ │ ├── ajax-contact-forms/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── acfw30-en_US.po
│ │ │ │ ├── ajax-load-more-by-bkker-theme/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── en_US.po
│ │ │ │ ├── ajax-search-bar/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── ajaxify-filters/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── language/
│ │ │ │ │ └── ajaxify-filters-en_US.po
│ │ │ │ ├── alceris-analytics/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── alerts-block/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── ali2woo-lite/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── ali2woo-migration-tool/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── align-text-edge/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── align-text-edge.pot
│ │ │ │ ├── alkubot/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── Alkubot-en_US.po
│ │ │ │ ├── all-embed-addons-for-elementor/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── allembed.pot
│ │ │ │ ├── all-in-all-image-hover-effect/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── cu-framework/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── zh_CN.po
│ │ │ │ ├── all-in-one-event-calendar/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── language/
│ │ │ │ │ └── all-in-one-event-calendar.po
│ │ │ │ ├── all-in-one-forms/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easycalculationform.pot
│ │ │ │ ├── all-in-one-music-player/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── all-in-one-music-player.pot
│ │ │ │ ├── all-in-one-redirection/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── all-in-one-redirection.pot
│ │ │ │ ├── allada-tshirt-designer-for-woocommerce/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── allow-javascript-in-text-widgets/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── allow-javascript-in-text-widgets.pot
│ │ │ │ ├── allpay-payment-gateway/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── allpay-payment-gateway-ru_RU.po
│ │ │ │ ├── alnp-facebook-pixel-tracking/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── alnp-facebook-pixel-tracking.pot
│ │ │ │ ├── alo-easymail/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── alpha-google-map-for-elementor/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── alpha-google-map-for-elementor.pot
│ │ │ │ ├── alpha-insights-intelligent-profit-reports-for-woocommerce/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── alpha-price-table-for-elementor/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── alpha-price-table-for-elementor.pot
│ │ │ │ ├── alpha-single-product-for-elementor/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── alpha-single-product-for-elementor.pot
│ │ │ │ ├── altapay-for-woocommerce/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── always-allow-admin-comments/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── always-visible-floating-product-publish-button-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── floating-product-publish-button-it_IT.po
│ │ │ │ ├── am-lottieplayer/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── amazing-portfolio/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── inc/
│ │ │ │ │ └── framework/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cs-framework.pot
│ │ │ │ ├── amazon-fps/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ppdg.pot
│ │ │ │ ├── amazon-product-in-a-post-plugin/
│ │ │ │ │ └── css_file/
│ │ │ │ │ └── css/
│ │ │ │ │ └── amazon-default-plugin-styles.css
│ │ │ │ ├── amnav-menu-control/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── amnav-menu-control.pot
│ │ │ │ ├── amwal-checkout/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── amzft/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── analogwp-templates/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ang.pot
│ │ │ │ ├── analytics-for-cloudflare/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── ananas/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── angelleye-paypal-invoicing/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── angelleye-paypal-invoicing-en_US.po
│ │ │ │ ├── ani-mate-animation-extension/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── animate-blocks/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── animate-blocks.pot
│ │ │ │ ├── animated-blocks/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── animation-block/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── announce-on-publish/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── announce-on-publish-es_ES.po
│ │ │ │ ├── annytab-photoswipe/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── annytab-photoswipe.pot
│ │ │ │ ├── anrghg/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── anrghg-en_GB.po
│ │ │ │ ├── anspress-question-answer/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── anspress-question-answer.pot
│ │ │ │ ├── anti-ddosbot-recaptcha-protection/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── anwp-post-grid-for-elementor/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── anycomment/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── anycomment-analytics/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── anything-order-by-terms/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── aoplayer/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── aoplayer.pot
│ │ │ │ ├── apcu-manager/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── api-cache-pro/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── api-key-for-google-maps/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── gmaps-api-key.po
│ │ │ │ ├── apijoin-gumroad/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── apiki-wp-care/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── aplazame/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── i18n/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── aplazame.pot
│ │ │ │ ├── aplazo-payment-gateway/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── i18n/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── aplazo-payment-gateway-es_MX.po
│ │ │ │ ├── apollo13-framework-extensions/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── app-log/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── aplg.pot
│ │ │ │ ├── appconsent-cmp-sfbx/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── appconsent-cmp-sfbx.pot
│ │ │ │ ├── appmaps/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── appmaps.pot
│ │ │ │ ├── appsy/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── apx-link-status/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── apx-link-status.pot
│ │ │ │ ├── ar-contactus/
│ │ │ │ │ └── changelog/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── arabic-webfonts/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── archive-disabler/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── archive-disabler.pot
│ │ │ │ ├── archive-title/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── archiver/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── archiver.pot
│ │ │ │ ├── archives-by-category-and-date/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── archives-by-category-and-date.pot
│ │ │ │ ├── arforms-form-builder/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── arforms-form-builder-ja_JP.po
│ │ │ │ ├── arkam-lite/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ar.po
│ │ │ │ ├── arlo-training-and-event-management-system/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── armember-membership/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ARMember-en_US.po
│ │ │ │ ├── array-partition/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── arrayforms/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── arvancloud-cdn/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── arvancloud-cdn.pot
│ │ │ │ ├── arvancloud-vod/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── arvancloud-vod.pot
│ │ │ │ ├── arya-license-manager/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── arya-license-manager.pot
│ │ │ │ ├── ascendoor-logo-slide/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ascendoor-logo-slide.pot
│ │ │ │ ├── ascendoor-metadata-manager/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ascendoor-metadata-manager.pot
│ │ │ │ ├── ask-faq/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ask-faq-pro.pot
│ │ │ │ ├── ask-me-anything-anonymously/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ask-me-anything-anonymously.pot
│ │ │ │ ├── asmember/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── asmember-de_DE.po
│ │ │ │ ├── assign-missing-categories/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── assign-missing-categories.pot
│ │ │ │ ├── asterisk-web-callback/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── z_asteriskcallback-ru_RU.po
│ │ │ │ ├── astra-sites/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── astra-sites.pot
│ │ │ │ ├── astra-widgets/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── astra-widgets.pot
│ │ │ │ ├── asura-connector/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── athemes-blocks/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── athemes-blocks.pot
│ │ │ │ ├── atlas-content-modeler/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── CHANGELOG.md
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── atlas-content-modeler.pot
│ │ │ │ ├── atom-featured-image/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── atomic-blocks/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── atomic-blocks.pot
│ │ │ │ ├── atr-inline-rtl-ltr/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── attachment-file-icons/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── attachment-file-icons-en_US.po
│ │ │ │ ├── attachment-usage/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── attachment-usage-de_DE.po
│ │ │ │ ├── attribute-stock-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── attribute-stock-for-woocommerce.pot
│ │ │ │ ├── audio-widget/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── audio-widget.pot
│ │ │ │ ├── audius-block/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── aurora-heatmap/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── aurora-heatmap-ja.po
│ │ │ │ ├── auth0/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── authentiq/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── author-bio-box/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── author-bio-box.pot
│ │ │ │ ├── author-images/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── author-images.pot
│ │ │ │ ├── authors-autocomplete-meta-box/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── authors-autocomplete-meta-box-es_ES.po
│ │ │ │ ├── auto-animateimage/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── animateimage-ja.po
│ │ │ │ ├── auto-category-for-posts/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── auto-category-for-posts.pot
│ │ │ │ ├── auto-date-year-month/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── auto-delete-applications-add-on-for-wp-job-openings/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── auto-delete-wp-job-openings.pot
│ │ │ │ ├── auto-deselect-uncategorized/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── auto-deselect-uncategorized.pot
│ │ │ │ ├── auto-load-next-post/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── auto-load-next-post.pot
│ │ │ │ ├── auto-login-with-cloudflare/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── auto-login-with-cloudflare-zh_TW.po
│ │ │ │ ├── auto-menu-from-pages/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── auto-menu-from-pages.pot
│ │ │ │ ├── auto-post-woocommerce-products/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── auto-post-woocommerce-products-es_ES.po
│ │ │ │ ├── autoclear-autoptimize-cache/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── autoclear-autoptimize-cache.pot
│ │ │ │ ├── autoclose/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── autoclose-en_US.pot
│ │ │ │ ├── autocomplete-wc-order-status/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── autodate/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── default.pot
│ │ │ │ ├── autodescription/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── language/
│ │ │ │ │ └── autodescription.pot
│ │ │ │ ├── automatic-image-uploader/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── aiu.pot
│ │ │ │ ├── automatic-post-categories/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── automatic-post-categories.pot
│ │ │ │ ├── automatically-add-product-to-cart/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── automizy-gravity-forms/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── automizy-gravity-forms.pot
│ │ │ │ ├── autoptimize-criticalcss/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ao_critcss_aas.pot
│ │ │ │ ├── autoremove-attachments/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── autotags/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── AutoTags.pot
│ │ │ │ ├── avadanta-companion/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── avadanta-companion.pot
│ │ │ │ ├── avaibook/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── avaibook-pt_PT.po
│ │ │ │ ├── avalon23-products-filter-for-woocommerce/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── avangpress/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── avartan-slider-lite/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── avartan-slider-lite.pot
│ │ │ │ ├── avatarplus/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── avatarplus-de_DE.po
│ │ │ │ ├── avatars-meta-box/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.md
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── avatars-meta-box.pot
│ │ │ │ ├── avif-support/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── avif-support.pot
│ │ │ │ ├── aw-woocommerce-kode-pembayaran/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── aw-woocommerce-pos/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── aw-woocommerce-tiki/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── aweos-wp-lock/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── awesome-hooks/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── awesome-instant-search/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── translation/
│ │ │ │ │ └── ais-es_ES.po
│ │ │ │ ├── awesome-support/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── awesome-support.pot
│ │ │ │ ├── awesome-surveys/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── awesome-surveys-hu_HU.po
│ │ │ │ ├── awp-booking-calendar/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── awsa-quick-buy/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── awsa-quick-buy.pot
│ │ │ │ ├── awsa-shipping/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── awsa-shipping-fa_IR.po
│ │ │ │ ├── awstats-script/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── awstats-script.pot
│ │ │ │ ├── ax-scrollto-top/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── ayecode-connect/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ayecode-connect-en_US.po
│ │ │ │ ├── b-productiv-lite/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── b-slider/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── sliders-en_US.po
│ │ │ │ ├── b-tiktok-feed/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── tiktok.pot
│ │ │ │ ├── b2b-e-commerce-lite/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── b2binpay-payments-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── b2binpay-payments-for-woocommerce.pot
│ │ │ │ ├── ba-book-everything/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ba-book-everything.pot
│ │ │ │ ├── ba-event/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ba-event.pot
│ │ │ │ ├── baap-mobile-version/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── baap-mobile-version.pot
│ │ │ │ ├── back-in-stock-notifications-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── back-in-stock-notifications-for-woocommerce-en_US.po
│ │ │ │ ├── back-in-stock-notifier-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cwginstocknotifier-cz_CZ.po
│ │ │ │ ├── back-top/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── setting-page/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bn_BD.po
│ │ │ │ ├── backdrop-post-types/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── backdrop-post-types.pot
│ │ │ │ ├── backend-startpage-customizer/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── backend-startpage-customizer-de_DE.po
│ │ │ │ ├── background-music-player-lite/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── plugin-name.pot
│ │ │ │ ├── backstage/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── backstage.pot
│ │ │ │ ├── backupbuddy/
│ │ │ │ │ └── history_log/
│ │ │ │ │ └── history.txt
│ │ │ │ ├── backupwordpress/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── backupwordpress.pot
│ │ │ │ ├── badgeos-edd-integration/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── badgeos-lifterlms-integration/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── badgeos-nomination-submission-add-on/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── badgeos-rest-api-addon/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── banana-faq/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── banana-faq.pot
│ │ │ │ ├── banggood-dropshipping/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── bangla-sidebar-login/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── I18n/
│ │ │ │ │ └── bn-sidebar-login.pot
│ │ │ │ ├── bankval/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── banner-alerts/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── banner-alerts.pot
│ │ │ │ ├── banner-slider-for-advertisement/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── wpwbs-en_US.po
│ │ │ │ ├── basic-alerts/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── bayarcash-givewp/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bayarcash-givewp.pot
│ │ │ │ ├── bb-gallery/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bb_gallery.pot
│ │ │ │ ├── bb-header-footer/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bb-header-footer.pot
│ │ │ │ ├── bb-login-module/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── login-module-for-bb.pot
│ │ │ │ ├── bb-toolbox/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── bb-vapor-modules/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bb-vapor-modules.pot
│ │ │ │ ├── bbpress-digest/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bbp-digest.pot
│ │ │ │ ├── bbpress-improved-statistics-users-online/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── bbpressmoderation/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── bbredirector/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── default.pot
│ │ │ │ ├── bdthemes-prime-slider-lite/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── be-shortcodes/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── be-shortcodes.pot
│ │ │ │ ├── bea-activator/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.MD
│ │ │ │ ├── beastiepress/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── beastiepress-en_US.po
│ │ │ │ ├── beautiful-custom-invoices/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── beautimour-kit/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── beautimour-kit.pot
│ │ │ │ ├── beaver-builder-lite-version/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── beaverlodge-pushmenu/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── default.po
│ │ │ │ ├── beer-blocks/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── before-after-image-block/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── before-after-images-for-divi/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── en_US.po
│ │ │ │ ├── bellows-accordion-menu/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bellows.pot
│ │ │ │ ├── beonepage-lite/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── beonepage-lite.pot
│ │ │ │ ├── bertha-ai-free/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── best-restaurant-menu-by-pricelisto/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── best-suggestion-boxes/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── best-suggestion-boxes.pot
│ │ │ │ ├── best-testimonial/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── best-testimonial.pot
│ │ │ │ ├── bestprice-analytics-integration/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── bethemesme/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bethemesme.pot
│ │ │ │ ├── better-admin-users-search/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── i18n/
│ │ │ │ │ └── baus.pot
│ │ │ │ ├── better-comments/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── better-comments-reply-manager/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── better-comments-reply-manager.pot
│ │ │ │ ├── better-file-editor/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── better-font-awesome/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── better-font-awesome.pot
│ │ │ │ ├── better-formats/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── betterformats.pot
│ │ │ │ ├── better-plugin-recommendations/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── better-plugin-recommendations.pot
│ │ │ │ ├── better-rest-api-featured-images/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── better-rest-api-featured-images.pot
│ │ │ │ ├── better-rest-endpoints/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── CHANGELOG.md
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── better-reviews-for-woocommerce/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── CHANGELOG.md
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── woo-better-reviews.pot
│ │ │ │ ├── better-website-performance/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── better-website-performance.pot
│ │ │ │ ├── better-wp-security/
│ │ │ │ │ └── history_log/
│ │ │ │ │ └── history.txt
│ │ │ │ ├── better-yourls/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── better-yourls.pot
│ │ │ │ ├── beyond-identity-passwordless/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── bft-autoresponder/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── bft-autoresponder.pot
│ │ │ │ ├── bhoot-blocks-wp-job-manager/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── blocks-for-wp-job-manager.pot
│ │ │ │ ├── bible-online-popup/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── BOP.pot
│ │ │ │ ├── bigcommerce/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── bigly-dropship/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── bike-rental/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bike-rental-ru_RU.po
│ │ │ │ ├── billingo/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── billplz-for-edd/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── bim-ba/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lib/
│ │ │ │ │ └── cmb2/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cmb2.pot
│ │ │ │ ├── bing-translator/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bing-translator-bg_BG.po
│ │ │ │ ├── bip-pages/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bip-pages.pot
│ │ │ │ ├── birthday-widget-for-buddypress/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── bit-integrations/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bit-integrations.pot
│ │ │ │ ├── bit-social/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bit-social.pot
│ │ │ │ ├── bitform/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bitform.pot
│ │ │ │ ├── black-login-screen/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── langs/
│ │ │ │ │ └── black_login_screen-en_GB.po
│ │ │ │ ├── black-studio-tinymce-widget/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── black-studio-tinymce-widget.pot
│ │ │ │ ├── blade/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── blank-footnotes/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── blaze-checkout/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── bleumi-pay-crypto-payments-for-woocommerce/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── blimply/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lib/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── blimply.pot
│ │ │ │ ├── blkcanvas-easy-attachments/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── block-catalog/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── block-editor-gallery-slider/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── block-editor-gallery-slider.pot
│ │ │ │ ├── block-editor-navigator/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── block-editor-navigator.pot
│ │ │ │ ├── block-editor-search-replace/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── block-editor-search-replace.pot
│ │ │ │ ├── block-enhancements/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── block-enhancements.pot
│ │ │ │ ├── block-for-mailchimp/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── mailchimp.pot
│ │ │ │ ├── block-for-masonry-gallery/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── block-for-woo-product-table/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── block-for-woo-product-table.pot
│ │ │ │ ├── block-for-yandex-sovetnik/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── antisovet-ru_RU.po
│ │ │ │ ├── block-layouts/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── block-minimap/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── block-pattern-builder/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── block-spammers/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── wbs.pot
│ │ │ │ ├── block-xray-attributes/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── blockart-blocks/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── blockart.pot
│ │ │ │ ├── blockbuddy/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── blockify/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── assets/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── blockify.pot
│ │ │ │ ├── blockmeister/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── blockons/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── blockons.pot
│ │ │ │ ├── blockprotocol/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── blockq/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── locale/
│ │ │ │ │ └── blockq.pot
│ │ │ │ ├── blocks-by-projects-engine/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── blocks-export-import/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── blocks-for-eventbrite/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── CHANGELOG.md
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── blocks-for-shopengine/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── shopengine-gutenberg-addon.pot
│ │ │ │ ├── blocks-for-wp-editor/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── blocks-ultimate/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── blogging-tools/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── blogging-tools.pot
│ │ │ │ ├── bloglovin-follow/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bloglovin_follow_trans_domain.pot
│ │ │ │ ├── blogsqode-posts/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── blogsqode.pot
│ │ │ │ ├── blogware-importer/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── blogware-importer.pot
│ │ │ │ ├── blossom-recipe-maker/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── blossom-recipe-maker.pot
│ │ │ │ ├── blossomthemes-email-newsletter/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── blossomthemes-email-newsletter.pot
│ │ │ │ ├── blossomthemes-toolkit/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── blossomthemes-toolkit.pot
│ │ │ │ ├── blue-hat-cdn/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── blue-hat-cdn-pt_BR.po
│ │ │ │ ├── bluebox-pricing-table-block/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── bluehost-site-migrator/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bluehost-site-migrator.pot
│ │ │ │ ├── bma-lite-appointment-booking-and-scheduling/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── rtwbmal-book-my-appointment.pot
│ │ │ │ ├── body_pattern_passive_all.html
│ │ │ │ ├── boleto-cora/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── bolt-checkout-bigcommerce/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── bonaire/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── boo-recipes/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── boo-recipes-de_DE.po
│ │ │ │ ├── book-block/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── book-review/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── book-review.pot
│ │ │ │ ├── booking-activities/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── booking-activities.pot
│ │ │ │ ├── booking-x/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bookingx.pot
│ │ │ │ ├── bookingcom-official-searchbox/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bookingcom-official-searchbox-ru_RU.po
│ │ │ │ ├── bookingcom-product-helper/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bookingcom-product-helper-en_US.po
│ │ │ │ ├── bookingpress-appointment-booking/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bookingpress-appointment-booking-en_US.po
│ │ │ │ ├── bookmark-export/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── bookmark-export-de_DE.po
│ │ │ │ ├── bookwize-booking-form/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── boomerang/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── boomerang.pot
│ │ │ │ ├── booster-for-elementor/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── elementor-booster.pot
│ │ │ │ ├── booster-pack-for-divi/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── en_US.po
│ │ │ │ ├── boostimer/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── boostimer.pot
│ │ │ │ ├── bootstrap-for-contact-form-7/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── bopo-woo-product-bundle-builder/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── bot-for-telegram-on-woocommerce/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── bounce-handler-mailpoet/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── bowe-codes/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bowe-codes.pot
│ │ │ │ ├── boxtal-connect/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── Boxtal/
│ │ │ │ │ └── BoxtalConnectWoocommerce/
│ │ │ │ │ └── translation/
│ │ │ │ │ └── boxtal-connect-fr_FR.po
│ │ │ │ ├── bp-activity-social-share/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── buddypress-share.pot
│ │ │ │ ├── bp-avatar-suggestions/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-avatar-suggestions.pot
│ │ │ │ ├── bp-beta-tester/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-beta-tester.pot
│ │ │ │ ├── bp-block-users/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-block-users.pot
│ │ │ │ ├── bp-bookmarklet/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-bookmarklet.pot
│ │ │ │ ├── bp-create-group-type/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-add-group-types.pot
│ │ │ │ ├── bp-edit-user-profiles/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-edit-user-profiles.pot
│ │ │ │ ├── bp-emails-for-bbp/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-emails-for-bbp.pot
│ │ │ │ ├── bp-events-calendar/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-events-calendar.pot
│ │ │ │ ├── bp-forum-notifier/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-forum-notifier-sv_SE.po
│ │ │ │ ├── bp-group-sites/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-group-sites.pot
│ │ │ │ ├── bp-groups-civicrm-sync/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-groups-civicrm-sync.pot
│ │ │ │ ├── bp-my-home/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-my-home.pot
│ │ │ │ ├── bp-new-order-notifications-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-new-order-notification.pot
│ │ │ │ ├── bp-order-date-time-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-woopick-delivery.pot
│ │ │ │ ├── bp-post-from-anywhere/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-post-from-anywhere.pot
│ │ │ │ ├── bp-premiums/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-premiums.pot
│ │ │ │ ├── bp-profile-field-duplicator/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-profile-field-duplicator.pot
│ │ │ │ ├── bp-reactions/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-reactions.pot
│ │ │ │ ├── bp-search-block/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-search-block-fr_FR.po
│ │ │ │ ├── bp-security-check/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-security-check.pot
│ │ │ │ ├── bp-show-friends/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-show-friends.pot
│ │ │ │ ├── bp-social-connect/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── bp-sticky-groups/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-sticky-groups.pot
│ │ │ │ ├── bp-xprofile-rich-text-field/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-xprofile-rich-text-field.pot
│ │ │ │ ├── bpost-shipping/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── composer.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bpost_shipping.pot
│ │ │ │ ├── bps-splide-slider-block/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bps-slider-block.pot
│ │ │ │ ├── bpwp-set-homepages/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── plugin.pot
│ │ │ │ ├── braft-woo-shipping-packer/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── braft-woo-shipping-packer.pot
│ │ │ │ ├── branda-white-labeling/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ub.pot
│ │ │ │ ├── brandnestor/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── brandnestor-el.po
│ │ │ │ ├── breadcrumb-trail/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.md
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── breadcrumb-trail.pot
│ │ │ │ ├── bridge-tournament/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bridge-tournament-fr_FR.po
│ │ │ │ ├── bridgy-publish/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bridgy.pot
│ │ │ │ ├── brightcove-video-connect/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── brightcove.pot
│ │ │ │ ├── brix-page-builder/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── brix.pot
│ │ │ │ ├── broken-links-remover/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── browser-title-bar-animation/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── wp-tbas.pot
│ │ │ │ ├── browser-window-stats/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── browser-window-stats.pot
│ │ │ │ ├── brozzme-blurb-lightbox-module-in-divi/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── brozzme-lightbox-blurb-fr_FR.po
│ │ │ │ ├── brozzme-change-username/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── brozzme-change-username.pot
│ │ │ │ ├── brozzme-colorize/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── brozzme-colorize.pot
│ │ │ │ ├── brozzme-fullwidth-divi/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── brozzme-fullwidth-divi.pot
│ │ │ │ ├── bstone-demo-importer/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── btb-full-width-section/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── btcpaywall/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── bu-learning-blocks/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bu-learning-blocks.pot
│ │ │ │ ├── bu-navigation/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bu-navigation.pot
│ │ │ │ ├── bu-section-editing/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bu-section-editing.pot
│ │ │ │ ├── buddy-bbpress-support-topic/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── buddypress/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── buddypress.pot
│ │ │ │ ├── buddypress-activity-tags/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-activity-tags-sr_RS.po
│ │ │ │ ├── buddypress-compliments/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── change_log.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-compliments-en_US.po
│ │ │ │ ├── buddypress-docs/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── buddypress-docs.pot
│ │ │ │ ├── buddypress-media/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── buddypress-media.po
│ │ │ │ ├── buddypress-message-attachment/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bp-msgat.pot
│ │ │ │ ├── buddypress-profile-progression/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bppp-de_DE.po
│ │ │ │ ├── buddypress-registration-groups-1/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── buddypress-registration-groups.pot
│ │ │ │ ├── buffer-my-post/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── buffer-my-post.pot
│ │ │ │ ├── bugherd-dashboard/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── plugin-name.pot
│ │ │ │ ├── bulk-delete/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bulk-delete.pot
│ │ │ │ ├── bulk-edit-categories-tags/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── bulk-edit-categories-tags.pot
│ │ │ │ ├── bulk-edit-events/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── bulk-edit-events.pot
│ │ │ │ ├── bulk-edit-posts-on-frontend/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── bulk-edit-posts-on-frontend.pot
│ │ │ │ ├── bulk-edit-user-profiles-in-spreadsheet/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── bulk-edit-user-profiles-in-spreadsheet.pot
│ │ │ │ ├── bulk-plugin-installation/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bulk-plugin-installation-es_ES.po
│ │ │ │ ├── bulk-plugin-toggle/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── bulk-term-editor/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bulk-term-editor.pot
│ │ │ │ ├── bulkpress-export/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bulkpress-export.pot
│ │ │ │ ├── bulky-bulk-edit-products-for-woo/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── bulletproof-security/
│ │ │ │ │ └── config_comment/
│ │ │ │ │ └── admin/
│ │ │ │ │ └── htaccess/
│ │ │ │ │ └── wpadmin-secure.htaccess
│ │ │ │ ├── bumbal/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bumbal.pot
│ │ │ │ ├── bunnycdnbunnyapi/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── buscape-wp-related-products/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── BWPRP-pt_BR.po
│ │ │ │ ├── business-block-widget/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── business-block-widget.pot
│ │ │ │ ├── business-directory-plugin/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── WPBDM.pot
│ │ │ │ ├── business-profile/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── business-profile.pot
│ │ │ │ ├── business-review/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── business-reviews.pot
│ │ │ │ ├── business-website-helper/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── button-with-fontawesome-icons-by-like-agency/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── lbfa-pl_PL.po
│ │ │ │ ├── buttons-block/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── buy-now-button-direct-checkout-quick-checkoutpurchase-button-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── buy-now-direct-checkout-for-woocommerce-hi_IN.po
│ │ │ │ ├── bwp-recaptcha/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── bwp-recaptcha.pot
│ │ │ │ ├── bxslider-integration/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bxsg.pot
│ │ │ │ ├── bypass-iframe-height-limit/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── cab-fare-calculator/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── tblight.pot
│ │ │ │ ├── cache-control-by-cacholong/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── cache-images/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cache-images-fa_IR.po
│ │ │ │ ├── cache-seo-speed/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── cal-embedder-lite/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── language/
│ │ │ │ │ └── cal-embedder-lite.pot
│ │ │ │ ├── calculated-fields-for-acf/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── calculated-fields-for-acf.pot
│ │ │ │ ├── calculated-fields-form/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── caldera-forms/
│ │ │ │ │ └── javascript_comment/
│ │ │ │ │ └── assets/
│ │ │ │ │ └── js/
│ │ │ │ │ └── vue.js
│ │ │ │ ├── calendarista-basic-edition/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── calendarista-de_DE.po
│ │ │ │ ├── call-to-action-block/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── callme-form/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── callme-plugin-ru_RU.po
│ │ │ │ ├── campaign-monitor-dashboard/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── campaign-monitor-dashboard.pot
│ │ │ │ ├── candescent/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── canto/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── capture-and-convert/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── carbon-fields/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── card-oracle/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── card-oracle.pot
│ │ │ │ ├── carmo-woo-product-gtin/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── carmo-product-gtin-for-woocommerce-pt_PT.po
│ │ │ │ ├── carousel-glider-js/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── cart-rest-api-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cart-rest-api-for-woocommerce.pot
│ │ │ │ ├── cartflows/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cartflows.pot
│ │ │ │ ├── casso-tu-dong-xac-nhan-thanh-toan-chuyen-khoan-ngan-hang/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── casso-wordpress-plugin-vi.po
│ │ │ │ ├── catalog-mode-pricing-enquiry-forms-promotions/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── wmodes-tdm.pot
│ │ │ │ ├── categorize-pages/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── categorize-your-wishlist-for-woocomerceposts-custom-post-types/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── categorize-wishlist-woocomerce-posts-custom-post-types-ja.po
│ │ │ │ ├── category-archives-block/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── category-tag-tidy/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── category-tag-tidy-en.po
│ │ │ │ ├── catenis-blocks/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── catenis-blocks.pot
│ │ │ │ ├── catna-woo-name-your-price-and-offers/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── cbqe-edit-flow/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── CHANGELOG.md
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cbqe-edit-flow.pot
│ │ │ │ ├── cbtwittercard/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cbtwittercard-en_US.po
│ │ │ │ ├── cbxdropboxfilechooser/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cbxdropboxfilechooser-en_GB.po
│ │ │ │ ├── cbxform/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cbxform-en_GB.po
│ │ │ │ ├── cbxpoll/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cbxpoll-en_US.po
│ │ │ │ ├── cbxwooextendedorders/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cbxwooextendedorders-en_GB.po
│ │ │ │ ├── cbxwpslack/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cbxwpslack-en_GB.po
│ │ │ │ ├── cc-auto-activate-plugins/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── cc-manga-comic-reader/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lib/
│ │ │ │ │ └── codestar-framework/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bn_BD.po
│ │ │ │ ├── cc-mu-plugins-loader/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── centrobill-payment-gateway/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── cestina-zalomeni-radku/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── bozimediazalomeni.pot
│ │ │ │ ├── cf-7-gutenberg/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── CHANGELOG.md
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cf-7-gutenberg.pot
│ │ │ │ ├── cf-geoplugin/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── cf-image-resizing/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── cf-images/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cf-images.pot
│ │ │ │ ├── cf7-blocks/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── cf7-conditional-load/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── cf7-conditional-load.pot
│ │ │ │ ├── cf7-constant-contact-fields-mapping/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cf7-constant-contact-fields-mapping.pot
│ │ │ │ ├── cf7-custom-validation-message/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cf7-custom-validation-message.pot
│ │ │ │ ├── cf7-editor-button/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── contact-form-7-editor-button.pot
│ │ │ │ ├── cf7-facebook-contactor/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── gsconnector-en_US.po
│ │ │ │ ├── cf7-file-download/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cf7-file-download.pot
│ │ │ │ ├── cf7-google-sheets-connector/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cf7-google-sheets-connector-en_US.po
│ │ │ │ ├── cf7-mountstride-crm-integration/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cf7-to-mountstride.pot
│ │ │ │ ├── cf7-proxy-ip/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── cf7-repeatable-fields/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── cf7-sendinblue-opt-in-checkbox/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── cf7-signature/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cf7-signature.pot
│ │ │ │ ├── cf7-sms/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cf7-sms.pot
│ │ │ │ ├── cfonlinetest/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cfonlinetest-es.po
│ │ │ │ ├── chained-product-for-woocommerce/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── chained-quiz/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── chained-quiz.pot
│ │ │ │ ├── chamber-dashboard-events-calendar/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── change-password-e-mail/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── change-password-e-mail.pot
│ │ │ │ ├── change-payments-account/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── change-payments-account.pot
│ │ │ │ ├── chaport/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── charitable/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── i18n/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── charitable.pot
│ │ │ │ ├── charts-blocks/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── chat-for-aesop-story-engine/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ase-chat.pot
│ │ │ │ ├── chat-robot/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── plugin-chat-robot.pot
│ │ │ │ ├── chatra-live-chat/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── chatra-live-chat-ru_RU.po
│ │ │ │ ├── chatster/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── chatster.pot
│ │ │ │ ├── chayall/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── chayall.pot
│ │ │ │ ├── checkbox-for-taxonomies/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── checkbox-for-taxonomies.pot
│ │ │ │ ├── checkout-add-on-woo-onepage/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── woo-onepage-checkout.pot
│ │ │ │ ├── checkout-field-customizer/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── checkout-upsell-funnel-for-woo/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── checkoutwc-lite/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── checkoutx/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── checkrobin/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── child-theme-configurator/
│ │ │ │ │ └── javascript_comment/
│ │ │ │ │ └── js/
│ │ │ │ │ └── chldthmcfg.js
│ │ │ │ ├── chillpay-payment-gateway/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── chinads-dropshipping-taobao-woocommerce/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── choco/
│ │ │ │ │ └── javascript_var/
│ │ │ │ │ └── js/
│ │ │ │ │ └── choco.js
│ │ │ │ ├── chuffed-widget/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── churchtithewp/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── church-tithe-wp.pot
│ │ │ │ ├── cielo-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cielo-woocommerce.pot
│ │ │ │ ├── cip-dtac-for-give/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── cision-modules/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── citadela-directory-lite/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── citadela-directory-lite.pot
│ │ │ │ ├── cities-shipping-zones-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── i18n/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cities-shipping-zones-for-woocommerce.pot
│ │ │ │ ├── civicrm-admin-utilities/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── civicrm-admin-utilities.pot
│ │ │ │ ├── civicrm-wp-member-sync/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── civicrm-wp-member-sync.pot
│ │ │ │ ├── civil-comments/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── civil-comments.pot
│ │ │ │ ├── classic-quiz-feedback-survey/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cqfs.pot
│ │ │ │ ├── classic-widgets-with-block-based-widgets/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── classic-and-block-widgets.pot
│ │ │ │ ├── classified/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── i18n/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── classified.pot
│ │ │ │ ├── classifieds-wp/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── classifieds-wp.pot
│ │ │ │ ├── clean-and-simple-contact-form-by-meg-nicholas/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── clean-and-simple-contact-form-by-meg-nicholas.pot
│ │ │ │ ├── clean-my-archives/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── clean-my-wp/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── clean-my-wordpress.pot
│ │ │ │ ├── clean-options/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cleanoptions-de_DE.po
│ │ │ │ ├── cleaner-gallery/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cleaner-gallery.pot
│ │ │ │ ├── clear-autoptimize-cache-automatically/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── clear-cache-for-timber/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── clear-floats-button/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── clear-opcache/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── clearfy/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── clearfy-ru_RU.po
│ │ │ │ ├── cleverreach-newsletter-dashboard-widget/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── translations/
│ │ │ │ │ └── haet_cleverreach_dashboard-de_DE.po
│ │ │ │ ├── click-pledge-paid-memberships-pro/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── click-pledge-wpjobboard/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── change_log.txt
│ │ │ │ ├── clicksco-offerstack/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── clickship/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── clickship.pot
│ │ │ │ ├── clicksports-maps/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── clicksports-maps.pot
│ │ │ │ ├── clicky/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── clicky.pot
│ │ │ │ ├── client-power-tools/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── clocks-block/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── cloud-search/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── cloud2png/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── clou2png.pot
│ │ │ │ ├── cloudflare/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── composer.json
│ │ │ │ │ └── config_file/
│ │ │ │ │ └── config.js
│ │ │ │ ├── cloudtables/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── clust-client-portal/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── clust-wp-portal.pot
│ │ │ │ ├── cm-idin/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cm-idin.pot
│ │ │ │ ├── cmb2/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── CHANGELOG.md
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cmb2.pot
│ │ │ │ ├── co2counter/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── plugin-name.pot
│ │ │ │ ├── coblocks/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── coblocks.pot
│ │ │ │ ├── cocart-get-cart-enhanced/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cocart-get-cart-enhanced.pot
│ │ │ │ ├── cocart-jwt-authentication/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cocart-jwt-authentication.pot
│ │ │ │ ├── cocoon-scenery-color/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cocoon-scenery-color-en.po
│ │ │ │ ├── cod-network/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── code-for-cj-affiliate-network/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── code-generator/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── generate-wp.pot
│ │ │ │ ├── code-injection/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── code-injection.pot
│ │ │ │ ├── code-prettify-syntax-highlighter/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cpsh-ru_RU.po
│ │ │ │ ├── code-snippet-library/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── code_snippet-en_GB.po
│ │ │ │ ├── code-snippets/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── code-snippets.pot
│ │ │ │ ├── code-snippets-cpt/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dsgnwrks-code-snippets-cpt.pot
│ │ │ │ ├── code-to-widget/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── codechime-loader/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── codechime-loader.pot
│ │ │ │ ├── codedragon-smartcache/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── codeless-hotspot-block/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── codepen-embed-block/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── codepile/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── codistoconnect/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── codja-wc-ajax-search/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cj-wc-ajax-search.pot
│ │ │ │ ├── coinpaprika/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── coinpaprika-pl_PL.po
│ │ │ │ ├── colete-online/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── coleteonline-ro_RO.po
│ │ │ │ ├── colissimo-shipping-methods-for-woocommerce/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── colorlab/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── woocommerce-colorlab.pot
│ │ │ │ ├── colorlib-login-customizer/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── colorlib-login-customizer.po
│ │ │ │ ├── columnify/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── come-back/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── come-back.pot
│ │ │ │ ├── comet-lite/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── comet.pot
│ │ │ │ ├── coming-soon-by-boomdevs/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── coming-soon-counter-page-maintenance-mode-lacoming-soon/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── lasoon-en_CA.po
│ │ │ │ ├── coming2live/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── coming2live.pot
│ │ │ │ ├── comment-count-admin/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── comment-count-admin-de_DE.po
│ │ │ │ ├── comment-form-message/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── comment-form-message.pot
│ │ │ │ ├── comment-mail/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── comment-privileges-by-post/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── comment-privileges-by-post.pot
│ │ │ │ ├── comment_passive_all.html
│ │ │ │ ├── commentmailer/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── commentmailer.pot
│ │ │ │ ├── commentpress-core/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── commentpress-core.pot
│ │ │ │ ├── comments-avatar-lazyload/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── comments-link-optimization/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── comments-user-column/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── comments-user-column.pot
│ │ │ │ ├── comments-widget-plus/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── comments-widget-plus.pot
│ │ │ │ ├── common-wish-and-bridal-lists/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── commonsbooking/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── commonsbooking.pot
│ │ │ │ ├── community-watch/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── community-watch.pot
│ │ │ │ ├── community-yard-sale/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── community-yard-sale.pot
│ │ │ │ ├── compactrss/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── compactrss.pot
│ │ │ │ ├── compe-woo-compare-products/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── complete-open-graph/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── complianz-terms-conditions/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── complianz-terms-conditions.pot
│ │ │ │ ├── composite-products-conditional-images-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── woocommerce-composite-products-conditional-images.pot
│ │ │ │ ├── conditional-logic-for-woo-product-add-ons/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── conekta-payment-gateway/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── conformis-cookie-banner/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── conformis-en_GB.po
│ │ │ │ ├── connect-daily-web-calendar/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── captions/
│ │ │ │ │ └── connect-daily-web-calendar-fr_FR.po
│ │ │ │ ├── connect-eduma-theme-to-discord/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.TXT
│ │ │ │ ├── connect-learndash-and-discord/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── connect-learnpress-discord-add-on/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.TXT
│ │ │ │ ├── connections-business-directory-certifications/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── connections-business-directory-facilities/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── connections-business-directory-local-time/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── constant-contact-api/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── constant-contact-api.pot
│ │ │ │ ├── consumer-financing-by-chargeafter/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── contact-form-7-extras/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cf7-extras.pot
│ │ │ │ ├── contact-form-7-getresponse-extension/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── contact-form-7-getresponse-extension.pot
│ │ │ │ ├── contact-form-query/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── contact-form-query.pot
│ │ │ │ ├── contact-list/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── contact-list.pot
│ │ │ │ ├── content-parts/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── content-promoter/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── contentpromoter.pot
│ │ │ │ ├── content-switcher/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── content-switcher-fr_FR.po
│ │ │ │ ├── contentblocks/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── contestfriend/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── contestfriend.pot
│ │ │ │ ├── contributor-role-for-approved-comments/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── contributor-role-for-approved-comments.pot
│ │ │ │ ├── convatic/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── convert-speech-to-text-as-post/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── convertiser-widgets/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── convertiser-widgets.pot
│ │ │ │ ├── convertplug/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── convocations/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── convocations-fr_FR.po
│ │ │ │ ├── cookbook-hook-guide/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── CHANGELOG.md
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cookbook-hook-guide.pot
│ │ │ │ ├── cookie-jar/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── cookie-law-info/
│ │ │ │ │ └── javascript_comment/
│ │ │ │ │ └── js/
│ │ │ │ │ └── cookielawinfo.js
│ │ │ │ ├── cookiebot/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── langs/
│ │ │ │ │ └── cookiebot.pot
│ │ │ │ ├── cookiegenie/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── cookiegenie-nl_NL.po
│ │ │ │ ├── cookiehub/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── cookiepro/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── wpcookiepro.pot
│ │ │ │ ├── cooking-recipe-block/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── cool-admin-theme-lite-for-wp/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── catforwp.po
│ │ │ │ ├── copycraft/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── copycraft.pot
│ │ │ │ ├── copysmith-for-woocommerce/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── cora-lite/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── core-rollback/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── core-rollback.pot
│ │ │ │ ├── coreactivity/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── cornell-notes/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── cornerstone/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── corona-vat-germany/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cect.pot
│ │ │ │ ├── correos-oficial/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── correoswc.pot
│ │ │ │ ├── cosy-address-book/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cosy-address-book.pot
│ │ │ │ ├── counting-number-block/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── counting-number.pot
│ │ │ │ ├── courier-notices/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── CHANGELOG.md
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── course-scheduler-for-learndash/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── course-wizard-for-sensei/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── covid-19-live-tracking/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── jms-covid-19.pot
│ │ │ │ ├── cowidgets-elementor-addons/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── coyote/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── cpo-content-types/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── crazy-call-to-action-box/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── crea-listings/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── plugin-name.pot
│ │ │ │ ├── create-payment-stripe-gateway/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── uk_UA.po
│ │ │ │ ├── creative-commons-configurator-1/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── creative-commons-configurator-1.pot
│ │ │ │ ├── creative-mail-by-constant-contact/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── creeperbit-woo-accordion/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── cresta-posts-box/
│ │ │ │ │ └── style_comment/
│ │ │ │ │ └── css/
│ │ │ │ │ └── cresta-posts-box-style.css
│ │ │ │ ├── crm-hubspot-learndash-integration/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── crm-in-cloud-for-wc/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── crm-in-cloud-for-wc-it_IT.pot
│ │ │ │ ├── crm-salesforce-learndash-integration/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── cron-task-viewer-redux/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cron-task-viewer-redux.pot
│ │ │ │ ├── croquet-metaverse-web-showcase/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── croquet-metaverse-web-showcase.pot
│ │ │ │ ├── cross-domain-tracker-for-affiliatewp/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── crosswinds-blocks/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── crosswordsearch/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── crosswordsearch.pot
│ │ │ │ ├── crowdcue/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── crowdsignal-forms/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── crowdsignal-forms.pot
│ │ │ │ ├── crucial-real-estate/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── cryptex/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── Cryptex.pot
│ │ │ │ ├── crypto-payments-woo/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── Crypto-Payments-Woo.pot
│ │ │ │ ├── crypto-qr-code-wp/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── cryptocurrency-price-widget/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── crcpw-cryptocurrency-price-widget.pot
│ │ │ │ ├── cryptopanel-payment-gateway-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cryptopanel-payment-gateway-de_DE.po
│ │ │ │ ├── cryptum-nft/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cryptum-nft-domain.pot
│ │ │ │ ├── css3-buttons/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── default.pot
│ │ │ │ ├── csv-exporter-for-terms/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── et-csv.pot
│ │ │ │ ├── csv-to-db/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── src/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── csv2db.pot
│ │ │ │ ├── cta-bar/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── ctc-countdown-timer-cookies/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ctc-countdown-timer-cookies.pot
│ │ │ │ ├── ctcl-floating-cart/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── cubecolour-caboodle/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cubecolour-caboodle.pot
│ │ │ │ ├── cubicfusion-admin-enhancer/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── culqi-full-integration/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── cultivate-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cultivate-for-woocommerce.pot
│ │ │ │ ├── curatewp-nested-posts/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cwpnp.pot
│ │ │ │ ├── curatewp-related-posts/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cwprp-en_US.po
│ │ │ │ ├── currencyr/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── default.po
│ │ │ │ ├── custom-admin-login/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── custom-advert-blocks-free/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── custom-blocks-free-ru_RU.po
│ │ │ │ ├── custom-authentication/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── custauth.pot
│ │ │ │ ├── custom-bulkquick-edit/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── custom-bulkquick-edit.pot
│ │ │ │ ├── custom-classes/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.md
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── custom-classes.pot
│ │ │ │ ├── custom-codes/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── custom-codes.pot
│ │ │ │ ├── custom-content-portfolio/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── custom-content-types-by-pixelpillow/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── pixelpillow-custom-content-types-nl_NL.po
│ │ │ │ ├── custom-css-by-dev7studios/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── custom-css-js/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── custom-css-js.pot
│ │ │ │ ├── custom-database-tables/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── langs/
│ │ │ │ │ └── custom-database-tables-ja.po
│ │ │ │ ├── custom-dokan-fields/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── custom-fields-account-registration-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── custom-fields-account-for-woocommerce-registration.pot
│ │ │ │ ├── custom-header-extended/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── custom-help/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── custom-importer-exporter/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── custom-importer-exporter.pot
│ │ │ │ ├── custom-javascript-editor/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── custom-javascript-editor.pot
│ │ │ │ ├── custom-page-extensions/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── custom-page-extensions.pot
│ │ │ │ ├── custom-post-type-cleanup/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── custom-post-type-cleanup.pot
│ │ │ │ ├── custom-post-type-maker/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── custom-post-type-manager/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── cptm-ja.po
│ │ │ │ ├── custom-post-type-order/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cpto-fr_FR.po
│ │ │ │ ├── custom-post-type-parents/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── custom-post-type-parents.pot
│ │ │ │ ├── custom-post-type-widget-blocks/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── custom-post-type-widget-blocks.pot
│ │ │ │ ├── custom-posts-list-block/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── custom-registration-link/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── custom-registration-link-fr_FR.po
│ │ │ │ ├── custom-sidebars/
│ │ │ │ │ └── javascript_comment/
│ │ │ │ │ └── assets/
│ │ │ │ │ └── js/
│ │ │ │ │ └── cs-visibility.js
│ │ │ │ ├── custom-smilies-directory/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── jpm_csd.pot
│ │ │ │ ├── custom-template-learndash/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── custom-template-learndash.pot
│ │ │ │ ├── custom-template-lifterlms/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── custom-template-lifterlms.pot
│ │ │ │ ├── custom-testimonial/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── vendor/
│ │ │ │ │ └── testimonialmetaoption/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── zh_CN.po
│ │ │ │ ├── custom-toolbox/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── custom-toolbox-fr_FR.po
│ │ │ │ ├── custom-typekit-fonts/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── custom-typekit-fonts.pot
│ │ │ │ ├── custom-wishlist/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── cwl-es_ES.po
│ │ │ │ ├── customer-area/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── composer.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cuar.pot
│ │ │ │ ├── customify-sites/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── customify-sites.pot
│ │ │ │ ├── customize-my-account-for-woocommerce/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── customize-woo/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── i18n/
│ │ │ │ │ └── customize-woo.pot
│ │ │ │ ├── customizely/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── customizely.pot
│ │ │ │ ├── customizer-search/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── customizer-search.pot
│ │ │ │ ├── customizr-addons/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── en_US.po
│ │ │ │ ├── cvi-widgets/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cvi.pot
│ │ │ │ ├── cycle-blocks/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── cycle-blocks-ja.po
│ │ │ │ ├── daggerhart-openid-connect-generic/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── daily-maxim-365/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── daily-maxim-365.pot
│ │ │ │ ├── daily-snapshot-for-woocommerce-admin/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── mwb-dailyss-en_US.po
│ │ │ │ ├── danixland-countdown/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── i18n/
│ │ │ │ │ └── danixland-countdown.pot
│ │ │ │ ├── dark-login-screen/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── langs/
│ │ │ │ │ └── dark_login_screen-en_AU.po
│ │ │ │ ├── dark-mode-lite/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dark_mode_lite.pot
│ │ │ │ ├── dark-mode-toggle/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dark-mode-toggle.pot
│ │ │ │ ├── darwin-backup/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── dash-notifier/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dash-notifier.pot
│ │ │ │ ├── dashboard-columns/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── dashboard-linker/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dashboard-linker.pot
│ │ │ │ ├── dashboard-notes/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dashboard-notes.pot
│ │ │ │ ├── dashboard-welcome-for-beaver-builder/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── dashly/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dashly-ru_RU.po
│ │ │ │ ├── dashview/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── i18n/
│ │ │ │ │ └── dashview-de_DE.po
│ │ │ │ ├── database-analyzer/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── date-and-time-widget/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── date-time.pot
│ │ │ │ ├── davons-floating-admin-bar/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── davon-floating-admin-bar-de_DE.po
│ │ │ │ ├── db-access-adminer/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── db-access-adminer.pot
│ │ │ │ ├── db-share-count/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── db-signatures/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── deau-api/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── deau-api-en_US.po
│ │ │ │ ├── debrandify/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dbrdify.pot
│ │ │ │ ├── debug-bar-rewrite-rules/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── decent-comments/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── deep-free-plus/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── deepcore/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── deep.pot
│ │ │ │ ├── default-attributes-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── i18n/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── default-attributes-for-woocommerce-he_IL.po
│ │ │ │ ├── defender-security/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── wpdef-default.pot
│ │ │ │ ├── delete-expired-transients/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── delete-revision/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── delete-unscaled-images/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── delete-unscaled-images.pot
│ │ │ │ ├── delicious-recipes/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── delicious-recipes.pot
│ │ │ │ ├── delivengo/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── wc_delivengo.pot
│ │ │ │ ├── delivery-area-with-google-maps/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── delivery-date-system-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── delivery-date-system.pot
│ │ │ │ ├── delucks-seo/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── language/
│ │ │ │ │ └── delucks-seo-de_DE_formal.po
│ │ │ │ ├── demo-bar/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── demo-bar.pot
│ │ │ │ ├── demo-importer-plus/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── demo-importer-plus.pot
│ │ │ │ ├── demoify-blocks/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── demomentsomtres-wc-minimum-purchase-message/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── DeMomentSomTres-WC-minPurchaseMessage-ca.po
│ │ │ │ ├── demomentsomtres-woocommerce-minimum-purchase-message/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── DeMomentSomTres-WC-minPurchaseMessage-ca.po
│ │ │ │ ├── denade-translate/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── depay-payments-for-woocommerce/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── depay-woocommerce-payments.pot
│ │ │ │ ├── deposits-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── deposits-for-woocommerce.pot
│ │ │ │ ├── deposits-partial-payments-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── deposits-partial-payments-for-woocommerce.pot
│ │ │ │ ├── depublish-posts/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── wp-depublish-posts.pot
│ │ │ │ ├── derweili-fb-chat/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── description-list-block/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── design-sidebar-using-page-builder/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── sidebar-using-page-builder.pot
│ │ │ │ ├── deskaddons-for-beaver-builder-lite/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── dessky-responsive-slider/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── dessky-security/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── dev-debug-tools/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── dev-studio/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── developer-tool/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dev-tool.pot
│ │ │ │ ├── device-detect/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── device-detect-fr_FR.po
│ │ │ │ ├── device-detector/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── dexonline-searchbox/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dexonline-searchbox-de_DE.po
│ │ │ │ ├── dezo-tools/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dezo-tools.pot
│ │ │ │ ├── df-pagination/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── I18n/
│ │ │ │ │ └── df-pagination.pot
│ │ │ │ ├── dgxpco/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── dh-dashboard-quick-content-access/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dh-widget-dashqa-de_DE.po
│ │ │ │ ├── dh-new-mark/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dh-new-mark-ja.po
│ │ │ │ ├── dialogue-layout/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── language/
│ │ │ │ │ └── dialogue-layout.pot
│ │ │ │ ├── dibs-for-woocommerce/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── dicentis-podcast/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── digest/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── digest.pot
│ │ │ │ ├── digital-certainty/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── plugin-name.pot
│ │ │ │ ├── digitalpush/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── insert-headers-and-footers.pot
│ │ │ │ ├── diller-loyalty/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── diller-loyalty.pot
│ │ │ │ ├── dirt-directory-client/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dirt-directory-client.pot
│ │ │ │ ├── disable-automatic-theme-plugin-updates/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── disable-plugin-theme-auto-updates.pot
│ │ │ │ ├── disable-blog/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── disable-directory-listings/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── disable-directory-listings.pot
│ │ │ │ ├── disable-emails/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── disable-embeds/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── disable-feeds/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── disable-feeds.pot
│ │ │ │ ├── disable-flamingo-addressbook/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── disable-right-click-powered-by-pixterme/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── pixterme.pot
│ │ │ │ ├── disable-search/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── disable-search-slug/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── disable-title/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── disable_title-de_DE.po
│ │ │ │ ├── disclaimer-popup/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── assets/
│ │ │ │ │ └── mb-settings-page/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── default.pot
│ │ │ │ ├── discontinued-product-stock-status-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── discontinued-products-stock-status.pot
│ │ │ │ ├── dispensary-coupons/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── display-a-meta-field-as-block/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── mfb.pot
│ │ │ │ ├── display-featured-image-genesis/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── display-featured-image-genesis.pot
│ │ │ │ ├── display-git-status/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── display-git-status.pot
│ │ │ │ ├── display-post-reading-time/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── Changelog.txt
│ │ │ │ ├── display-post-types/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── display-post-types.pot
│ │ │ │ ├── display-posts-shortcode/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── display-taxes-on-product-page-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── mlfactory_tax_plugin-de_DE.po
│ │ │ │ ├── display-terms-shortcode/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── display-terms-shortcode.pot
│ │ │ │ ├── distributor-remote-quickedit/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── dlocal-go-payments-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── directo-pago-payments-for-woocommerce-es_PE.po
│ │ │ │ ├── dn-footer-contacts/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dn-footer-contacts-it_IT.po
│ │ │ │ ├── dn-shopping-discounts/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dn_discounts-it_IT.po
│ │ │ │ ├── do-not-send-emails-if/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── do-not-send-emails-if.pot
│ │ │ │ ├── dobsondev-shortcodes/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── dobsondev-weather/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── doc8/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── docu-en_US.pot
│ │ │ │ ├── docket-cache/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── docket-cache.pot
│ │ │ │ ├── docollipics-faustball-de/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── docs2site/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── docs2site.pot
│ │ │ │ ├── document-embedder-addons-for-elementor/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── b-addon.pot
│ │ │ │ ├── document-engine/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── document-engine.pot
│ │ │ │ ├── document-gallery/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── document-generator-for-openapi/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── document-library-lite/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── document-library-lite.pot
│ │ │ │ ├── documentation/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── dodebug/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── dodebug.pot
│ │ │ │ ├── dokan-invoice/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dokan-invoice.pot
│ │ │ │ ├── dokan-lite/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dokan-lite.pot
│ │ │ │ ├── dokan-migrator/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dokan-migrator.pot
│ │ │ │ ├── dokan-plus/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── dokan-vendor-dashboard/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dokan-vendor-dashboard.pot
│ │ │ │ ├── dolibarr-rest-api/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── domyaccounting/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── rtwdma-domyaccounting.pot
│ │ │ │ ├── doppelme-avatars/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── double-image/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── double-image.pot
│ │ │ │ ├── download-after-email/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dae.pot
│ │ │ │ ├── download-list-block-with-icons/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── download-media-file/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── download-media-file.pot
│ │ │ │ ├── download-monitor/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── download-monitor.pot
│ │ │ │ ├── download-monitor-learndash-integration/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── download-monitor-paid-membership-pro-integration/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── download-monitor-restrict-content-integration/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── download-plugins-dashboard/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── langs/
│ │ │ │ │ └── download-plugins-dashboard.pot
│ │ │ │ ├── downloadio/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── downloadio.pot
│ │ │ │ ├── dozent/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dozent.pot
│ │ │ │ ├── dozent-lms/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dozent-lms.pot
│ │ │ │ ├── dozent-lms-certificate/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dozent-lms-certificate.pot
│ │ │ │ ├── dplayer/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dplayer.pot
│ │ │ │ ├── dps-pxpay-for-wp-ecommerce/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── dr-widgets-blocks/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dr-widgets-blocks.pot
│ │ │ │ ├── dracula-dark-mode/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dracula-dark-mode.pot
│ │ │ │ ├── drag-drop-featured-image-improved/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dragandropimproved.pot
│ │ │ │ ├── dragon-video/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── drastic-table-manager/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── drastic-table-manager.pot
│ │ │ │ ├── driveworks-block-form-embed/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── dropdown-content/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dropdowncontent.pot
│ │ │ │ ├── dropp-pay-per-use/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── dropp-pay-tipping/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── dropship-sell-your-art/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── dropshipping-with-ebay-for-woocommerce/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── dropshipping-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dropshipping-woocommerce.pot
│ │ │ │ ├── dropshipping-xml-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── dropshipping-xml-for-woocommerce.pot
│ │ │ │ ├── ds-suit/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── en_US.po
│ │ │ │ ├── dse-divi-section-enhancer/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dse-divi-section-enhancer.pot
│ │ │ │ ├── dummy-images/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── duogeek-blocks/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dggb-blocks.pot
│ │ │ │ ├── duplicate-pages-posts/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── duplicate-pages-posts.pot
│ │ │ │ ├── duplicate-term/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── duplicate-term.pot
│ │ │ │ ├── dvk-social-sharing/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── dxtag-auto-listings/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── guaven_dxtag.pot
│ │ │ │ ├── dynamic-asset-versioning/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dynamic-asset-versioning.pot
│ │ │ │ ├── dynamic-block-content/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── dynamic-content-for-elementor/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── dynamic-coupons-with-zendesk-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── zndskcoupon-en_US.po
│ │ │ │ ├── dynamic-seo-child-pages/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── dynamic-seo-child-pages.pot
│ │ │ │ ├── dynamic-text-field-for-contact-form-7/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── dynamic-text-field-for-contact-form-7.pot
│ │ │ │ ├── dynamically-display-posts/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── uk_UA.po
│ │ │ │ ├── e-commerce-by-salescart/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── e-commerce-mailcheck/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── e-commerce-payment-gateway-kevin/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── e-connector-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── e-connector-for-woocommerce.pot
│ │ │ │ ├── e-nkap-woocommerce-gateway/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── easing-slider/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easingslider.pot
│ │ │ │ ├── easy-ad-picker/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easyadpicker-nl_NL.po
│ │ │ │ ├── easy-attendance/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-attendance-en_US.po
│ │ │ │ ├── easy-blog-ideas/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── __pig_.pot
│ │ │ │ ├── easy-code-manager/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── locals/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── css-javascript-toolbox.pot
│ │ │ │ ├── easy-contact-form-pro/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelogs.txt
│ │ │ │ ├── easy-content-protector/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── easy-content-protector.pot
│ │ │ │ ├── easy-custom-error-pages/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── easy-custom-js-and-css/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── easy-custom-oceanwp-shop/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-custom-oceanwp-shop-fr_FR.po
│ │ │ │ ├── easy-customizer/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-customizer.pot
│ │ │ │ ├── easy-customizer-for-woocommerce-pdf-invoices/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── easy-digital-downloads/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-digital-downloads.pot
│ │ │ │ ├── easy-digital-downloads-free-link/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── easy-digital-downloads-payment-gateway-by-novalnet/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── edd-novalnet.pot
│ │ │ │ ├── easy-excerpt/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-excerpt.po
│ │ │ │ ├── easy-featured-images/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── easy-featured-images-hu_HU.po
│ │ │ │ ├── easy-feedback/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── easy-flipbook-i-widget/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-flipbook.pot
│ │ │ │ ├── easy-folders/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-folders.pot
│ │ │ │ ├── easy-google-fonts/
│ │ │ │ │ └── javascript_comment/
│ │ │ │ │ └── assets/
│ │ │ │ │ └── js/
│ │ │ │ │ └── admin.js
│ │ │ │ ├── easy-image-optimizer/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── easy-plugin-demo/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-plugin-demo.pot
│ │ │ │ ├── easy-plugin-stats/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-plugin-stats.pot
│ │ │ │ ├── easy-post-types-fields/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-post-types-fields.pot
│ │ │ │ ├── easy-pricing-table-manager/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── easy-pricing-table-manager.po
│ │ │ │ ├── easy-primary-category/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-primary-category.pot
│ │ │ │ ├── easy-product-bundles-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── asnp-easy-product-bundles.pot
│ │ │ │ ├── easy-property-listings/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-property-listings.pot
│ │ │ │ ├── easy-recent-posts/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── langs/
│ │ │ │ │ └── easy-recent-posts-de_DE.po
│ │ │ │ ├── easy-retweet/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-retweet.pot
│ │ │ │ ├── easy-scheduled-posts/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── langs/
│ │ │ │ │ └── easy-recent-posts-de_DE.po
│ │ │ │ ├── easy-similar-posts/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── langs/
│ │ │ │ │ └── easy-similar-posts-de_DE.po
│ │ │ │ ├── easy-social-sharing/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-social-sharing.pot
│ │ │ │ ├── easy-static-maps/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── easy-static-maps-it_IT.po
│ │ │ │ ├── easy-support-videos/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-support-videos.pot
│ │ │ │ ├── easy-swipebox/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-swipebox.pot
│ │ │ │ ├── easy-taxonomy-support/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── ez-taxonomy-support.pot
│ │ │ │ ├── easy-testimonial-rotator/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-testimonial-rotator.pot
│ │ │ │ ├── easy-theme-plugin-switcher/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-wp-tp-switcher.pot
│ │ │ │ ├── easy-timer/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-timer-fr_FR.po
│ │ │ │ ├── easy-user-registration/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-user-registration.pot
│ │ │ │ ├── easy-woocommerce-discounts/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── easy-woocommerce-discounts.pot
│ │ │ │ ├── easymega/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── eazy-ad-unblocker/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── eazy-ad-unblocker-de_DE.po
│ │ │ │ ├── eazy-image-slider-block/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── eazyimagesliderblock-de_DE.po
│ │ │ │ ├── eazyable/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── eazyable.pot
│ │ │ │ ├── eazyfilter-for-woocommerce/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── ebanqo-widget/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ebanqo-widget.pot
│ │ │ │ ├── ec-links/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── echo-show-ids/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── eclear-spot/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── ecomail-elementor-form-integration/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── edd-advanced-discounts/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── edd-advanced-discounts.pot
│ │ │ │ ├── edd-blocks/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── edd-bulk-sale-price/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── edd-card/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── edd-card.pot
│ │ │ │ ├── edd-download-info/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── edd-download-info.pot
│ │ │ │ ├── edd-first-time-buyers-gift/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── edd-mark-as-add-on/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── edd-mark-as-addon.pot
│ │ │ │ ├── edd-multilingual/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── edd-payu-latam-gateway/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── wpas-edd-payu-latam-en_US.po
│ │ │ │ ├── edd-purchase-details/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── edd-purchase-details.pot
│ │ │ │ ├── edd-variable-defaults-update/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.txt
│ │ │ │ ├── edit-author-slug/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── CHANGELOG.md
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── edit-author-slug.pot
│ │ │ │ ├── edit-parent-comment-id/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── edit-parent-comment-id-ru_RU.po
│ │ │ │ ├── edit-recent-posts/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── edit-recent-posts.pot
│ │ │ │ ├── editor-bridge/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── editor-bridge-ja.po
│ │ │ │ ├── editor-custom-color-palette/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── editor-custom-color-palette-fr_FR.po
│ │ │ │ ├── editor-for-timber/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── composer.json
│ │ │ │ ├── editorial-access-manager/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── editorial-access-manager.pot
│ │ │ │ ├── editors-note/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── educare/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.md
│ │ │ │ ├── efavourite-posts/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── efavourite-posts.pot
│ │ │ │ ├── eidlogin/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── eidlogin-de_DE.po
│ │ │ │ ├── eight-day-week-print-workflow/
│ │ │ │ │ ├── composer_file/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── eight-day-week.pot
│ │ │ │ ├── eighties-bbpress/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── eighties-bbpress-en_US.pot
│ │ │ │ ├── ekiline-block-collection/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ekiline-collection-es_MX.po
│ │ │ │ ├── eladdon/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── elementaddon.pot
│ │ │ │ ├── elasticpress/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── lang/
│ │ │ │ │ └── elasticpress.pot
│ │ │ │ ├── electrifying-engineering-portfolio/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── electrifying-engineering-portfolio.pot
│ │ │ │ ├── elegant-responsive-content-slider/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── ercs.pot
│ │ │ │ ├── elemendas-addons/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── elemendas-addons.pot
│ │ │ │ ├── element-capability-manager/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── english.po
│ │ │ │ ├── elemental-theme-builder/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── elemental-theme-builder.pot
│ │ │ │ ├── elementify-visual-widgets/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── elementify-visual-widgets.pot
│ │ │ │ ├── elementor/
│ │ │ │ │ └── javascript_comment/
│ │ │ │ │ └── assets/
│ │ │ │ │ └── js/
│ │ │ │ │ └── admin-feedback.js
│ │ │ │ ├── elementor-addon-widgets/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── elementor-pro/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── elementor-templater/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── elementpress/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── elform/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── elform.pot
│ │ │ │ ├── elfsight-addons-for-elementor/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── elfsight-blocks/
│ │ │ │ │ └── composer_file/
│ │ │ │ │ └── package.json
│ │ │ │ ├── elgg-bridge/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── CHANGELOG.md
│ │ │ │ ├── elmo-privacylab/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── elmo.pot
│ │ │ │ ├── email-address-encoder/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── email-address-encoder.pot
│ │ │ │ ├── email-download-link/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── email-fields-for-woocommerce/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── email-fields-for-woocommerce.pot
│ │ │ │ ├── email-log/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── email-log.pot
│ │ │ │ ├── email-notice-wp-document-revisions/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── wpdr-email-notice.pot
│ │ │ │ ├── email-posts-to-subscribers/
│ │ │ │ │ └── change_log/
│ │ │ │ │ └── changelog.txt
│ │ │ │ ├── email-subscribe/
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └── languages/
│ │ │ │ │ └── email-subscribe.pot
│ │ │ │ ├── email-subscribers/
│ │ │ │ │ ├── change_log/
│ │ │ │ │ │ └── changelog.txt
│ │ │ │ │ └── translation_file/
│ │ │ │ │ └─
================================================
FILE CONTENTS
================================================
================================================
FILE: .codeclimate.yml
================================================
version: "2"
# https://docs.codeclimate.com/docs/default-analysis-configuration#sample-codeclimateyml
checks:
method-complexity:
enabled: true
config:
threshold: 15
================================================
FILE: .dockerignore
================================================
git/
bundle/
.idea/
.yardoc/
cache/
coverage/
spec/
.*
**/*.md
*.md
!README.md
Dockerfile
**/*.orig
*.orig
bin/wpscan-*
.wpscan/
.github/
================================================
FILE: .github/CONTRIBUTING.md
================================================
# Contributing to WPScan
## Licensing
By submitting code contributions to the WPScan development team via Github Pull Requests, or any other method, it is understood that the contributor is offering the WPScan company (company number 83421476900012), which is registered in France, the unlimited, non-exclusive right to reuse, modify, and relicense the code.
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
Before submitting an issue, please make sure you fully read any potential error messages output and did some research on your own.
### Subject of the issue
Describe your issue here.
### Your environment
* Version of WPScan:
* Version of Ruby:
* Operating System (OS):
### Steps to reproduce
Tell us how to reproduce this issue.
### Expected behavior
Tell us what should happen.
### Actual behavior
Tell us what happens instead.
### What have you already tried
Tell us what you have already tried to do to fix the issue you are having.
Things you have tried (where relevant):
* Update WPScan to the latest version [ ]
* Update Ruby to the latest version [ ]
* Ensure you can reach the target site using cURL [ ]
* Proxied WPScan through a HTTP proxy to view the raw traffic [ ]
* Ensure you are using a supported Operating System (Linux and macOS) [ ]
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/ISSUE_TEMPLATE/other-issue.md
================================================
---
name: Other Issue
about: Create a report which is not a related to a Bug or Feature
title: ''
labels: ''
assignees: ''
---
Before submitting an issue, please make sure you fully read any potential error messages output and did some research on your own.
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
## Licensing
By submitting code contributions to the WPScan development team via Github Pull Requests, or any other method, it is understood that the contributor is offering the WPScan company (company number 83421476900012), which is registered in France, the unlimited, non-exclusive right to reuse, modify, and relicense the code.
================================================
FILE: .github/dependabot.yml
================================================
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "bundler"
directory: "/"
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
# Check for updates to GitHub Actions every weekday
interval: "daily"
================================================
FILE: .github/workflows/build.yml
================================================
name: Build
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
ruby: ['3.0', 3.1, 3.2, 3.3, 3.4]
steps:
- name: Checkout code
uses: actions/checkout@v5
- name: Set up Ruby ${{ matrix.ruby }}
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- name: Install GEMs
run: |
gem install bundler
bundle config force_ruby_platform true
bundle config path vendor/bundle
bundle install --jobs 4 --retry 3
- name: rubocop
run: |
bundle exec rubocop
# Runs Specs which are not tagged as slow first to speed up the process in case of failure in those
# Then will run the full specs suite (and generate the final coverage report)
- name: rspec
run: |
bundle exec rspec --tag ~slow
bundle exec rspec
- name: Coveralls
uses: coverallsapp/github-action@master
continue-on-error: true
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .github/workflows/docker.yml
================================================
name: Build Docker Images
on:
push:
branches:
- master
release:
types: [published]
schedule:
- cron: "0 7 * * *"
jobs:
images:
runs-on: ubuntu-latest
steps:
- name: checkout sources
uses: actions/checkout@v5
- name: Set tag to latest
if: (github.event_name == 'push' && github.ref == 'refs/heads/master') || github.event_name == 'schedule'
run: |
echo "DOCKER_TAG=latest" >> $GITHUB_ENV
- name: Set tag to release name
if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/')
run: |
echo "DOCKER_TAG=${{ github.event.release.tag_name }}" >> $GITHUB_ENV
- name: Check if DOCKER_TAG is set
if: env.DOCKER_TAG == ''
run: |
echo DOCKER_TAG is not set!
exit 1
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
id: buildx
with:
install: true
- name: Login to Docker Hub
uses: docker/login-action@v3.5.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
platforms: linux/amd64,linux/arm/v7,linux/arm64
push: true
tags: wpscanteam/wpscan:${{ env.DOCKER_TAG }}
================================================
FILE: .github/workflows/gempush.yml
================================================
name: Ruby Gem
on:
release:
types: [published]
jobs:
build:
name: Build + Publish
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Set up Ruby 3.0
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.0'
#- name: Publish to GPR
# run: |
# mkdir -p $HOME/.gem
# touch $HOME/.gem/credentials
# chmod 0600 $HOME/.gem/credentials
# printf -- "---\n:github: Bearer ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
# gem build *.gemspec
# gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem
# env:
# GEM_HOST_API_KEY: ${{secrets.GITHUB_TOKEN}}
# OWNER: wpscanteam
- name: Publish to RubyGems
run: |
mkdir -p $HOME/.gem
touch $HOME/.gem/credentials
chmod 0600 $HOME/.gem/credentials
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
gem build *.gemspec
gem push *.gem
env:
GEM_HOST_API_KEY: ${{secrets.RUBYGEMS_AUTH_TOKEN}}
================================================
FILE: .gitignore
================================================
*.gem
*.rbc
.bundle
.config
coverage
pkg
rdoc
Gemfile.lock
# YARD artifacts
.yardoc
_yardoc
doc/
.wpscan/
.ash_history
.DS_Store
.DS_Store?
.idea/
# Old files from v2
cache/
data/
# Profiling reports
bin/memprof*.report
================================================
FILE: .rspec
================================================
--require spec_helper
--color
================================================
FILE: .rubocop.yml
================================================
require: rubocop-performance
AllCops:
NewCops: enable
SuggestExtensions: false
TargetRubyVersion: 2.7
Exclude:
- '*.gemspec'
- 'vendor/**/*'
Layout/LineLength:
Max: 120
Lint/ConstantDefinitionInBlock:
Enabled: false
Lint/MissingSuper:
Enabled: false
Lint/UriEscapeUnescape:
Enabled: false
Metrics/AbcSize:
Max: 27
Metrics/BlockLength:
Exclude:
- 'spec/**/*'
Metrics/ClassLength:
Max: 150
Exclude:
- 'app/controllers/enumeration/cli_options.rb'
Metrics/CyclomaticComplexity:
Max: 10
Metrics/MethodLength:
Max: 20
Exclude:
- 'app/controllers/enumeration/cli_options.rb'
Metrics/PerceivedComplexity:
Max: 11
Style/ClassVars:
Enabled: false
Style/Documentation:
Enabled: false
Style/FormatStringToken:
Enabled: false
Style/NumericPredicate:
Exclude:
- 'app/controllers/vuln_api.rb'
================================================
FILE: .ruby-gemset
================================================
wpscanv3
================================================
FILE: .ruby-version
================================================
3.0.2
================================================
FILE: .simplecov
================================================
# frozen_string_literal: true
if ENV['GITHUB_ACTION']
require 'simplecov-lcov'
SimpleCov::Formatter::LcovFormatter.config do |c|
c.single_report_path = 'coverage/lcov.info'
c.report_with_single_file = true
end
SimpleCov.formatter = SimpleCov::Formatter::LcovFormatter
end
SimpleCov.start do
enable_coverage :branch # Only supported for Ruby >= 2.5
add_filter '/spec/'
add_filter 'helper'
end
================================================
FILE: Dockerfile
================================================
FROM ruby:3.4.2-alpine AS builder
LABEL maintainer="WPScan Team <contact@wpscan.com>"
RUN echo "install: --no-document --no-post-install-message\nupdate: --no-document --no-post-install-message" > /etc/gemrc
COPY . /wpscan
RUN apk add --no-cache git libcurl ruby-dev libffi-dev make gcc musl-dev zlib-dev procps sqlite-dev && \
bundle config force_ruby_platform true && \
bundle config disable_version_check 'true' && \
bundle config without "test development" && \
bundle config path.system 'true' && \
bundle install --gemfile=/wpscan/Gemfile --jobs=8
WORKDIR /wpscan
RUN rake install --trace
# needed so non superusers can read gems
RUN chmod -R a+r /usr/local/bundle
FROM ruby:3.4.2-alpine
LABEL maintainer="WPScan Team <contact@wpscan.com>"
LABEL org.opencontainers.image.source https://github.com/wpscanteam/wpscan
RUN adduser -h /wpscan -g WPScan -D wpscan
COPY --from=builder /usr/local/bundle /usr/local/bundle
RUN chown -R wpscan:wpscan /wpscan
# runtime dependencies
RUN apk add --no-cache libcurl procps sqlite-libs
WORKDIR /wpscan
USER wpscan
RUN /usr/local/bundle/bin/wpscan --update --verbose
ENTRYPOINT ["/usr/local/bundle/bin/wpscan"]
================================================
FILE: Gemfile
================================================
# frozen_string_literal: true
source 'https://rubygems.org'
gemspec
# gem 'cms_scanner', branch: 'xxx', git: 'https://github.com/wpscanteam/CMSScanner.git'
================================================
FILE: LICENSE
================================================
WPScan Public Source License
The WPScan software (henceforth referred to simply as "WPScan") is dual-licensed - Copyright 2011-2019 WPScan Team.
Cases that include commercialization of WPScan require a commercial, non-free license. Otherwise, WPScan can be used without charge under the terms set out below.
1. Definitions
1.1 "License" means this document.
1.2 "Contributor" means each individual or legal entity that creates, contributes to the creation of, or owns WPScan.
1.3 "WPScan Team" means WPScan’s core developers.
2. Commercialization
A commercial use is one intended for commercial advantage or monetary compensation.
Example cases of commercialization are:
- Using WPScan to provide commercial managed/Software-as-a-Service services.
- Distributing WPScan as a commercial product or as part of one.
- Using WPScan as a value added service/product.
Example cases which do not require a commercial license, and thus fall under the terms set out below, include (but are not limited to):
- Penetration testers (or penetration testing organizations) using WPScan as part of their assessment toolkit.
- Penetration Testing Linux Distributions including but not limited to Kali Linux, SamuraiWTF, BackBox Linux.
- Using WPScan to test your own systems.
- Any non-commercial use of WPScan.
If you need to purchase a commercial license or are unsure whether you need to purchase a commercial license contact us - contact@wpscan.com.
Free-use Terms and Conditions;
3. Redistribution
Redistribution is permitted under the following conditions:
- Unmodified License is provided with WPScan.
- Unmodified Copyright notices are provided with WPScan.
- Does not conflict with the commercialization clause.
4. Copying
Copying is permitted so long as it does not conflict with the Redistribution clause.
5. Modification
Modification is permitted so long as it does not conflict with the Redistribution clause.
6. Contributions
Any Contributions assume the Contributor grants the WPScan Team the unlimited, non-exclusive right to reuse, modify and relicense the Contributor's content.
7. Support
WPScan is provided under an AS-IS basis and without any support, updates or maintenance. Support, updates and maintenance may be given according to the sole discretion of the WPScan Team.
8. Disclaimer of Warranty
WPScan is provided under this License on an "as is" basis, without warranty of any kind, either expressed, implied, or statutory, including, without limitation, warranties that the WPScan is free of defects, merchantable, fit for a particular purpose or non-infringing.
9. Limitation of Liability
To the extent permitted under Law, WPScan is provided under an AS-IS basis. The WPScan Team shall never, and without any limit, be liable for any damage, cost, expense or any other payment incurred as a result of WPScan's actions, failure, bugs and/or any other interaction between WPScan and end-equipment, computers, other software or any 3rd party, end-equipment, computer or services.
10. Disclaimer
Running WPScan against websites without prior mutual consent may be illegal in your country. The WPScan Team accept no liability and are not responsible for any misuse or damage caused by WPScan.
11. Trademark
The "wpscan" term is a registered trademark. This License does not grant the use of the "wpscan" trademark or the use of the WPScan logo.
================================================
FILE: README.md
================================================
<p align="center">
<a href="https://wpscan.com/">
<img src="https://raw.githubusercontent.com/wpscanteam/wpscan/gh-pages/images/wpscan_logo.png" alt="WPScan logo">
</a>
</p>
<h3 align="center">WPScan</h3>
<p align="center">
WordPress Security Scanner
<br>
<br>
<a href="https://wpscan.com/" title="homepage" target="_blank">WPScan WordPress Vulnerability Database</a> - <a href="https://wordpress.org/plugins/wpscan/" title="wordpress security plugin" target="_blank">WordPress Security Plugin</a>
</p>
<p align="center">
<a href="https://badge.fury.io/rb/wpscan" target="_blank"><img src="https://badge.fury.io/rb/wpscan.svg"></a>
<a href="https://hub.docker.com/r/wpscanteam/wpscan/" target="_blank"><img src="https://img.shields.io/docker/pulls/wpscanteam/wpscan.svg"></a>
<a href="https://github.com/wpscanteam/wpscan/actions?query=workflow%3ABuild" target="_blank"><img src="https://github.com/wpscanteam/wpscan/workflows/Build/badge.svg"></a>
<a href="https://codeclimate.com/github/wpscanteam/wpscan" target="_blank"><img src="https://codeclimate.com/github/wpscanteam/wpscan/badges/gpa.svg"></a>
</p>
# INSTALL
## Prerequisites
- (Optional but highly recommended: [RVM](https://rvm.io/rvm/install))
- Ruby >= 3.0 - Recommended: latest
- Curl >= 7.72 - Recommended: latest
- The 7.29 has a segfault
- The < 7.72 could result in `Stream error in the HTTP/2 framing layer` in some cases
- RubyGems - Recommended: latest
- Nokogiri might require packages to be installed via your package manager depending on your OS, see https://nokogiri.org/tutorials/installing_nokogiri.html
### In a Pentesting distribution
When using a pentesting distribution (such as Kali Linux), it is recommended to install/update wpscan via the package manager if available.
### In macOSX via Homebrew
```shell
brew install wpscanteam/tap/wpscan
```
### From RubyGems
```shell
gem install wpscan
```
On MacOSX, if a ```Gem::FilePermissionError``` is raised due to the Apple's System Integrity Protection (SIP), either install RVM and install wpscan again, or run ```sudo gem install -n /usr/local/bin wpscan``` (see [#1286](https://github.com/wpscanteam/wpscan/issues/1286))
# Updating
You can update the local database by using ```wpscan --update```
Updating WPScan itself is either done via ```gem update wpscan``` or the packages manager (this is quite important for distributions such as in Kali Linux: ```apt-get update && apt-get upgrade```) depending on how WPScan was (pre)installed
# Docker
Pull the repo with ```docker pull wpscanteam/wpscan```
Enumerating usernames
```shell
docker run -it --rm wpscanteam/wpscan --url https://target.tld/ --enumerate u
```
Enumerating a range of usernames
```shell
docker run -it --rm wpscanteam/wpscan --url https://target.tld/ --enumerate u1-100
```
** replace u1-100 with a range of your choice.
# Usage
Full user documentation can be found here; https://github.com/wpscanteam/wpscan/wiki/WPScan-User-Documentation
```wpscan --url blog.tld``` This will scan the blog using default options with a good compromise between speed and accuracy. For example, the plugins will be checked passively but their version with a mixed detection mode (passively + aggressively). Potential config backup files will also be checked, along with other interesting findings.
If a more stealthy approach is required, then ```wpscan --stealthy --url blog.tld``` can be used.
As a result, when using the ```--enumerate``` option, don't forget to set the ```--plugins-detection``` accordingly, as its default is 'passive'.
For more options, open a terminal and type ```wpscan --help``` (if you built wpscan from the source, you should type the command outside of the git repo)
The DB is located at ~/.wpscan/db
## Optional: WordPress Vulnerability Database API
The WPScan CLI tool uses the [WordPress Vulnerability Database API](https://wpscan.com/api) to retrieve WordPress vulnerability data in real time. For WPScan to retrieve the vulnerability data an API token must be supplied via the `--api-token` option, or via a configuration file, as discussed below. An API token can be obtained by registering an account on [WPScan.com](https://wpscan.com/register).
Up to **25** API requests per day are given free of charge, that should be suitable to scan most WordPress websites at least once per day. When the daily 25 API requests are exhausted, WPScan will continue to work as normal but without any vulnerability data.
### How many API requests do you need?
- Our WordPress scanner makes one API request for the WordPress version, one request per installed plugin and one request per installed theme.
- On average, a WordPress website has 22 installed plugins.
## Load CLI options from file/s
WPScan can load all options (including the `--url`) from configuration files, the following locations are checked (order: first to last):
- `~/.wpscan/scan.json`
- `~/.wpscan/scan.yml`
- `pwd/.wpscan/scan.json`
- `pwd/.wpscan/scan.yml`
If those files exist, options from the `cli_options` key will be loaded and overridden if found twice.
e.g:
`~/.wpscan/scan.yml`:
```yml
cli_options:
proxy: 'http://127.0.0.1:8080'
verbose: true
```
`pwd/.wpscan/scan.yml`:
```yml
cli_options:
proxy: 'socks5://127.0.0.1:9090'
url: 'http://target.tld'
```
Running ```wpscan``` in the current directory (pwd), is the same as ```wpscan -v --proxy socks5://127.0.0.1:9090 --url http://target.tld```
Other command line options can be added by using snake case convention. e.g:
```yml
cli_options:
user_agent: "Testing UA"
max_threads: 1
headers: "Custom-Header: aaaa; Another Header: bbb"
```
## Save API Token in a file
The feature mentioned above is useful to keep the API Token in a config file and not have to supply it via the CLI each time. To do so, create the ~/.wpscan/scan.yml file containing the below:
```yml
cli_options:
api_token: 'YOUR_API_TOKEN'
```
## Load API Token From ENV (since v3.7.10)
The API Token will be automatically loaded from the ENV variable `WPSCAN_API_TOKEN` if present. If the `--api-token` CLI option is also provided, the value from the CLI will be used.
## Enumerating usernames
```shell
wpscan --url https://target.tld/ --enumerate u
```
Enumerating a range of usernames
```shell
wpscan --url https://target.tld/ --enumerate u1-100
```
** replace u1-100 with a range of your choice.
# LICENSE
## WPScan Public Source License
The WPScan software (henceforth referred to simply as "WPScan") is dual-licensed - Copyright 2011-2019 WPScan Team.
Cases that include commercialization of WPScan require a commercial, non-free license. Otherwise, WPScan can be used without charge under the terms set out below.
### 1. Definitions
1.1 "License" means this document.
1.2 "Contributor" means each individual or legal entity that creates, contributes to the creation of, or owns WPScan.
1.3 "WPScan Team" means WPScan’s core developers.
### 2. Commercialization
A commercial use is one intended for commercial advantage or monetary compensation.
Example cases of commercialization are:
- Using WPScan to provide commercial managed/Software-as-a-Service services.
- Distributing WPScan as a commercial product or as part of one.
- Using WPScan as a value added service/product.
Example cases which do not require a commercial license, and thus fall under the terms set out below, include (but are not limited to):
- Penetration testers (or penetration testing organizations) using WPScan as part of their assessment toolkit.
- Penetration Testing Linux Distributions including but not limited to Kali Linux, SamuraiWTF, BackBox Linux.
- Using WPScan to test your own systems.
- Any non-commercial use of WPScan.
If you need to purchase a commercial license or are unsure whether you need to purchase a commercial license contact us - contact@wpscan.com.
Free-use Terms and Conditions;
### 3. Redistribution
Redistribution is permitted under the following conditions:
- Unmodified License is provided with WPScan.
- Unmodified Copyright notices are provided with WPScan.
- Does not conflict with the commercialization clause.
### 4. Copying
Copying is permitted so long as it does not conflict with the Redistribution clause.
### 5. Modification
Modification is permitted so long as it does not conflict with the Redistribution clause.
### 6. Contributions
Any Contributions assume the Contributor grants the WPScan Team the unlimited, non-exclusive right to reuse, modify and relicense the Contributor's content.
### 7. Support
WPScan is provided under an AS-IS basis and without any support, updates or maintenance. Support, updates and maintenance may be given according to the sole discretion of the WPScan Team.
### 8. Disclaimer of Warranty
WPScan is provided under this License on an “as is” basis, without warranty of any kind, either expressed, implied, or statutory, including, without limitation, warranties that the WPScan is free of defects, merchantable, fit for a particular purpose or non-infringing.
### 9. Limitation of Liability
To the extent permitted under Law, WPScan is provided under an AS-IS basis. The WPScan Team shall never, and without any limit, be liable for any damage, cost, expense or any other payment incurred as a result of WPScan's actions, failure, bugs and/or any other interaction between WPScan and end-equipment, computers, other software or any 3rd party, end-equipment, computer or services.
### 10. Disclaimer
Running WPScan against websites without prior mutual consent may be illegal in your country. The WPScan Team accept no liability and are not responsible for any misuse or damage caused by WPScan.
### 11. Trademark
The "wpscan" term is a registered trademark. This License does not grant the use of the "wpscan" trademark or the use of the WPScan logo.
================================================
FILE: Rakefile
================================================
# rubocop:disable all
require 'bundler/gem_tasks'
exec = []
begin
require 'rubocop/rake_task'
RuboCop::RakeTask.new
exec << :rubocop
rescue LoadError
end
begin
require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new(:spec) { |t| t.rspec_opts = %w{--tag ~slow} }
exec << :spec
rescue LoadError
end
# Run rubocop & rspec before the build (only if installed)
task build: exec
# rubocop:enable all
================================================
FILE: app/app.rb
================================================
# frozen_string_literal: true
require_relative 'models'
require_relative 'finders'
require_relative 'controllers'
================================================
FILE: app/controllers/aliases.rb
================================================
# frozen_string_literal: true
module WPScan
module Controller
# Controller to add the aliases in the CLI
class Aliases < CMSScanner::Controller::Base
def cli_options
[
OptAlias.new(['--stealthy'],
alias_for: '--random-user-agent --detection-mode passive --plugins-version-detection passive')
]
end
end
end
end
================================================
FILE: app/controllers/core.rb
================================================
# frozen_string_literal: true
module WPScan
module Controller
# Specific Core controller to include WordPress checks
class Core < CMSScanner::Controller::Core
# @return [ Array<OptParseValidator::Opt> ]
def cli_options
[OptURL.new(['--url URL', 'The URL of the blog to scan'],
required_unless: %i[update help hh version], default_protocol: 'http')] +
super.drop(2) + # delete the --url and --force from CMSScanner
[
OptChoice.new(['--server SERVER', 'Force the supplied server module to be loaded'],
choices: %w[apache iis nginx],
normalize: %i[downcase to_sym],
advanced: true),
OptBoolean.new(['--force', 'Do not check if the target is running WordPress or returns a 403']),
OptBoolean.new(['--[no-]update', 'Whether or not to update the Database'])
]
end
# @return [ DB::Updater ]
def local_db
@local_db ||= DB::Updater.new(DB_DIR)
end
# @return [ Boolean ]
def update_db_required?
if local_db.missing_files?
raise Error::MissingDatabaseFile if ParsedCli.update == false
return true
end
return ParsedCli.update unless ParsedCli.update.nil?
return false unless user_interaction? && local_db.outdated?
output('@notice', msg: 'It seems like you have not updated the database for some time.')
print '[?] Do you want to update now? [Y]es [N]o, default: [N]'
$stdout.flush
response = $stdin.gets.to_s.strip
!!/^y/i.match?(response)
end
def update_db
output('db_update_started')
output('db_update_finished', updated: local_db.update, verbose: ParsedCli.verbose)
exit(0) unless ParsedCli.url
end
def before_scan
@last_update = local_db.last_update
maybe_output_banner_help_and_version # From CMSScanner
update_db if update_db_required?
setup_cache
check_target_availability
load_server_module
check_wordpress_state
rescue Error::NotWordPress => e
target.maybe_add_cookies
raise e unless target.wordpress?(ParsedCli.detection_mode)
end
# Raises errors if the target is hosted on wordpress.com or is not running WordPress
# Also check if the homepage_url is still the install url
def check_wordpress_state
raise Error::WordPressHosted if target.wordpress_hosted?
if %r{/wp-admin/install.php$}i.match?(Addressable::URI.parse(target.homepage_url).path)
output('not_fully_configured', url: target.homepage_url)
exit(WPScan::ExitCode::VULNERABLE)
end
raise Error::NotWordPress unless target.wordpress?(ParsedCli.detection_mode) || ParsedCli.force
end
# Loads the related server module in the target
# and includes it in the WpItem class which will be needed
# to check if directory listing is enabled etc
#
# @return [ Symbol ] The server module loaded
def load_server_module
server = target.server || :Apache # Tries to auto detect the server
# Force a specific server module to be loaded if supplied
case ParsedCli.server
when :apache
server = :Apache
when :iis
server = :IIS
when :nginx
server = :Nginx
end
mod = CMSScanner::Target::Server.const_get(server)
target.extend mod
Model::WpItem.include mod
server
end
end
end
end
================================================
FILE: app/controllers/custom_directories.rb
================================================
# frozen_string_literal: true
module WPScan
module Controller
# Controller to ensure that the wp-content and wp-plugins
# directories are found
class CustomDirectories < CMSScanner::Controller::Base
def cli_options
[
OptString.new(['--wp-content-dir DIR',
'The wp-content directory if custom or not detected, such as "wp-content"']),
OptString.new(['--wp-plugins-dir DIR',
'The plugins directory if custom or not detected, such as "wp-content/plugins"'])
]
end
def before_scan
target.content_dir = ParsedCli.wp_content_dir if ParsedCli.wp_content_dir
target.plugins_dir = ParsedCli.wp_plugins_dir if ParsedCli.wp_plugins_dir
raise Error::WpContentDirNotDetected unless target.content_dir
end
end
end
end
================================================
FILE: app/controllers/enumeration/cli_options.rb
================================================
# frozen_string_literal: true
module WPScan
module Controller
# Enumeration CLI Options
class Enumeration < CMSScanner::Controller::Base
def cli_options
cli_enum_choices + cli_plugins_opts + cli_themes_opts +
cli_timthumbs_opts + cli_config_backups_opts + cli_db_exports_opts +
cli_medias_opts + cli_users_opts
end
# @return [ Array<OptParseValidator::OptBase> ]
def cli_enum_choices
[
OptMultiChoices.new(
['-e', '--enumerate [OPTS]', 'Enumeration Process'],
choices: {
vp: OptBoolean.new(['--vulnerable-plugins']),
ap: OptBoolean.new(['--all-plugins']),
p: OptBoolean.new(['--popular-plugins']),
vt: OptBoolean.new(['--vulnerable-themes']),
at: OptBoolean.new(['--all-themes']),
t: OptBoolean.new(['--popular-themes']),
tt: OptBoolean.new(['--timthumbs']),
cb: OptBoolean.new(['--config-backups']),
dbe: OptBoolean.new(['--db-exports']),
u: OptIntegerRange.new(['--users', 'User IDs range. e.g: u1-5'], value_if_empty: '1-10'),
m: OptIntegerRange.new(['--medias',
'Media IDs range. e.g m1-15',
'Note: Permalink setting must be set to "Plain" for those to be detected'],
value_if_empty: '1-100')
},
value_if_empty: 'vp,vt,tt,cb,dbe,u,m',
incompatible: [%i[vp ap p], %i[vt at t]],
default: { all_plugins: true, config_backups: true }
),
OptRegexp.new(
[
'--exclude-content-based REGEXP_OR_STRING',
'Exclude all responses matching the Regexp (case insensitive) during parts of the enumeration.',
'Both the headers and body are checked. Regexp delimiters are not required.'
], options: Regexp::IGNORECASE
)
]
end
# @return [ Array<OptParseValidator::OptBase> ]
def cli_plugins_opts
[
OptSmartList.new(['--plugins-list LIST', 'List of plugins to enumerate'], advanced: true),
OptChoice.new(
['--plugins-detection MODE',
'Use the supplied mode to enumerate Plugins.'],
choices: %w[mixed passive aggressive], normalize: :to_sym, default: :passive
),
OptBoolean.new(
['--plugins-version-all',
'Check all the plugins version locations according to the choosen mode (--detection-mode, ' \
'--plugins-detection and --plugins-version-detection)'],
advanced: true
),
OptChoice.new(
['--plugins-version-detection MODE',
'Use the supplied mode to check plugins\' versions.'],
choices: %w[mixed passive aggressive], normalize: :to_sym, default: :mixed
),
OptInteger.new(
['--plugins-threshold THRESHOLD',
'Raise an error when the number of detected plugins via known locations reaches the threshold. ' \
'Set to 0 to ignore the threshold.'], default: 100, advanced: true
)
]
end
# @return [ Array<OptParseValidator::OptBase> ]
def cli_themes_opts
[
OptSmartList.new(['--themes-list LIST', 'List of themes to enumerate'], advanced: true),
OptChoice.new(
['--themes-detection MODE',
'Use the supplied mode to enumerate Themes, instead of the global (--detection-mode) mode.'],
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
),
OptBoolean.new(
['--themes-version-all',
'Check all the themes version locations according to the choosen mode (--detection-mode, ' \
'--themes-detection and --themes-version-detection)'],
advanced: true
),
OptChoice.new(
['--themes-version-detection MODE',
'Use the supplied mode to check themes versions instead of the --detection-mode ' \
'or --themes-detection modes.'],
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
),
OptInteger.new(
['--themes-threshold THRESHOLD',
'Raise an error when the number of detected themes via known locations reaches the threshold. ' \
'Set to 0 to ignore the threshold.'], default: 20, advanced: true
)
]
end
# @return [ Array<OptParseValidator::OptBase> ]
def cli_timthumbs_opts
[
OptFilePath.new(
['--timthumbs-list FILE-PATH', 'List of timthumbs\' location to use'],
exists: true, default: DB_DIR.join('timthumbs-v3.txt').to_s, advanced: true
),
OptChoice.new(
['--timthumbs-detection MODE',
'Use the supplied mode to enumerate Timthumbs, instead of the global (--detection-mode) mode.'],
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
)
]
end
# @return [ Array<OptParseValidator::OptBase> ]
def cli_config_backups_opts
[
OptFilePath.new(
['--config-backups-list FILE-PATH', 'List of config backups\' filenames to use'],
exists: true, default: DB_DIR.join('config_backups.txt').to_s, advanced: true
),
OptChoice.new(
['--config-backups-detection MODE',
'Use the supplied mode to enumerate Config Backups, instead of the global (--detection-mode) mode.'],
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
)
]
end
# @return [ Array<OptParseValidator::OptBase> ]
def cli_db_exports_opts
[
OptFilePath.new(
['--db-exports-list FILE-PATH', 'List of DB exports\' paths to use'],
exists: true, default: DB_DIR.join('db_exports.txt').to_s, advanced: true
),
OptChoice.new(
['--db-exports-detection MODE',
'Use the supplied mode to enumerate DB Exports, instead of the global (--detection-mode) mode.'],
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
)
]
end
# @return [ Array<OptParseValidator::OptBase> ]
def cli_medias_opts
[
OptChoice.new(
['--medias-detection MODE',
'Use the supplied mode to enumerate Medias, instead of the global (--detection-mode) mode.'],
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
)
]
end
# @return [ Array<OptParseValidator::OptBase> ]
def cli_users_opts
[
OptSmartList.new(
['--users-list LIST',
'List of users to check during the users enumeration from the Login Error Messages'],
advanced: true
),
OptChoice.new(
['--users-detection MODE',
'Use the supplied mode to enumerate Users, instead of the global (--detection-mode) mode.'],
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
),
OptRegexp.new(
[
'--exclude-usernames REGEXP_OR_STRING',
'Exclude usernames matching the Regexp/string (case insensitive). Regexp delimiters are not required.'
], options: Regexp::IGNORECASE
)
]
end
end
end
end
================================================
FILE: app/controllers/enumeration/enum_methods.rb
================================================
# frozen_string_literal: true
module WPScan
module Controller
# Enumeration Methods
class Enumeration < CMSScanner::Controller::Base
# @param [ String ] type (plugins or themes)
# @param [ Symbol ] detection_mode
#
# @return [ String ] The related enumration message depending on the ParsedCli and type supplied
def enum_message(type, detection_mode)
return unless %w[plugins themes].include?(type)
details = if ParsedCli.enumerate[:"vulnerable_#{type}"]
'Vulnerable'
elsif ParsedCli.enumerate[:"all_#{type}"]
'All'
else
'Most Popular'
end
"Enumerating #{details} #{type.capitalize} #{enum_detection_message(detection_mode)}"
end
# @param [ Symbol ] detection_mode
#
# @return [ String ]
def enum_detection_message(detection_mode)
detection_method = if detection_mode == :mixed
'Passive and Aggressive'
else
detection_mode.to_s.capitalize
end
"(via #{detection_method} Methods)"
end
# @param [ String ] type (plugins, themes etc)
#
# @return [ Hash ]
def default_opts(type)
mode = ParsedCli.options[:"#{type}_detection"] || ParsedCli.detection_mode
{
mode: mode,
exclude_content: ParsedCli.exclude_content_based,
show_progression: user_interaction?,
version_detection: {
mode: ParsedCli.options[:"#{type}_version_detection"] || mode,
confidence_threshold: ParsedCli.options[:"#{type}_version_all"] ? 0 : 100
}
}
end
# @param [ Hash ] opts
#
# @return [ Boolean ] Wether or not to enumerate the plugins
def enum_plugins?(opts)
opts[:popular_plugins] || opts[:all_plugins] || opts[:vulnerable_plugins]
end
def enum_plugins
opts = default_opts('plugins').merge(
list: plugins_list_from_opts(ParsedCli.options),
threshold: ParsedCli.plugins_threshold,
sort: true
)
output('@info', msg: enum_message('plugins', opts[:mode])) if user_interaction?
# Enumerate the plugins & find their versions to avoid doing that when #version
# is called in the view
plugins = target.plugins(opts)
if user_interaction? && !plugins.empty?
output('@info',
msg: "Checking Plugin Versions #{enum_detection_message(opts[:version_detection][:mode])}")
end
plugins.each(&:version)
plugins.select!(&:vulnerable?) if ParsedCli.enumerate[:vulnerable_plugins]
output('plugins', plugins: plugins)
end
# @param [ Hash ] opts
#
# @return [ Array<String> ] The plugins list associated to the cli options
def plugins_list_from_opts(opts)
# List file provided by the user via the cli
return opts[:plugins_list] if opts[:plugins_list]
if opts[:enumerate][:all_plugins]
DB::Plugins.all_slugs
elsif opts[:enumerate][:popular_plugins]
DB::Plugins.popular_slugs
else
DB::Plugins.vulnerable_slugs
end
end
# @param [ Hash ] opts
#
# @return [ Boolean ] Wether or not to enumerate the themes
def enum_themes?(opts)
opts[:popular_themes] || opts[:all_themes] || opts[:vulnerable_themes]
end
def enum_themes
opts = default_opts('themes').merge(
list: themes_list_from_opts(ParsedCli.options),
threshold: ParsedCli.themes_threshold,
sort: true
)
output('@info', msg: enum_message('themes', opts[:mode])) if user_interaction?
# Enumerate the themes & find their versions to avoid doing that when #version
# is called in the view
themes = target.themes(opts)
if user_interaction? && !themes.empty?
output('@info',
msg: "Checking Theme Versions #{enum_detection_message(opts[:version_detection][:mode])}")
end
themes.each(&:version)
themes.select!(&:vulnerable?) if ParsedCli.enumerate[:vulnerable_themes]
output('themes', themes: themes)
end
# @param [ Hash ] opts
#
# @return [ Array<String> ] The themes list associated to the cli options
def themes_list_from_opts(opts)
# List file provided by the user via the cli
return opts[:themes_list] if opts[:themes_list]
if opts[:enumerate][:all_themes]
DB::Themes.all_slugs
elsif opts[:enumerate][:popular_themes]
DB::Themes.popular_slugs
else
DB::Themes.vulnerable_slugs
end
end
def enum_timthumbs
opts = default_opts('timthumbs').merge(list: ParsedCli.timthumbs_list)
output('@info', msg: "Enumerating Timthumbs #{enum_detection_message(opts[:mode])}") if user_interaction?
output('timthumbs', timthumbs: target.timthumbs(opts))
end
def enum_config_backups
opts = default_opts('config_backups').merge(list: ParsedCli.config_backups_list)
output('@info', msg: "Enumerating Config Backups #{enum_detection_message(opts[:mode])}") if user_interaction?
output('config_backups', config_backups: target.config_backups(opts))
end
def enum_db_exports
opts = default_opts('db_exports').merge(list: ParsedCli.db_exports_list)
output('@info', msg: "Enumerating DB Exports #{enum_detection_message(opts[:mode])}") if user_interaction?
output('db_exports', db_exports: target.db_exports(opts))
end
def enum_medias
opts = default_opts('medias').merge(range: ParsedCli.enumerate[:medias])
if user_interaction?
output('@info',
msg: "Enumerating Medias #{enum_detection_message(opts[:mode])} "\
'(Permalink setting must be set to "Plain" for those to be detected)')
end
output('medias', medias: target.medias(opts))
end
# @param [ Hash ] opts
#
# @return [ Boolean ] Wether or not to enumerate the users
def enum_users?(opts)
opts[:users] || (ParsedCli.passwords && !ParsedCli.username && !ParsedCli.usernames)
end
def enum_users
opts = default_opts('users').merge(
range: enum_users_range,
list: ParsedCli.users_list
)
output('@info', msg: "Enumerating Users #{enum_detection_message(opts[:mode])}") if user_interaction?
output('users', users: target.users(opts))
end
# @return [ Range ] The user ids range to enumerate
# If the --enumerate is used, the default value is handled by the Option
# However, when using --passwords alone, the default has to be set by the code below
def enum_users_range
ParsedCli.enumerate[:users] || cli_enum_choices[0].choices[:u].validate(nil)
end
end
end
end
================================================
FILE: app/controllers/enumeration.rb
================================================
# frozen_string_literal: true
require_relative 'enumeration/cli_options'
require_relative 'enumeration/enum_methods'
module WPScan
module Controller
# Enumeration Controller
class Enumeration < CMSScanner::Controller::Base
def run
enum = ParsedCli.enumerate || {}
enum_plugins if enum_plugins?(enum)
enum_themes if enum_themes?(enum)
%i[timthumbs config_backups db_exports medias].each do |key|
send("enum_#{key}".to_sym) if enum.key?(key)
end
enum_users if enum_users?(enum)
end
end
end
end
================================================
FILE: app/controllers/main_theme.rb
================================================
# frozen_string_literal: true
module WPScan
module Controller
# Main Theme Controller
class MainTheme < CMSScanner::Controller::Base
def cli_options
[
OptChoice.new(
['--main-theme-detection MODE',
'Use the supplied mode for the Main theme detection, instead of the global (--detection-mode) mode.'],
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
)
]
end
def run
output(
'theme',
theme: target.main_theme(
mode: ParsedCli.main_theme_detection || ParsedCli.detection_mode
),
verbose: ParsedCli.verbose
)
end
end
end
end
================================================
FILE: app/controllers/password_attack.rb
================================================
# frozen_string_literal: true
module WPScan
module Controller
# Password Attack Controller
class PasswordAttack < CMSScanner::Controller::Base
def cli_options
[
OptFilePath.new(
['--passwords FILE-PATH', '-P',
'List of passwords to use during the password attack.',
'If no --username/s option supplied, user enumeration will be run.'],
exists: true
),
OptSmartList.new(['--usernames LIST', '-U', 'List of usernames to use during the password attack.']),
OptInteger.new(['--multicall-max-passwords MAX_PWD',
'Maximum number of passwords to send by request with XMLRPC multicall'],
default: 500),
OptChoice.new(['--password-attack ATTACK',
'Force the supplied attack to be used rather than automatically determining one.',
'Multicall will only work against WP < 4.4'],
choices: %w[wp-login xmlrpc xmlrpc-multicall],
normalize: %i[downcase underscore to_sym]),
OptString.new(['--login-uri URI', 'The URI of the login page if different from /wp-login.php'])
]
end
def attack_opts
@attack_opts ||= {
show_progression: user_interaction?,
multicall_max_passwords: ParsedCli.multicall_max_passwords
}
end
def run
return unless ParsedCli.passwords
begin
found = []
if user_interaction?
output('@info',
msg: "Performing password attack on #{attacker.titleize} against #{users.size} user/s")
end
attacker.attack(users, ParsedCli.passwords, attack_opts) do |user|
found << user
attacker.progress_bar.log("[SUCCESS] - #{user.username} / #{user.password}")
end
rescue Error::NoLoginInterfaceDetected => e
# TODO: Maybe output that in JSON as well.
output('@notice', msg: e.to_s) if user_interaction?
ensure
output('users', users: found)
end
end
# @return [ CMSScanner::Finders::Finder ] The finder used to perform the attack
def attacker
@attacker ||= attacker_from_cli_options || attacker_from_automatic_detection
end
# @return [ Model::XMLRPC ]
def xmlrpc
@xmlrpc ||= target.xmlrpc
end
# @return [ CMSScanner::Finders::Finder ]
def attacker_from_cli_options
return unless ParsedCli.password_attack
case ParsedCli.password_attack
when :wp_login
raise Error::NoLoginInterfaceDetected unless target.login_url
Finders::Passwords::WpLogin.new(target)
when :xmlrpc
raise Error::XMLRPCNotDetected unless xmlrpc
Finders::Passwords::XMLRPC.new(xmlrpc)
when :xmlrpc_multicall
raise Error::XMLRPCNotDetected unless xmlrpc
Finders::Passwords::XMLRPCMulticall.new(xmlrpc)
end
end
# @return [ Boolean ]
def xmlrpc_get_users_blogs_enabled?
if xmlrpc&.enabled? &&
xmlrpc.available_methods.include?('wp.getUsersBlogs') &&
!xmlrpc.method_call('wp.getUsersBlogs', [SecureRandom.hex[0, 6], SecureRandom.hex[0, 4]])
.run.body.match?(/>\s*405\s*</)
true
else
false
end
end
# @return [ CMSScanner::Finders::Finder ]
def attacker_from_automatic_detection
if xmlrpc_get_users_blogs_enabled?
wp_version = target.wp_version
if wp_version && wp_version < '4.4'
Finders::Passwords::XMLRPCMulticall.new(xmlrpc)
else
Finders::Passwords::XMLRPC.new(xmlrpc)
end
elsif target.login_url
Finders::Passwords::WpLogin.new(target)
else
raise Error::NoLoginInterfaceDetected
end
end
# @return [ Array<Users> ] The users to brute force
def users
return target.users unless ParsedCli.usernames
ParsedCli.usernames.reduce([]) do |acc, elem|
acc << Model::User.new(elem.chomp)
end
end
end
end
end
================================================
FILE: app/controllers/vuln_api.rb
================================================
# frozen_string_literal: true
module WPScan
module Controller
# Controller to handle the API token
class VulnApi < CMSScanner::Controller::Base
ENV_KEY = 'WPSCAN_API_TOKEN'
def cli_options
[
OptString.new(
['--api-token TOKEN',
'The WPScan API Token to display vulnerability data, available at https://wpscan.com/profile']
)
]
end
def before_scan
return unless ParsedCli.api_token || ENV.key?(ENV_KEY)
DB::VulnApi.token = ParsedCli.api_token || ENV[ENV_KEY]
api_status = DB::VulnApi.status
raise Error::InvalidApiToken if api_status['status'] == 'forbidden'
raise Error::ApiLimitReached if api_status['requests_remaining'] == 0
raise api_status['http_error'] if api_status['http_error']
end
def after_scan
output('status', status: DB::VulnApi.status, api_requests: WPScan.api_requests)
end
end
end
end
================================================
FILE: app/controllers/wp_version.rb
================================================
# frozen_string_literal: true
module WPScan
module Controller
# Wp Version Controller
class WpVersion < CMSScanner::Controller::Base
def cli_options
[
OptBoolean.new(['--wp-version-all', 'Check all the version locations'], advanced: true),
OptChoice.new(
['--wp-version-detection MODE',
'Use the supplied mode for the WordPress version detection, ' \
'instead of the global (--detection-mode) mode.'],
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
)
]
end
def before_scan
DB::DynamicFinders::Wordpress.create_versions_finders
end
def run
output(
'version',
version: target.wp_version(
mode: ParsedCli.wp_version_detection || ParsedCli.detection_mode,
confidence_threshold: ParsedCli.wp_version_all ? 0 : 100,
show_progression: user_interaction?
)
)
end
end
end
end
================================================
FILE: app/controllers.rb
================================================
# frozen_string_literal: true
require_relative 'controllers/core'
require_relative 'controllers/vuln_api'
require_relative 'controllers/custom_directories'
require_relative 'controllers/wp_version'
require_relative 'controllers/main_theme'
require_relative 'controllers/enumeration'
require_relative 'controllers/password_attack'
require_relative 'controllers/aliases'
================================================
FILE: app/finders/config_backups/known_filenames.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module ConfigBackups
# Config Backup finder
class KnownFilenames < CMSScanner::Finders::Finder
include CMSScanner::Finders::Finder::Enumerator
# @param [ Hash ] opts
# @option opts [ String ] :list
# @option opts [ Boolean ] :show_progression
#
# @return [ Array<ConfigBackup> ]
def aggressive(opts = {})
found = []
enumerate(potential_urls(opts), opts.merge(check_full_response: 200)) do |res|
next unless res.body =~ /define/i && res.body !~ /<\s?html/i
found << Model::ConfigBackup.new(res.request.url, found_by: DIRECT_ACCESS, confidence: 100)
end
found
end
# @param [ Hash ] opts
# @option opts [ String ] :list Mandatory
#
# @return [ Hash ]
def potential_urls(opts = {})
urls = {}
File.open(opts[:list]).each_with_index do |file, index|
urls[target.url(file.chomp)] = index
end
urls
end
def create_progress_bar(opts = {})
super(opts.merge(title: ' Checking Config Backups -'))
end
end
end
end
end
================================================
FILE: app/finders/config_backups.rb
================================================
# frozen_string_literal: true
require_relative 'config_backups/known_filenames'
module WPScan
module Finders
module ConfigBackups
# Config Backup Finder
class Base
include CMSScanner::Finders::SameTypeFinder
# @param [ WPScan::Target ] target
def initialize(target)
finders << ConfigBackups::KnownFilenames.new(target)
end
end
end
end
end
================================================
FILE: app/finders/db_exports/known_locations.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module DbExports
# DB Exports finder
class KnownLocations < CMSScanner::Finders::Finder
include CMSScanner::Finders::Finder::Enumerator
def valid_response_codes
@valid_response_codes ||= [200, 206].freeze
end
SQL_PATTERN = /(?:DROP|(?:UN)?LOCK|CREATE|ALTER) (?:TABLE|DATABASE)|INSERT INTO/.freeze
# @param [ Hash ] opts
# @option opts [ String ] :list
# @option opts [ Boolean ] :show_progression
#
# @return [ Array<DBExport> ]
def aggressive(opts = {})
found = []
enumerate(potential_urls(opts), opts.merge(check_full_response: valid_response_codes)) do |res|
if res.effective_url.end_with?('.zip')
next unless %r{\Aapplication/zip}i.match?(res.headers['Content-Type'])
else
next unless SQL_PATTERN.match?(res.body)
end
found << Model::DbExport.new(res.request.url, found_by: DIRECT_ACCESS, confidence: 100)
end
found
end
def full_request_params
@full_request_params ||= { headers: { 'Range' => 'bytes=0-3000' } }
end
# @param [ Hash ] opts
# @option opts [ String ] :list Mandatory
#
# @return [ Hash ]
def potential_urls(opts = {})
urls = {}
index = 0
File.open(opts[:list]).each do |path|
path.chomp!
if path.include?('{domain_name}')
urls[target.url(path.gsub('{domain_name}', domain_name))] = index
if domain_name != domain_name_with_sub
urls[target.url(path.gsub('{domain_name}', domain_name_with_sub))] = index + 1
index += 1
end
else
urls[target.url(path)] = index
end
index += 1
end
urls
end
def domain_name
@domain_name ||= if Resolv::AddressRegex.match?(target.uri.host)
target.uri.host
else
(PublicSuffix.domain(target.uri.host) || target.uri.host)[/(^[\w|-]+)/, 1]
end
end
def domain_name_with_sub
@domain_name_with_sub ||=
if Resolv::AddressRegex.match?(target.uri.host)
target.uri.host
else
parsed = PublicSuffix.parse(target.uri.host)
if parsed.subdomain
parsed.subdomain.gsub(".#{parsed.tld}", '')
elsif parsed.domain
parsed.domain.gsub(".#{parsed.tld}", '')
else
target.uri.host
end
end
rescue PublicSuffix::DomainNotAllowed
@domain_name_with_sub = target.uri.host
end
def create_progress_bar(opts = {})
super(opts.merge(title: ' Checking DB Exports -'))
end
end
end
end
end
================================================
FILE: app/finders/db_exports.rb
================================================
# frozen_string_literal: true
require_relative 'db_exports/known_locations'
module WPScan
module Finders
module DbExports
# DB Exports Finder
class Base
include CMSScanner::Finders::SameTypeFinder
# @param [ WPScan::Target ] target
def initialize(target)
finders << DbExports::KnownLocations.new(target)
end
end
end
end
end
================================================
FILE: app/finders/interesting_findings/backup_db.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module InterestingFindings
# BackupDB finder
class BackupDB < CMSScanner::Finders::Finder
# @return [ InterestingFinding ]
def aggressive(_opts = {})
path = 'wp-content/backup-db/'
res = target.head_and_get(path, [200, 403])
return unless [200, 403].include?(res.code) && !target.homepage_or_404?(res)
Model::BackupDB.new(
target.url(path),
confidence: 70,
found_by: DIRECT_ACCESS,
interesting_entries: target.directory_listing_entries(path)
)
end
end
end
end
end
================================================
FILE: app/finders/interesting_findings/debug_log.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module InterestingFindings
# debug.log finder
class DebugLog < CMSScanner::Finders::Finder
# @return [ InterestingFinding ]
def aggressive(_opts = {})
path = 'wp-content/debug.log'
return unless target.debug_log?(path)
Model::DebugLog.new(target.url(path), confidence: 100, found_by: DIRECT_ACCESS)
end
end
end
end
end
================================================
FILE: app/finders/interesting_findings/duplicator_installer_log.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module InterestingFindings
# DuplicatorInstallerLog finder
class DuplicatorInstallerLog < CMSScanner::Finders::Finder
# @return [ InterestingFinding ]
def aggressive(_opts = {})
path = 'installer-log.txt'
return unless /DUPLICATOR(-|\s)?(PRO|LITE)?:? INSTALL-LOG/i.match?(target.head_and_get(path).body)
Model::DuplicatorInstallerLog.new(target.url(path), confidence: 100, found_by: DIRECT_ACCESS)
end
end
end
end
end
================================================
FILE: app/finders/interesting_findings/emergency_pwd_reset_script.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module InterestingFindings
# Emergency Password Reset Script finder
class EmergencyPwdResetScript < CMSScanner::Finders::Finder
# @return [ InterestingFinding ]
def aggressive(_opts = {})
path = 'emergency.php'
res = target.head_and_get(path)
return unless res.code == 200 && !target.homepage_or_404?(res)
Model::EmergencyPwdResetScript.new(
target.url(path),
confidence: /password/i.match?(res.body) ? 100 : 40,
found_by: DIRECT_ACCESS
)
end
end
end
end
end
================================================
FILE: app/finders/interesting_findings/full_path_disclosure.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module InterestingFindings
# Full Path Disclosure finder
class FullPathDisclosure < CMSScanner::Finders::Finder
# @return [ InterestingFinding ]
def aggressive(_opts = {})
path = 'wp-includes/rss-functions.php'
fpd_entries = target.full_path_disclosure_entries(path)
return if fpd_entries.empty?
Model::FullPathDisclosure.new(
target.url(path),
confidence: 100,
found_by: DIRECT_ACCESS,
interesting_entries: fpd_entries
)
end
end
end
end
end
================================================
FILE: app/finders/interesting_findings/mu_plugins.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module InterestingFindings
# Must Use Plugins Directory checker
class MuPlugins < CMSScanner::Finders::Finder
# @return [ InterestingFinding ]
def passive(_opts = {})
pattern = %r{#{target.content_dir}/mu-plugins/}i
target.in_scope_uris(target.homepage_res, '(//@href|//@src)[contains(., "mu-plugins")]') do |uri|
next unless uri.path&.match?(pattern)
url = target.url('wp-content/mu-plugins/')
target.mu_plugins = true
return Model::MuPlugins.new(url, confidence: 70, found_by: 'URLs In Homepage (Passive Detection)')
end
nil
end
# @return [ InterestingFinding ]
def aggressive(_opts = {})
url = target.url('wp-content/mu-plugins/')
res = Browser.get_and_follow_location(url)
return unless [200, 401, 403].include?(res.code)
return if target.homepage_or_404?(res)
target.mu_plugins = true
Model::MuPlugins.new(url, confidence: 80, found_by: DIRECT_ACCESS)
end
end
end
end
end
================================================
FILE: app/finders/interesting_findings/multisite.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module InterestingFindings
# Multisite checker
class Multisite < CMSScanner::Finders::Finder
# @return [ InterestingFinding ]
def aggressive(_opts = {})
url = target.url('wp-signup.php')
res = Browser.get(url)
location = res.headers_hash['location']
return unless [200, 302].include?(res.code)
return if res.code == 302 && location&.include?('wp-login.php?action=register')
return unless res.code == 200 || (res.code == 302 && location&.include?('wp-signup.php'))
target.multisite = true
Model::Multisite.new(url, confidence: 100, found_by: DIRECT_ACCESS)
end
end
end
end
end
================================================
FILE: app/finders/interesting_findings/php_disabled.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module InterestingFindings
# See https://github.com/wpscanteam/wpscan/issues/1593
class PHPDisabled < CMSScanner::Finders::Finder
PATTERN = /\$wp_version =/.freeze
# @return [ InterestingFinding ]
def aggressive(_opts = {})
path = 'wp-includes/version.php'
return unless PATTERN.match?(target.head_and_get(path).body)
Model::PHPDisabled.new(target.url(path), confidence: 100, found_by: DIRECT_ACCESS)
end
end
end
end
end
================================================
FILE: app/finders/interesting_findings/readme.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module InterestingFindings
# Readme.html finder
class Readme < CMSScanner::Finders::Finder
# @return [ InterestingFinding ]
def aggressive(_opts = {})
potential_files.each do |path|
res = target.head_and_get(path)
next unless res.code == 200 && res.body =~ /wordpress/i
return Model::Readme.new(target.url(path), confidence: 100, found_by: DIRECT_ACCESS)
end
nil
end
# @retun [ Array<String> ] The list of potential readme files
def potential_files
%w[readme.html olvasdel.html lisenssi.html liesmich.html]
end
end
end
end
end
================================================
FILE: app/finders/interesting_findings/registration.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module InterestingFindings
# Registration Enabled checker
class Registration < CMSScanner::Finders::Finder
# @return [ InterestingFinding ]
def passive(_opts = {})
# Maybe check in the homepage if there is the registration url ?
end
# @return [ InterestingFinding ]
def aggressive(_opts = {})
res = Browser.get_and_follow_location(target.registration_url)
return unless res.code == 200
return if res.html.css('form#setupform').empty? &&
res.html.css('form#registerform').empty?
target.registration_enabled = true
Model::Registration.new(res.effective_url, confidence: 100, found_by: DIRECT_ACCESS)
end
end
end
end
end
================================================
FILE: app/finders/interesting_findings/tmm_db_migrate.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module InterestingFindings
# Tmm DB Migrate finder
class TmmDbMigrate < CMSScanner::Finders::Finder
# @return [ InterestingFinding ]
def aggressive(_opts = {})
path = 'wp-content/uploads/tmm_db_migrate/tmm_db_migrate.zip'
url = target.url(path)
res = browser.forge_request(url, target.head_or_get_request_params).run
return unless res.code == 200 && res.headers['Content-Type'] =~ %r{\Aapplication/zip}i
Model::TmmDbMigrate.new(url, confidence: 100, found_by: DIRECT_ACCESS)
end
end
end
end
end
================================================
FILE: app/finders/interesting_findings/upload_directory_listing.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module InterestingFindings
# UploadDirectoryListing finder
class UploadDirectoryListing < CMSScanner::Finders::Finder
# @return [ InterestingFinding ]
def aggressive(_opts = {})
path = 'wp-content/uploads/'
return unless target.directory_listing?(path)
url = target.url(path)
Model::UploadDirectoryListing.new(url, confidence: 100, found_by: DIRECT_ACCESS)
end
end
end
end
end
================================================
FILE: app/finders/interesting_findings/upload_sql_dump.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module InterestingFindings
# UploadSQLDump finder
class UploadSQLDump < CMSScanner::Finders::Finder
SQL_PATTERN = /(?:DROP|CREATE|(?:UN)?LOCK) TABLE|INSERT INTO/.freeze
# @return [ InterestingFinding ]
def aggressive(_opts = {})
path = 'wp-content/uploads/dump.sql'
res = target.head_and_get(path, [200], get: { headers: { 'Range' => 'bytes=0-3000' } })
return unless SQL_PATTERN.match?(res.body)
Model::UploadSQLDump.new(target.url(path), confidence: 100, found_by: DIRECT_ACCESS)
end
end
end
end
end
================================================
FILE: app/finders/interesting_findings/wp_cron.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module InterestingFindings
# wp-cron.php finder
class WPCron < CMSScanner::Finders::Finder
# @return [ InterestingFinding ]
def aggressive(_opts = {})
res = Browser.get(wp_cron_url)
return unless res.code == 200
Model::WPCron.new(wp_cron_url, confidence: 60, found_by: DIRECT_ACCESS)
end
def wp_cron_url
@wp_cron_url ||= target.url('wp-cron.php')
end
end
end
end
end
================================================
FILE: app/finders/interesting_findings.rb
================================================
# frozen_string_literal: true
require_relative 'interesting_findings/readme'
require_relative 'interesting_findings/wp_cron'
require_relative 'interesting_findings/multisite'
require_relative 'interesting_findings/debug_log'
require_relative 'interesting_findings/backup_db'
require_relative 'interesting_findings/mu_plugins'
require_relative 'interesting_findings/php_disabled'
require_relative 'interesting_findings/registration'
require_relative 'interesting_findings/tmm_db_migrate'
require_relative 'interesting_findings/upload_sql_dump'
require_relative 'interesting_findings/full_path_disclosure'
require_relative 'interesting_findings/duplicator_installer_log'
require_relative 'interesting_findings/upload_directory_listing'
require_relative 'interesting_findings/emergency_pwd_reset_script'
module WPScan
module Finders
module InterestingFindings
# Interesting Files Finder
class Base < CMSScanner::Finders::InterestingFindings::Base
# @param [ WPScan::Target ] target
def initialize(target)
super(target)
%w[
Readme DebugLog FullPathDisclosure BackupDB DuplicatorInstallerLog
Multisite MuPlugins Registration UploadDirectoryListing TmmDbMigrate
UploadSQLDump EmergencyPwdResetScript WPCron PHPDisabled
].each do |f|
finders << InterestingFindings.const_get(f).new(target)
end
end
end
end
end
end
================================================
FILE: app/finders/main_theme/css_style_in_404_page.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module MainTheme
# From the CSS style in the 404 page
class CssStyleIn404Page < CssStyleInHomepage
def passive(opts = {})
passive_from_css_href(target.error_404_res, opts) || passive_from_style_code(target.error_404_res, opts)
end
end
end
end
end
================================================
FILE: app/finders/main_theme/css_style_in_homepage.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module MainTheme
# From the CSS style in the homepage
class CssStyleInHomepage < CMSScanner::Finders::Finder
include Finders::WpItems::UrlsInPage # To have the item_code_pattern method available here
def create_theme(slug, style_url, opts)
Model::Theme.new(
slug,
target,
opts.merge(found_by: found_by, confidence: 70, style_url: style_url)
)
end
def passive(opts = {})
passive_from_css_href(target.homepage_res, opts) || passive_from_style_code(target.homepage_res, opts)
end
def passive_from_css_href(res, opts)
target.in_scope_uris(res, '//link/@href[contains(., "style.css")]') do |uri|
next unless uri.path =~ %r{/themes/([^/]+)/style.css\z}i
return create_theme(Regexp.last_match[1], uri.to_s, opts)
end
nil
end
def passive_from_style_code(res, opts)
res.html.css('style').each do |tag|
code = tag.text.to_s
next if code.empty?
next unless code =~ %r{#{item_code_pattern('themes')}\\?/style\.css[^"'( ]*}i
return create_theme(Regexp.last_match[1], Regexp.last_match[0].strip, opts)
end
nil
end
end
end
end
end
================================================
FILE: app/finders/main_theme/urls_in_404_page.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module MainTheme
# URLs In 404 Page Finder
class UrlsIn404Page < UrlsInHomepage
# @return [ Typhoeus::Response ]
def page_res
@page_res ||= target.error_404_res
end
end
end
end
end
================================================
FILE: app/finders/main_theme/urls_in_homepage.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module MainTheme
# URLs In Homepage Finder
class UrlsInHomepage < CMSScanner::Finders::Finder
include WpItems::UrlsInPage
# @param [ Hash ] opts
#
# @return [ Array<Theme> ]
def passive(opts = {})
found = []
slugs = items_from_links('themes', uniq: false) + items_from_codes('themes', uniq: false)
slugs.each_with_object(Hash.new(0)) { |slug, counts| counts[slug] += 1 }.each do |slug, occurences|
found << Model::Theme.new(slug, target, opts.merge(found_by: found_by, confidence: 2 * occurences))
end
found
end
# @return [ Typhoeus::Response ]
def page_res
@page_res ||= target.homepage_res
end
end
end
end
end
================================================
FILE: app/finders/main_theme/woo_framework_meta_generator.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module MainTheme
# From the WooFramework meta generators
class WooFrameworkMetaGenerator < CMSScanner::Finders::Finder
THEME_PATTERN = %r{<meta name="generator" content="([^\s"]+)\s?([^"]+)?"\s+/?>}.freeze
FRAMEWORK_PATTERN = %r{<meta name="generator" content="WooFramework\s?([^"]+)?"\s+/?>}.freeze
PATTERN = /#{THEME_PATTERN}\s+#{FRAMEWORK_PATTERN}/i.freeze
def passive(opts = {})
return unless target.homepage_res.body =~ PATTERN || target.error_404_res.body =~ PATTERN
Model::Theme.new(
Regexp.last_match[1],
target,
opts.merge(found_by: found_by, confidence: 80)
)
end
end
end
end
end
================================================
FILE: app/finders/main_theme.rb
================================================
# frozen_string_literal: true
require_relative 'main_theme/css_style_in_homepage'
require_relative 'main_theme/css_style_in_404_page'
require_relative 'main_theme/woo_framework_meta_generator'
require_relative 'main_theme/urls_in_homepage'
require_relative 'main_theme/urls_in_404_page'
module WPScan
module Finders
module MainTheme
# Main Theme Finder
class Base
include CMSScanner::Finders::UniqueFinder
# @param [ WPScan::Target ] target
def initialize(target)
finders <<
MainTheme::CssStyleInHomepage.new(target) <<
MainTheme::CssStyleIn404Page.new(target) <<
MainTheme::WooFrameworkMetaGenerator.new(target) <<
MainTheme::UrlsInHomepage.new(target) <<
MainTheme::UrlsIn404Page.new(target)
end
end
end
end
end
================================================
FILE: app/finders/medias/attachment_brute_forcing.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Medias
# Medias Finder, see https://github.com/wpscanteam/wpscan/issues/172
class AttachmentBruteForcing < CMSScanner::Finders::Finder
include CMSScanner::Finders::Finder::Enumerator
# @param [ Hash ] opts
# @option opts [ Range ] :range Mandatory
#
# @return [ Array<Media> ]
def aggressive(opts = {})
found = []
enumerate(target_urls(opts), opts) do |res|
next unless res.code == 200
found << Model::Media.new(res.effective_url, opts.merge(found_by: found_by, confidence: 100))
end
found
end
# @param [ Hash ] opts
# @option opts [ Range ] :range Mandatory
#
# @return [ Hash ]
def target_urls(opts = {})
urls = {}
opts[:range].each do |id|
urls[target.uri.join("?attachment_id=#{id}").to_s] = id
end
urls
end
def create_progress_bar(opts = {})
super(opts.merge(title: ' Brute Forcing Attachment IDs -'))
end
end
end
end
end
================================================
FILE: app/finders/medias.rb
================================================
# frozen_string_literal: true
require_relative 'medias/attachment_brute_forcing'
module WPScan
module Finders
module Medias
# Medias Finder
class Base
include CMSScanner::Finders::SameTypeFinder
# @param [ WPScan::Target ] target
def initialize(target)
finders << Medias::AttachmentBruteForcing.new(target)
end
end
end
end
end
================================================
FILE: app/finders/passwords/wp_login.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Passwords
# Password attack against the wp-login.php
class WpLogin < CMSScanner::Finders::Finder
include CMSScanner::Finders::Finder::BreadthFirstDictionaryAttack
def login_request(username, password)
target.login_request(username, password)
end
def valid_credentials?(response)
response.code == 302 &&
Array(response.headers['Set-Cookie'])&.any? { |cookie| cookie =~ /wordpress_logged_in_/i }
end
def errored_response?(response)
response.code != 200 && response.body !~ /login_error/i
end
end
end
end
end
================================================
FILE: app/finders/passwords/xml_rpc.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Passwords
# Password attack against the XMLRPC interface
class XMLRPC < CMSScanner::Finders::Finder
include CMSScanner::Finders::Finder::BreadthFirstDictionaryAttack
def login_request(username, password)
target.method_call('wp.getUsersBlogs', [username, password], cache_ttl: 0)
end
def valid_credentials?(response)
response.code == 200 && response.body.include?('blogName')
end
def errored_response?(response)
response.code != 200 && response.body !~ /Incorrect username or password/i
end
end
end
end
end
================================================
FILE: app/finders/passwords/xml_rpc_multicall.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Passwords
# Password attack against the XMLRPC interface with the multicall method
# WP < 4.4 is vulnerable to such attack
class XMLRPCMulticall < CMSScanner::Finders::Finder
# @param [ Array<User> ] users
# @param [ Array<String> ] passwords
#
# @return [ Typhoeus::Response ]
def do_multi_call(users, passwords)
methods = []
users.each do |user|
passwords.each do |password|
methods << ['wp.getUsersBlogs', user.username, password]
end
end
target.multi_call(methods, cache_ttl: 0).run
end
# @param [ IO ] file
# @param [ Integer ] passwords_size
# @return [ Array<String> ] The passwords from the last checked position in the file until there are
# passwords_size passwords retrieved
def passwords_from_wordlist(file, passwords_size)
pwds = []
added_pwds = 0
return pwds if passwords_size.zero?
# Make sure that the main code does not call #sysseek or #count etc
# otherwise the file descriptor will be set to somwehere else
file.each_line(chomp: true) do |line|
pwds << line
added_pwds += 1
break if added_pwds == passwords_size
end
pwds
end
# @param [ Array<Model::User> ] users
# @param [ String ] wordlist_path
# @param [ Hash ] opts
# @option opts [ Boolean ] :show_progression
# @option opts [ Integer ] :multicall_max_passwords
#
# @yield [ Model::User ] When a valid combination is found
#
# TODO: Make rubocop happy about metrics etc
#
# rubocop:disable all
def attack(users, wordlist_path, opts = {})
checked_passwords = 0
wordlist = File.open(wordlist_path)
wordlist_size = wordlist.count
max_passwords = opts[:multicall_max_passwords]
current_passwords_size = passwords_size(max_passwords, users.size)
create_progress_bar(total: (wordlist_size / current_passwords_size.round(1)).ceil,
show_progression: opts[:show_progression])
wordlist.sysseek(0) # reset the descriptor to the beginning of the file as it changed with #count
loop do
current_users = users.select { |user| user.password.nil? }
current_passwords = passwords_from_wordlist(wordlist, current_passwords_size)
checked_passwords += current_passwords_size
break if current_users.empty? || current_passwords.nil? || current_passwords.empty?
res = do_multi_call(current_users, current_passwords)
progress_bar.increment
check_and_output_errors(res)
# Avoid to parse the response and iterate over all the structs in the document
# if there isn't any tag matching a valid combination
next unless res.body =~ /isAdmin/ # maybe a better one ?
Nokogiri::XML(res.body).xpath('//struct').each_with_index do |struct, index|
next if struct.text =~ /faultCode/
user = current_users[index / current_passwords.size]
user.password = current_passwords[index % current_passwords.size]
yield user
# Updates the current_passwords_size and progress_bar#total
# given that less requests will be done due to a valid combination found.
current_passwords_size = passwords_size(max_passwords, current_users.size - 1)
if current_passwords_size == 0
progress_bar.log('All Found') # remove ?
progress_bar.stop
break
end
begin
progress_bar.total = progress_bar.progress + ((wordlist_size - checked_passwords) / current_passwords_size.round(1)).ceil
rescue ProgressBar::InvalidProgressError
end
end
end
# Maybe a progress_bar.stop ?
end
# rubocop:enable all
def passwords_size(max_passwords, users_size)
return 1 if max_passwords < users_size
return 0 if users_size.zero?
max_passwords / users_size
end
# @param [ Typhoeus::Response ] res
def check_and_output_errors(res)
progress_bar.log("Incorrect response: #{res.code} / #{res.return_message}") unless res.code == 200
if /parse error. not well formed/i.match?(res.body)
progress_bar.log('Parsing error, might be caused by a too high --max-passwords value (such as >= 2k)')
end
return unless /requested method [^ ]+ does not exist/i.match?(res.body)
progress_bar.log('The requested method is not supported')
end
end
end
end
end
================================================
FILE: app/finders/passwords.rb
================================================
# frozen_string_literal: true
require_relative 'passwords/wp_login'
require_relative 'passwords/xml_rpc'
require_relative 'passwords/xml_rpc_multicall'
================================================
FILE: app/finders/plugin_version/readme.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module PluginVersion
# Plugin Version Finder from the readme.txt file
class Readme < CMSScanner::Finders::Finder
# @return [ Version ]
def aggressive(_opts = {})
found_by_msg = 'Readme - %s (Aggressive Detection)'
# The target(plugin)#readme_url can't be used directly here
# as if the --detection-mode is passive, it will always return nil
target.potential_readme_filenames.each do |file|
res = target.head_and_get(file)
next unless res.code == 200 && !(numbers = version_numbers(res.body)).empty?
return numbers.reduce([]) do |a, e|
a << Model::Version.new(
e[0],
found_by: format(found_by_msg, e[1]),
confidence: e[2],
interesting_entries: [res.effective_url]
)
end
end
nil
end
# @return [ Array<String, String, Integer> ] number, found_by, confidence
def version_numbers(body)
numbers = []
if (number = from_stable_tag(body))
numbers << [number, 'Stable Tag', 80]
end
if (number = from_changelog_section(body))
numbers << [number, 'ChangeLog Section', 50]
end
numbers
end
# @param [ String ] body
#
# @return [ String, nil ] The version number detected from the stable tag
def from_stable_tag(body)
return unless body =~ /\b(?:stable tag|version):\s*(?!trunk)([0-9a-z.-]+)/i
number = Regexp.last_match[1]
number if /[0-9]+/.match?(number)
end
# @param [ String ] body
#
# @return [ String, nil ] The best version number detected from the changelog section
def from_changelog_section(body)
extracted_versions = body.scan(/^=+\s+(?:v(?:ersion)?\s*)?([0-9.-]+)[^=]*=+$/i)
return if extracted_versions.nil? || extracted_versions.empty?
extracted_versions.flatten!
# must contain at least one number
extracted_versions = extracted_versions.grep(/[0-9]+/)
sorted = extracted_versions.sort do |x, y|
Gem::Version.new(x) <=> Gem::Version.new(y)
rescue StandardError
0
end
sorted.last
end
end
end
end
end
================================================
FILE: app/finders/plugin_version.rb
================================================
# frozen_string_literal: true
require_relative 'plugin_version/readme'
module WPScan
module Finders
module PluginVersion
# Plugin Version Finder
class Base
include CMSScanner::Finders::UniqueFinder
# @param [ Model::Plugin ] plugin
def initialize(plugin)
finders << PluginVersion::Readme.new(plugin)
create_and_load_dynamic_versions_finders(plugin)
end
# Create the dynamic version finders related to the plugin and register them
#
# @param [ Model::Plugin ] plugin
def create_and_load_dynamic_versions_finders(plugin)
DB::DynamicFinders::Plugin.create_versions_finders(plugin.slug).each do |finder|
finders << finder.new(plugin)
end
end
end
end
end
end
================================================
FILE: app/finders/plugins/body_pattern.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Plugins
# Plugins finder from Dynamic Finder 'BodyPattern'
class BodyPattern < Finders::DynamicFinder::WpItems::Finder
DEFAULT_CONFIDENCE = 30
# @param [ Hash ] opts The options from the #passive, #aggressive methods
# @param [ Typhoeus::Response ] response
# @param [ String ] slug
# @param [ String ] klass
# @param [ Hash ] config The related dynamic finder config hash
#
# @return [ Plugin ] The detected plugin in the response, related to the config
def process_response(opts, response, slug, klass, config)
return unless response.body&.match?(config['pattern'])
Model::Plugin.new(
slug,
target,
opts.merge(found_by: found_by(klass), confidence: config['confidence'] || DEFAULT_CONFIDENCE)
)
end
end
end
end
end
================================================
FILE: app/finders/plugins/comment.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Plugins
# Plugins finder from the Dynamic Finder 'Comment'
class Comment < Finders::DynamicFinder::WpItems::Finder
DEFAULT_CONFIDENCE = 30
# @param [ Hash ] opts The options from the #passive, #aggressive methods
# @param [ Typhoeus::Response ] response
# @param [ String ] slug
# @param [ String ] klass
# @param [ Hash ] config The related dynamic finder config hash
#
# @return [ Plugin ] The detected plugin in the response, related to the config
def process_response(opts, response, slug, klass, config)
response.html.xpath(config['xpath'] || '//comment()').each do |node|
comment = node.text.to_s.strip
next unless comment&.match?(config['pattern'])
return Model::Plugin.new(
slug,
target,
opts.merge(found_by: found_by(klass), confidence: config['confidence'] || DEFAULT_CONFIDENCE)
)
end
end
end
end
end
end
================================================
FILE: app/finders/plugins/config_parser.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Plugins
# Plugins finder from Dynamic Finder 'ConfigParser'
class ConfigParser < Finders::DynamicFinder::WpItems::Finder
DEFAULT_CONFIDENCE = 40
# @param [ Hash ] opts The options from the #passive, #aggressive methods
# @param [ Typhoeus::Response ] response
# @param [ String ] slug
# @param [ String ] klass
# @param [ Hash ] config The related dynamic finder config hash
#
# @return [ Plugin ] The detected plugin in the response, related to the config
def _process_response(_opts, _response, slug, klass, config)
#
# TODO. Currently not implemented, and not even loaded by the Finders, as this
# finder only has an aggressive method, which has been disabled (globally)
# when checking for plugins
#
Model::Plugin.new(
slug,
target,
opts.merge(found_by: found_by(klass), confidence: config['confidence'] || DEFAULT_CONFIDENCE)
)
end
end
end
end
end
================================================
FILE: app/finders/plugins/header_pattern.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Plugins
# Plugins finder from Dynamic Finder 'HeaderPattern'
class HeaderPattern < Finders::DynamicFinder::WpItems::Finder
DEFAULT_CONFIDENCE = 30
# @param [ Hash ] opts
#
# @return [ Array<Plugin> ]
def passive(opts = {})
found = []
headers = target.homepage_res.headers
return found if headers.empty?
DB::DynamicFinders::Plugin.passive_header_pattern_finder_configs.each do |slug, configs|
configs.each do |klass, config|
next unless headers[config['header']] && headers[config['header']].to_s =~ config['pattern']
found << Model::Plugin.new(
slug,
target,
opts.merge(found_by: found_by(klass), confidence: config['confidence'] || DEFAULT_CONFIDENCE)
)
end
end
found
end
# @param [ Hash ] opts
#
# @return [ nil ]
def aggressive(_opts = {})
# None
end
end
end
end
end
================================================
FILE: app/finders/plugins/javascript_var.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Plugins
# Plugins finder from the Dynamic Finder 'JavascriptVar'
class JavascriptVar < Finders::DynamicFinder::WpItems::Finder
DEFAULT_CONFIDENCE = 60
# @param [ Hash ] opts The options from the #passive, #aggressive methods
# @param [ Typhoeus::Response ] response
# @param [ String ] slug
# @param [ String ] klass
# @param [ Hash ] config The related dynamic finder config hash
#
# @return [ Plugin ] The detected plugin in the response, related to the config
def process_response(opts, response, slug, klass, config)
response.html.xpath(config['xpath'] || '//script[not(@src)]').each do |node|
next if config['pattern'] && !node.text.match(config['pattern'])
return Model::Plugin.new(
slug,
target,
opts.merge(found_by: found_by(klass), confidence: config['confidence'] || DEFAULT_CONFIDENCE)
)
end
end
end
end
end
end
================================================
FILE: app/finders/plugins/known_locations.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Plugins
# Known Locations Plugins Finder
class KnownLocations < CMSScanner::Finders::Finder
include CMSScanner::Finders::Finder::Enumerator
# @return [ Array<Integer> ]
def valid_response_codes
@valid_response_codes ||= [200, 401, 403, 500].freeze
end
# @param [ Hash ] opts
# @option opts [ String ] :list
#
# @return [ Array<Plugin> ]
def aggressive(opts = {})
found = []
enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |res, slug|
finding_opts = opts.merge(found_by: found_by,
confidence: 80,
interesting_entries: ["#{res.effective_url}, status: #{res.code}"])
found << Model::Plugin.new(slug, target, finding_opts)
raise Error::PluginsThresholdReached if opts[:threshold].positive? && found.size >= opts[:threshold]
end
found
end
# @param [ Hash ] opts
# @option opts [ String ] :list
#
# @return [ Hash ]
def target_urls(opts = {})
slugs = opts[:list] || DB::Plugins.vulnerable_slugs
urls = {}
slugs.each do |slug|
urls[target.plugin_url(slug)] = slug
end
urls
end
def create_progress_bar(opts = {})
super(opts.merge(title: ' Checking Known Locations -'))
end
end
end
end
end
================================================
FILE: app/finders/plugins/query_parameter.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Plugins
# Plugins finder from Dynamic Finder 'QueryParameter'
class QueryParameter < Finders::DynamicFinder::WpItems::Finder
DEFAULT_CONFIDENCE = 10
def passive(_opts = {})
# Handled by UrlsInHomePage, so no need to check this twice
end
# @param [ Hash ] opts The options from the #passive, #aggressive methods
# @param [ Typhoeus::Response ] response
# @param [ String ] slug
# @param [ String ] klass
# @param [ Hash ] config The related dynamic finder config hash
#
# @return [ Plugin ] The detected plugin in the response, related to the config
def process_response(opts, response, slug, klass, config)
# TODO: when a real case will be found
end
end
end
end
end
================================================
FILE: app/finders/plugins/urls_in_404_page.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Plugins
# URLs In 404 Page Finder
# Typically, the items detected from URLs like /wp-content/plugins/<slug>/
class UrlsIn404Page < UrlsInHomepage
# @return [ Typhoeus::Response ]
def page_res
@page_res ||= target.error_404_res
end
end
end
end
end
================================================
FILE: app/finders/plugins/urls_in_homepage.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Plugins
# URLs In Homepage Finder
# Typically, the items detected from URLs like /wp-content/plugins/<slug>/
class UrlsInHomepage < CMSScanner::Finders::Finder
include WpItems::UrlsInPage
# @param [ Hash ] opts
#
# @return [ Array<Plugin> ]
def passive(opts = {})
found = []
(items_from_links('plugins') + items_from_codes('plugins')).uniq.sort.each do |slug|
found << Model::Plugin.new(slug, target, opts.merge(found_by: found_by, confidence: 80))
end
found
end
# @return [ Typhoeus::Response ]
def page_res
@page_res ||= target.homepage_res
end
end
end
end
end
================================================
FILE: app/finders/plugins/xpath.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Plugins
# Plugins finder from the Dynamic Finder 'Xpath'
class Xpath < Finders::DynamicFinder::WpItems::Finder
DEFAULT_CONFIDENCE = 40
# @param [ Hash ] opts The options from the #passive, #aggressive methods
# @param [ Typhoeus::Response ] response
# @param [ String ] slug
# @param [ String ] klass
# @param [ Hash ] config The related dynamic finder config hash
#
# @return [ Plugin ] The detected plugin in the response, related to the config
def process_response(opts, response, slug, klass, config)
response.html.xpath(config['xpath']).each do |node|
next if config['pattern'] && !node.text.match(config['pattern'])
return Model::Plugin.new(
slug,
target,
opts.merge(found_by: found_by(klass), confidence: config['confidence'] || DEFAULT_CONFIDENCE)
)
end
end
end
end
end
end
================================================
FILE: app/finders/plugins.rb
================================================
# frozen_string_literal: true
require_relative 'plugins/urls_in_homepage'
require_relative 'plugins/urls_in_404_page'
require_relative 'plugins/known_locations'
# From the DynamicFinders
require_relative 'plugins/comment'
require_relative 'plugins/xpath'
require_relative 'plugins/header_pattern'
require_relative 'plugins/body_pattern'
require_relative 'plugins/javascript_var'
require_relative 'plugins/query_parameter'
require_relative 'plugins/config_parser' # Not loaded below as not implemented
module WPScan
module Finders
module Plugins
# Plugins Finder
class Base
include CMSScanner::Finders::SameTypeFinder
# @param [ WPScan::Target ] target
def initialize(target)
finders <<
Plugins::UrlsInHomepage.new(target) <<
Plugins::UrlsIn404Page.new(target) <<
Plugins::HeaderPattern.new(target) <<
Plugins::Comment.new(target) <<
Plugins::Xpath.new(target) <<
Plugins::BodyPattern.new(target) <<
Plugins::JavascriptVar.new(target) <<
Plugins::KnownLocations.new(target)
end
end
end
end
end
================================================
FILE: app/finders/theme_version/style.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module ThemeVersion
# Theme Version Finder from the style.css file
class Style < CMSScanner::Finders::Finder
# @param [ Hash ] opts
#
# @return [ Version ]
def passive(_opts = {})
return unless cached_style?
style_version
end
# @param [ Hash ] opts
#
# @return [ Version ]
def aggressive(_opts = {})
return if cached_style?
style_version
end
# @return [ Boolean ]
def cached_style?
Typhoeus::Config.cache.get(browser.forge_request(target.style_url)) ? true : false
end
# @return [ Version ]
def style_version
return unless Browser.get(target.style_url).body =~ /Version:[\t ]*(?!trunk)([0-9a-z.-]+)/i
Model::Version.new(
Regexp.last_match[1],
found_by: found_by,
confidence: 80,
interesting_entries: ["#{target.style_url}, Match: '#{Regexp.last_match}'"]
)
end
end
end
end
end
================================================
FILE: app/finders/theme_version/woo_framework_meta_generator.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module ThemeVersion
# Theme Version Finder from the WooFramework generators
class WooFrameworkMetaGenerator < CMSScanner::Finders::Finder
# @param [ Hash ] opts
#
# @return [ Version ]
def passive(_opts = {})
return unless target.blog.homepage_res.body =~ Finders::MainTheme::WooFrameworkMetaGenerator::PATTERN
return unless Regexp.last_match[1] == target.slug
Model::Version.new(Regexp.last_match[2], found_by: found_by, confidence: 80)
end
end
end
end
end
================================================
FILE: app/finders/theme_version.rb
================================================
# frozen_string_literal: true
require_relative 'theme_version/style'
require_relative 'theme_version/woo_framework_meta_generator'
module WPScan
module Finders
module ThemeVersion
# Theme Version Finder
class Base
include CMSScanner::Finders::UniqueFinder
# @param [ Model::Theme ] theme
def initialize(theme)
finders <<
ThemeVersion::Style.new(theme) <<
ThemeVersion::WooFrameworkMetaGenerator.new(theme)
create_and_load_dynamic_versions_finders(theme)
end
# Create the dynamic version finders related to the theme and register them
#
# @param [ Model::Theme ] theme
def create_and_load_dynamic_versions_finders(theme)
DB::DynamicFinders::Theme.create_versions_finders(theme.slug).each do |finder|
finders << finder.new(theme)
end
end
end
end
end
end
================================================
FILE: app/finders/themes/known_locations.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Themes
# Known Locations Themes Finder
class KnownLocations < CMSScanner::Finders::Finder
include CMSScanner::Finders::Finder::Enumerator
# @return [ Array<Integer> ]
def valid_response_codes
@valid_response_codes ||= [200, 401, 403, 500].freeze
end
# @param [ Hash ] opts
# @option opts [ String ] :list
#
# @return [ Array<Theme> ]
def aggressive(opts = {})
found = []
enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |res, slug|
finding_opts = opts.merge(found_by: found_by,
confidence: 80,
interesting_entries: ["#{res.effective_url}, status: #{res.code}"])
found << Model::Theme.new(slug, target, finding_opts)
raise Error::ThemesThresholdReached if opts[:threshold].positive? && found.size >= opts[:threshold]
end
found
end
# @param [ Hash ] opts
# @option opts [ String ] :list
#
# @return [ Hash ]
def target_urls(opts = {})
slugs = opts[:list] || DB::Themes.vulnerable_slugs
urls = {}
slugs.each do |slug|
urls[target.theme_url(slug)] = slug
end
urls
end
def create_progress_bar(opts = {})
super(opts.merge(title: ' Checking Known Locations -'))
end
end
end
end
end
================================================
FILE: app/finders/themes/urls_in_404_page.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Themes
# URLs In 04 Page Finder
class UrlsIn404Page < UrlsInHomepage
# @return [ Typhoeus::Response ]
def page_res
@page_res ||= target.error_404_res
end
end
end
end
end
================================================
FILE: app/finders/themes/urls_in_homepage.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Themes
# URLs In Homepage Finder
class UrlsInHomepage < CMSScanner::Finders::Finder
include WpItems::UrlsInPage
# @param [ Hash ] opts
#
# @return [ Array<Theme> ]
def passive(opts = {})
found = []
(items_from_links('themes') + items_from_codes('themes')).uniq.sort.each do |slug|
found << Model::Theme.new(slug, target, opts.merge(found_by: found_by, confidence: 80))
end
found
end
# @return [ Typhoeus::Response ]
def page_res
@page_res ||= target.homepage_res
end
end
end
end
end
================================================
FILE: app/finders/themes.rb
================================================
# frozen_string_literal: true
require_relative 'themes/urls_in_homepage'
require_relative 'themes/urls_in_404_page'
require_relative 'themes/known_locations'
module WPScan
module Finders
module Themes
# Themes Finder
class Base
include CMSScanner::Finders::SameTypeFinder
# @param [ WPScan::Target ] target
def initialize(target)
finders <<
Themes::UrlsInHomepage.new(target) <<
Themes::UrlsIn404Page.new(target) <<
Themes::KnownLocations.new(target)
end
end
end
end
end
================================================
FILE: app/finders/timthumb_version/bad_request.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module TimthumbVersion
# Timthumb Version Finder from the body of a bad request
# See https://code.google.com/p/timthumb/source/browse/trunk/timthumb.php#435
class BadRequest < CMSScanner::Finders::Finder
# @return [ Version ]
def aggressive(_opts = {})
return unless Browser.get(target.url).body =~ /(TimThumb version\s*: ([^<]+))/
Model::Version.new(
Regexp.last_match[2],
found_by: 'Bad Request (Aggressive Detection)',
confidence: 90,
interesting_entries: ["#{target.url}, Match: '#{Regexp.last_match[1]}'"]
)
end
end
end
end
end
================================================
FILE: app/finders/timthumb_version.rb
================================================
# frozen_string_literal: true
require_relative 'timthumb_version/bad_request'
module WPScan
module Finders
module TimthumbVersion
# Timthumb Version Finder
class Base
include CMSScanner::Finders::UniqueFinder
# @param [ Model::Timthumb ] target
def initialize(target)
finders << TimthumbVersion::BadRequest.new(target)
end
end
end
end
end
================================================
FILE: app/finders/timthumbs/known_locations.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Timthumbs
# Known Locations Timthumbs Finder
# Note: A vulnerable version, 2.8.13 can be found here:
# https://github.com/GabrielGil/TimThumb/blob/980c3d6a823477761570475e8b83d3e9fcd2d7ae/timthumb.php
class KnownLocations < CMSScanner::Finders::Finder
include CMSScanner::Finders::Finder::Enumerator
# @return [ Array<Integer> ]
def valid_response_codes
@valid_response_codes ||= [400]
end
# @param [ Hash ] opts
# @option opts [ String ] :list Mandatory
#
# @return [ Array<Timthumb> ]
def aggressive(opts = {})
found = []
enumerate(target_urls(opts), opts.merge(check_full_response: 400)) do |res|
next unless /no image specified/i.match?(res.body)
found << Model::Timthumb.new(res.request.url, opts.merge(found_by: found_by, confidence: 100))
end
found
end
# @param [ Hash ] opts
# @option opts [ String ] :list Mandatory
#
# @return [ Hash ]
def target_urls(opts = {})
urls = {}
File.open(opts[:list]).each_with_index do |path, index|
urls[target.url(path.chomp)] = index
end
# Add potential timthumbs located in the main theme
if target.main_theme
main_theme_timthumbs_paths.each do |path|
urls[target.main_theme.url(path)] = 1 # index not important there
end
end
urls
end
def main_theme_timthumbs_paths
%w[timthumb.php lib/timthumb.php inc/timthumb.php includes/timthumb.php
scripts/timthumb.php tools/timthumb.php functions/timthumb.php]
end
def create_progress_bar(opts = {})
super(opts.merge(title: ' Checking Known Locations -'))
end
end
end
end
end
================================================
FILE: app/finders/timthumbs.rb
================================================
# frozen_string_literal: true
require_relative 'timthumbs/known_locations'
module WPScan
module Finders
module Timthumbs
# Timthumbs Finder
class Base
include CMSScanner::Finders::SameTypeFinder
# @param [ WPScan::Target ] target
def initialize(target)
finders << Timthumbs::KnownLocations.new(target)
end
end
end
end
end
================================================
FILE: app/finders/users/author_id_brute_forcing.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Users
# Author Id Brute Forcing
class AuthorIdBruteForcing < CMSScanner::Finders::Finder
include CMSScanner::Finders::Finder::Enumerator
# @return [ Array<Integer> ]
def valid_response_codes
@valid_response_codes ||= [200, 301, 302]
end
# @param [ Hash ] opts
# @option opts [ Range ] :range Mandatory
#
# @return [ Array<User> ]
def aggressive(opts = {})
found = []
found_by_msg = 'Author Id Brute Forcing - %s (Aggressive Detection)'
enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |res, id|
username, found_by, confidence = potential_username(res)
next unless username
found << Model::User.new(
username,
id: id,
found_by: format(found_by_msg, found_by),
confidence: confidence
)
end
found
end
# @param [ Hash ] opts
# @option opts [ Range ] :range
#
# @return [ Hash ]
def target_urls(opts = {})
urls = {}
opts[:range].each do |id|
urls[target.uri.join("?author=#{id}").to_s] = id
end
urls
end
def create_progress_bar(opts = {})
super(opts.merge(title: ' Brute Forcing Author IDs -'))
end
def full_request_params
{ followlocation: true }
end
# @param [ Typhoeus::Response ] res
#
# @return [ Array<String, String, Integer>, nil ] username, found_by, confidence
def potential_username(res)
username = username_from_author_url(res.effective_url) || username_from_response(res)
return username, 'Author Pattern', 100 if username
username = display_name_from_body(res.body)
return username, 'Display Name', 50 if username
end
# @param [ String, Addressable::URI ] uri
#
# @return [ String, nil ]
def username_from_author_url(uri)
uri = Addressable::URI.parse(uri) unless uri.is_a?(Addressable::URI)
uri.path[%r{/author/([^/\b]+)/?}i, 1]
end
# @param [ Typhoeus::Response ] res
#
# @return [ String, nil ] The username found
def username_from_response(res)
# Permalink enabled
target.in_scope_uris(res, '//@href[contains(., "author/")]') do |uri|
username = username_from_author_url(uri)
return username if username
end
# No permalink, TODO Maybe use xpath to extract the classes ?
res.body[/<body class="archive author author-([^\s]+)[ "]/i, 1]
end
# @param [ String ] body
#
# @return [ String, nil ]
def display_name_from_body(body)
page = Nokogiri::HTML.parse(body)
# WP >= 3.0
page.css('h1.page-title span').each do |node|
text = node.text.to_s.strip
return text unless text.empty?
end
# WP < 3.0
page.xpath('//link[@rel="alternate" and @type="application/rss+xml"]').each do |node|
title = node['title']
next unless title =~ /Posts by (.*) Feed\z/i
return Regexp.last_match[1] unless Regexp.last_match[1].empty?
end
nil
end
end
end
end
end
================================================
FILE: app/finders/users/author_posts.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Users
# Author Posts
class AuthorPosts < CMSScanner::Finders::Finder
# @param [ Hash ] opts
#
# @return [ Array<User> ]
def passive(opts = {})
found_by_msg = 'Author Posts - %s (Passive Detection)'
usernames(opts).reduce([]) do |a, e|
a << Model::User.new(
e[0],
found_by: format(found_by_msg, e[1]),
confidence: e[2]
)
end
end
# @param [ Hash ] opts
#
# @return [ Array<Array>> ]
def usernames(_opts = {})
found = potential_usernames(target.homepage_res)
return found unless found.empty?
target.homepage_res.html.css('header.entry-header a').each do |post_url_node|
url = post_url_node['href']
next if url.nil? || url.empty?
found += potential_usernames(Browser.get(url))
end
found.compact.uniq
end
# @param [ Typhoeus::Response ] res
#
# @return [ Array<Array> ]
def potential_usernames(res)
usernames = []
target.in_scope_uris(res, '//a/@href[contains(., "author")]') do |uri, node|
if uri.path =~ %r{/author/([^/\b]+)/?\z}i
usernames << [Regexp.last_match[1], 'Author Pattern', 100]
elsif /author=[0-9]+/.match?(uri.query)
usernames << [node.text.to_s.strip, 'Display Name', 30]
end
end
usernames.uniq
end
end
end
end
end
================================================
FILE: app/finders/users/author_sitemap.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Users
# Since WP 5.5, /wp-sitemap-users-1.xml is generated and contains
# the usernames of accounts who made a post
class AuthorSitemap < CMSScanner::Finders::Finder
# @param [ Hash ] opts
#
# @return [ Array<User> ]
def aggressive(_opts = {})
found = []
Browser.get(sitemap_url).html.xpath('//url/loc').each do |user_tag|
username = user_tag.text.to_s[%r{/author/([^/]+)/}, 1]
next unless username && !username.strip.empty?
found << Model::User.new(username,
found_by: found_by,
confidence: 100,
interesting_entries: [sitemap_url])
end
found
end
# @return [ String ] The URL of the sitemap
def sitemap_url
@sitemap_url ||= target.url('wp-sitemap-users-1.xml')
end
end
end
end
end
================================================
FILE: app/finders/users/login_error_messages.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Users
# Login Error Messages
#
# Existing username:
# WP < 3.1 - Incorrect password.
# WP >= 3.1 - The password you entered for the username admin is incorrect.
# Non existent username: Invalid username.
#
class LoginErrorMessages < CMSScanner::Finders::Finder
# @param [ Hash ] opts
# @option opts [ String ] :list
#
# @return [ Array<User> ]
def aggressive(opts = {})
found = []
usernames(opts).each do |username|
res = target.do_login(username, SecureRandom.hex[0, 8])
error = res.html.css('div#login_error').text.strip
return found if error.empty? # Protection plugin / error disabled
next unless /The password you entered for the username|Incorrect Password/i.match?(error)
found << Model::User.new(username, found_by: found_by, confidence: 100)
end
found
end
# @return [ Array<String> ] List of usernames to check
def usernames(opts = {})
# usernames from the potential Users found
unames = opts[:found].map(&:username)
Array(opts[:list]).each { |uname| unames << uname.chomp }
unames.uniq
end
end
end
end
end
================================================
FILE: app/finders/users/oembed_api.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Users
# Since WP 4.4, the oembed API can disclose a user
# https://github.com/wpscanteam/wpscan/issues/1049
class OembedApi < CMSScanner::Finders::Finder
# @param [ Hash ] opts
#
# @return [ Array<User> ]
def passive(_opts = {})
# TODO: get the api_url from the Homepage and query it if present,
# then discard the aggressive check if same/similar URL
end
# @param [ Hash ] opts
#
# @return [ Array<User> ]
def aggressive(_opts = {})
oembed_data = JSON.parse(Browser.get(api_url).body)
details = user_details_from_oembed_data(oembed_data)
return [] unless details
[Model::User.new(details[0],
found_by: format(found_by_msg, details[1]),
confidence: details[2],
interesting_entries: [api_url])]
rescue JSON::ParserError
[]
end
def user_details_from_oembed_data(oembed_data)
return unless oembed_data
oembed_data = oembed_data.first if oembed_data.is_a?(Array)
if oembed_data['author_url'] =~ %r{/author/([^/]+)/?\z}
details = [Regexp.last_match[1], 'Author URL', 90]
elsif oembed_data['author_name'] && !oembed_data['author_name'].empty?
details = [oembed_data['author_name'], 'Author Name', 70]
end
details
end
def found_by_msg
'Oembed API - %s (Aggressive Detection)'
end
# @return [ String ] The URL of the API listing the Users
def api_url
@api_url ||= target.url("wp-json/oembed/1.0/embed?url=#{target.url}&format=json")
end
end
end
end
end
================================================
FILE: app/finders/users/rss_generator.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Users
# Users disclosed from the dc:creator field in the RSS
# The names disclosed are display names, however depending on the configuration of the blog,
# they can be the same than usernames
class RSSGenerator < Finders::WpVersion::RSSGenerator
def process_urls(urls, _opts = {})
found = []
urls.each do |url|
res = Browser.get_and_follow_location(url)
next unless res.code == 200 && res.body =~ /<dc:creator>/i
potential_usernames = []
begin
res.xml.xpath('//item/dc:creator').each do |node|
username = node.text.to_s
# Ignoring potential username longer than 60 characters and containing accents
# as they are considered invalid. See https://github.com/wpscanteam/wpscan/issues/1215
next if username.strip.empty? || username.length > 60 || username =~ /[^\x00-\x7F]/
potential_usernames << username
end
rescue Nokogiri::XML::XPath::SyntaxError
next
end
potential_usernames.uniq.each do |username|
found << Model::User.new(username, found_by: found_by, confidence: 50)
end
break
end
found
end
end
end
end
end
================================================
FILE: app/finders/users/wp_json_api.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Users
# WP JSON API
#
# Since 4.7 - Need more investigation as it seems WP 4.7.1 reduces the exposure, see https://github.com/wpscanteam/wpscan/issues/1038)
# For the pagination, see https://github.com/wpscanteam/wpscan/issues/1285
#
class WpJsonApi < CMSScanner::Finders::Finder
MAX_PER_PAGE = 100 # See https://developer.wordpress.org/rest-api/using-the-rest-api/pagination/
# @param [ Hash ] opts
#
# @return [ Array<User> ]
def aggressive(_opts = {})
found = []
current_page = 0
loop do
current_page += 1
res = Browser.get(api_url, params: { per_page: MAX_PER_PAGE, page: current_page })
total_pages ||= res.headers['X-WP-TotalPages'].to_i
users_in_page = users_from_response(res)
found += users_in_page
break if current_page >= total_pages || users_in_page.empty?
end
found
rescue JSON::ParserError, TypeError
found
end
# @param [ Typhoeus::Response ] response
#
# @return [ Array<User> ] The users from the response
def users_from_response(response)
found = []
JSON.parse(response.body)&.each do |user|
found << Model::User.new(user['slug'],
id: user['id'],
found_by: found_by,
confidence: 100,
interesting_entries: [response.effective_url])
end
found
end
# @return [ String ] The URL of the API listing the Users
def api_url
return @api_url if @api_url
target.in_scope_uris(target.homepage_res, "//link[@rel='https://api.w.org/']/@href").each do |uri|
return @api_url = uri.join('wp/v2/users/').to_s if uri.path.include?('wp-json')
end
@api_url = target.url('wp-json/wp/v2/users/')
end
end
end
end
end
================================================
FILE: app/finders/users/yoast_seo_author_sitemap.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module Users
# The YOAST SEO plugin has an author-sitemap.xml which can leak usernames
# See https://github.com/wpscanteam/wpscan/issues/1228
class YoastSeoAuthorSitemap < AuthorSitemap
# @return [ String ] The URL of the author-sitemap
def sitemap_url
@sitemap_url ||= target.url('author-sitemap.xml')
end
end
end
end
end
================================================
FILE: app/finders/users.rb
================================================
# frozen_string_literal: true
require_relative 'users/author_posts'
require_relative 'users/wp_json_api'
require_relative 'users/oembed_api'
require_relative 'users/rss_generator'
require_relative 'users/author_id_brute_forcing'
require_relative 'users/login_error_messages'
require_relative 'users/author_sitemap'
require_relative 'users/yoast_seo_author_sitemap'
module WPScan
module Finders
# Specific Finders container to filter the usernames found
# and remove the ones matching ParsedCli.exclude_username if supplied
class UsersFinders < SameTypeFinders
def filter_findings
findings.delete_if { |user| ParsedCli.exclude_usernames.match?(user.username) } if ParsedCli.exclude_usernames
findings
end
end
module Users
# Users Finder
class Base
include CMSScanner::Finders::SameTypeFinder
# @param [ WPScan::Target ] target
def initialize(target)
finders <<
Users::AuthorPosts.new(target) <<
Users::WpJsonApi.new(target) <<
Users::OembedApi.new(target) <<
Users::RSSGenerator.new(target) <<
Users::AuthorSitemap.new(target) <<
Users::YoastSeoAuthorSitemap.new(target) <<
Users::AuthorIdBruteForcing.new(target) <<
Users::LoginErrorMessages.new(target)
end
def finders
@finders ||= Finders::UsersFinders.new
end
end
end
end
end
================================================
FILE: app/finders/wp_items/urls_in_page.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module WpItems
# URLs In Homepage Module to use in plugins & themes finders
module UrlsInPage
# @param [ String ] type plugins / themes
# @param [ Boolean ] uniq Wether or not to apply the #uniq on the results
#
# @return [ Array<String> ] The plugins/themes detected in the href, src attributes of the page
def items_from_links(type, uniq: true)
found = []
xpath = format(
'(//@href|//@src|//@data-src)[contains(., "%s")]',
type == 'plugins' ? target.plugins_dir : target.content_dir
)
target.in_scope_uris(page_res, xpath) do |uri|
next unless uri.to_s =~ item_attribute_pattern(type)
slug = Regexp.last_match[1]&.strip
found << slug unless slug&.empty?
end
uniq ? found.uniq.sort : found.sort
end
# @param [ String ] type plugins / themes
# @param [ Boolean ] uniq Wether or not to apply the #uniq on the results
#
# @return [Array<String> ] The plugins/themes detected in the javascript/style of the homepage
def items_from_codes(type, uniq: true)
found = []
page_res.html.xpath('//script[not(@src)]|//style[not(@src)]').each do |tag|
code = tag.text.to_s
next if code.empty?
code.scan(item_code_pattern(type)).flatten.uniq.each { |slug| found << slug }
end
uniq ? found.uniq.sort : found.sort
end
# @param [ String ] type
#
# @return [ Regexp ]
def item_attribute_pattern(type)
@item_attribute_pattern ||= %r{#{item_url_pattern(type)}([^/]+)/}i
end
# @param [ String ] type
#
# @return [ Regexp ]
def item_code_pattern(type)
@item_code_pattern ||= %r{["'( ]#{item_url_pattern(type)}([^\\/)"']+)}i
end
# @param [ String ] type
#
# @return [ Regexp ]
def item_url_pattern(type)
item_dir = type == 'plugins' ? target.plugins_dir : target.content_dir
item_url = type == 'plugins' ? target.plugins_url : target.content_url
url = /#{item_url.gsub(/\A(?:https?)/i, 'https?').gsub('/', '\\\\\?\/')}/i
item_dir = %r{(?:#{url}|\\?/#{item_dir.gsub('/', '\\\\\?\/')}\\?/)}i
type == 'plugins' ? item_dir : %r{#{item_dir}#{type}\\?/}i
end
end
end
end
end
================================================
FILE: app/finders/wp_items.rb
================================================
# frozen_string_literal: true
require_relative 'wp_items/urls_in_page'
================================================
FILE: app/finders/wp_version/atom_generator.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module WpVersion
# Atom Generator Version Finder
class AtomGenerator < CMSScanner::Finders::Finder
include Finder::WpVersion::SmartURLChecker
def process_urls(urls, _opts = {})
found = Findings.new
urls.each do |url|
res = Browser.get_and_follow_location(url)
res.html.css('generator').each do |node|
next unless node.text.to_s.strip.casecmp('wordpress').zero?
found << create_version(
node['version'],
found_by: found_by,
entries: ["#{res.effective_url}, #{node.to_s.strip}"]
)
end
end
found
end
def passive_urls_xpath
'//link[@rel="alternate" and @type="application/atom+xml"]/@href'
end
def aggressive_urls(_opts = {})
%w[feed/atom/ ?feed=atom].reduce([]) do |a, uri|
a << target.url(uri)
end
end
end
end
end
end
================================================
FILE: app/finders/wp_version/rdf_generator.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module WpVersion
# RDF Generator Version Finder
class RDFGenerator < CMSScanner::Finders::Finder
include Finder::WpVersion::SmartURLChecker
def process_urls(urls, _opts = {})
found = Findings.new
urls.each do |url|
res = Browser.get_and_follow_location(url)
res.html.xpath('//generatoragent').each do |node|
next unless node['rdf:resource'] =~ %r{\Ahttps?://wordpress\.(?:[a-z.]+)/\?v=(.*)\z}i
found << create_version(
Regexp.last_match[1],
found_by: found_by,
entries: ["#{res.effective_url}, #{node.to_s.strip}"]
)
end
end
found
end
def passive_urls_xpath
'//a[contains(@href, "/rdf")]/@href'
end
def aggressive_urls(_opts = {})
[target.url('feed/rdf/')]
end
end
end
end
end
================================================
FILE: app/finders/wp_version/readme.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module WpVersion
# Readme Version Finder
class Readme < CMSScanner::Finders::Finder
# @return [ WpVersion ]
def aggressive(_opts = {})
readme_url = target.url('readme.html') # Maybe move this into the Target ?
node = Browser.get(readme_url).html.css('h1#logo').last
return unless node&.text.to_s.strip =~ /\AVersion (.*)\z/i
number = Regexp.last_match(1)
return unless Model::WpVersion.valid?(number)
Model::WpVersion.new(
number,
found_by: 'Readme (Aggressive Detection)',
# Since WP 4.7, the Readme only contains the major version (ie 4.7, 4.8 etc)
confidence: number >= '4.7' ? 10 : 90,
interesting_entries: ["#{readme_url}, Match: '#{node.text.to_s.strip}'"]
)
end
end
end
end
end
================================================
FILE: app/finders/wp_version/rss_generator.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module WpVersion
# RSS Generator Version Finder
class RSSGenerator < CMSScanner::Finders::Finder
include Finder::WpVersion::SmartURLChecker
def process_urls(urls, _opts = {})
found = Findings.new
urls.each do |url|
res = Browser.get_and_follow_location(url)
res.html.xpath('//comment()[contains(., "wordpress")] | //generator').each do |node|
node_text = node.text.to_s.strip
next unless node_text =~ %r{\Ahttps?://wordpress\.(?:[a-z]+)/\?v=(.*)\z}i ||
node_text =~ %r{\Agenerator="wordpress/([^"]+)"\z}i
found << create_version(
Regexp.last_match[1],
found_by: found_by,
entries: ["#{res.effective_url}, #{node.to_s.strip}"]
)
end
end
found
end
def passive_urls_xpath
'//link[@rel="alternate" and @type="application/rss+xml"]/@href'
end
def aggressive_urls(_opts = {})
%w[feed/ comments/feed/ feed/rss/ feed/rss2/].reduce([]) do |a, uri|
a << target.url(uri)
end
end
end
end
end
end
================================================
FILE: app/finders/wp_version/unique_fingerprinting.rb
================================================
# frozen_string_literal: true
module WPScan
module Finders
module WpVersion
# Unique Fingerprinting Version Finder
class UniqueFingerprinting < CMSScanner::Finders::Finder
include CMSScanner::Finders::Finder::Fingerprinter
# @return [ WpVersion ]
def aggressive(opts = {})
fingerprint(DB::Fingerprints.wp_unique_fingerprints, opts) do |version_number, url, md5sum|
hydra.abort
progress_bar.finish
return Model::WpVersion.new(
version_number,
found_by: 'Unique Fingerprinting (Aggressive Detection)',
confidence: 100,
interesting_entries: ["#{url} md5sum is #{md5sum}"]
)
end
nil
end
def create_progress_bar(opts = {})
super(opts.merge(title: 'Fingerprinting the version -'))
end
end
end
end
end
================================================
FILE: app/finders/wp_version.rb
================================================
# frozen_string_literal: true
require_relative 'wp_version/rss_generator'
require_relative 'wp_version/atom_generator'
require_relative 'wp_version/rdf_generator'
require_relative 'wp_version/readme'
require_relative 'wp_version/unique_fingerprinting'
module WPScan
module Finders
# Specific Finders container to filter the version detected
# and remove the one with low confidence to avoid false
# positive when there is not enough information to accurately
# determine it.
class WpVersionFinders < UniqueFinders
def filter_findings
best_finding = super
best_finding && best_finding.confidence >= 40 ? best_finding : false
end
end
module WpVersion
# Wp Version Finder
class Base
include CMSScanner::Finders::UniqueFinder
# @param [ WPScan::Target ] target
def initialize(target)
(%w[RSSGenerator AtomGenerator RDFGenerator] +
DB::DynamicFinders::Wordpress.versions_finders_configs.keys +
%w[Readme UniqueFingerprinting]
).each do |finder_name|
finders << WpVersion.const_get(finder_name.to_sym).new(target)
end
end
def finders
@finders ||= Finders::WpVersionFinders.new
end
end
end
end
end
================================================
FILE: app/finders.rb
================================================
# frozen_string_literal: true
require_relative 'finders/interesting_findings'
require_relative 'finders/wp_items'
require_relative 'finders/wp_version'
require_relative 'finders/main_theme'
require_relative 'finders/timthumb_version'
require_relative 'finders/timthumbs'
require_relative 'finders/config_backups'
require_relative 'finders/db_exports'
require_relative 'finders/medias'
require_relative 'finders/users'
require_relative 'finders/plugins'
require_relative 'finders/plugin_version'
require_relative 'finders/theme_version'
require_relative 'finders/themes'
require_relative 'finders/passwords'
================================================
FILE: app/models/config_backup.rb
================================================
# frozen_string_literal: true
module WPScan
module Model
# Config Backup
class ConfigBackup < InterestingFinding
end
end
end
================================================
FILE: app/models/db_export.rb
================================================
# frozen_string_literal: true
module WPScan
module Model
# DB Export
class DbExport < InterestingFinding
end
end
end
================================================
FILE: app/models/interesting_finding.rb
================================================
# frozen_string_literal: true
module WPScan
module Model
# Custom class to include the WPScan::References module
class InterestingFinding < CMSScanner::Model::InterestingFinding
include References
end
class BackupDB < InterestingFinding
def to_s
@to_s ||= "A backup directory has been found: #{url}"
end
# @return [ Hash ]
def references
@references ||= { url: ['https://github.com/wpscanteam/wpscan/issues/422'] }
end
end
class DebugLog < InterestingFinding
def to_s
@to_s ||= "Debug Log found: #{url}"
end
# @ return [ Hash ]
def references
@references ||= { url: ['https://codex.wordpress.org/Debugging_in_WordPress'] }
end
end
class DuplicatorInstallerLog < InterestingFinding
# @return [ Hash ]
def references
@references ||= { url: ['https://www.exploit-db.com/ghdb/3981/'] }
end
end
class EmergencyPwdResetScript < InterestingFinding
def references
@references ||= {
url: ['https://codex.wordpress.org/Resetting_Your_Password#Using_the_Emergency_Password_Reset_Script']
}
end
end
class FullPathDisclosure < InterestingFinding
def to_s
@to_s ||= "Full Path Disclosure found: #{url}"
end
# @return [ Hash ]
def references
@references ||= { url: ['https://www.owasp.org/index.php/Full_Path_Disclosure'] }
end
end
class MuPlugins < InterestingFinding
# @return [ String ]
def to_s
@to_s ||= "This site has 'Must Use Plugins': #{url}"
end
# @return [ Hash ]
def references
@references ||= { url: ['http://codex.wordpress.org/Must_Use_Plugins'] }
end
end
class Multisite < InterestingFinding
# @return [ String ]
def to_s
@to_s ||= 'This site seems to be a multisite'
end
# @return [ Hash ]
def references
@references ||= { url: ['http://codex.wordpress.org/Glossary#Multisite'] }
end
end
class Readme < InterestingFinding
def to_s
@to_s ||= "WordPress readme found: #{url}"
end
end
class Registration < InterestingFinding
# @return [ String ]
def to_s
@to_s ||= "Registration is enabled: #{url}"
end
end
class TmmDbMigrate < InterestingFinding
def to_s
@to_s ||= "ThemeMakers migration file found: #{url}"
end
# @return [ Hash ]
def references
@references ||= { packetstorm: [131_957] }
end
end
class UploadDirectoryListing < InterestingFinding
# @return [ String ]
def to_s
@to_s ||= "Upload directory has listing enabled: #{url}"
end
end
class UploadSQLDump < InterestingFinding
def to_s
@to_s ||= "SQL Dump found: #{url}"
end
end
class WPCron < InterestingFinding
# @return [ String ]
def to_s
@to_s ||= "The external WP-Cron seems to be enabled: #{url}"
end
# @return [ Hash ]
def references
@references ||= {
url: [
'https://www.iplocation.net/defend-wordpress-from-ddos',
'https://github.com/wpscanteam/wpscan/issues/1299'
]
}
end
end
class PHPDisabled < InterestingFinding
# @return [ String ]
def to_s
@to_s ||= 'PHP seems to be disabled'
end
# @return [ Hash ]
def references
@references ||= {
url: ['https://github.com/wpscanteam/wpscan/issues/1593']
}
end
end
end
end
================================================
FILE: app/models/media.rb
================================================
# frozen_string_literal: true
module WPScan
module Model
# Media
class Media < InterestingFinding
end
end
end
================================================
FILE: app/models/plugin.rb
================================================
# frozen_string_literal: true
module WPScan
module Model
# WordPress Plugin
class Plugin < WpItem
# See WpItem
def initialize(slug, blog, opts = {})
super(slug, blog, opts)
# To be used by #head_and_get
# If custom wp-content, it will be replaced by blog#url
@path_from_blog = "wp-content/plugins/#{slug}/"
@uri = Addressable::URI.parse(blog.url(path_from_blog))
end
# Retrieve the metadata from the vuln API if available (and a valid token is given),
# or the local metadata db otherwise
# @return [ Hash ]
def metadata
@metadata ||= db_data.empty? ? DB::Plugin.metadata_at(slug) : db_data
end
# @return [ Hash ]
def db_data
@db_data ||= DB::VulnApi.plugin_data(slug)
end
# @param [ Hash ] opts
#
# @return [ Model::Version, false ]
def version(opts = {})
@version = Finders::PluginVersion::Base.find(self, version_detection_opts.merge(opts)) if @version.nil?
@version
end
# @return [ Array<String> ]
def potential_readme_filenames
@potential_readme_filenames ||= Array((DB::DynamicFinders::Plugin.df_data.dig(slug, 'Readme', 'path') || super))
end
end
end
end
================================================
FILE: app/models/theme.rb
================================================
# frozen_string_literal: true
module WPScan
module Model
# WordPress Theme
class Theme < WpItem
attr_reader :style_url, :style_name, :style_uri, :author, :author_uri, :template, :description,
:license, :license_uri, :tags, :text_domain
# See WpItem
def initialize(slug, blog, opts = {})
super(slug, blog, opts)
# To be used by #head_and_get
# If custom wp-content, it will be replaced by blog#url
@path_from_blog = "wp-content/themes/#{slug}/"
@uri = Addressable::URI.parse(blog.url(path_from_blog))
@style_url = opts[:style_url] || url('style.css')
parse_style
end
# Retrieve the metadata from the vuln API if available (and a valid token is given),
# or the local metadata db otherwise
# @return [ JSON ]
def metadata
@metadata ||= db_data.empty? ? DB::Theme.metadata_at(slug) : db_data
end
# @return [ Hash ]
def db_data
@db_data ||= DB::VulnApi.theme_data(slug)
end
# @param [ Hash ] opts
#
# @return [ Model::Version, false ]
def version(opts = {})
@version = Finders::ThemeVersion::Base.find(self, version_detection_opts.merge(opts)) if @version.nil?
@version
end
# @return [ Theme ]
def parent_theme
return unless template
return unless style_body =~ /^@import\surl\(["']?([^"')]+)["']?\);\s*$/i
opts = detection_opts.merge(
style_url: url(Regexp.last_match[1]),
found_by: 'Parent Themes (Passive Detection)',
confidence: 100
).merge(version_detection: version_detection_opts)
self.class.new(template, blog, opts)
end
# @param [ Integer ] depth
#
# @retun [ Array<Theme> ]
def parent_themes(depth = 3)
theme = self
found = []
(1..depth).each do |_|
parent = theme.parent_theme
break unless parent
found << parent
theme = parent
end
found
end
def style_body
@style_body ||= Browser.get(style_url).body
end
def parse_style
{
style_name: 'Theme Name',
style_uri: 'Theme URI',
author: 'Author',
author_uri: 'Author URI',
template: 'Template',
description: 'Description',
license: 'License',
license_uri: 'License URI',
tags: 'Tags',
text_domain: 'Text Domain'
}.each do |attribute, tag|
instance_variable_set(:"@#{attribute}", parse_style_tag(style_body, tag)&.force_encoding('UTF-8'))
end
end
# @param [ String ] bofy
# @param [ String ] tag
#
# @return [ String ]
def parse_style_tag(body, tag)
value = body[/\b#{Regexp.escape(tag)}:[\t ]*([^\r\n*]+)/, 1]
value && !value.strip.empty? ? value.strip : nil
end
def ==(other)
super(other) && style_url == other.style_url
end
end
end
end
================================================
FILE: app/models/timthumb.rb
================================================
# frozen_string_literal: true
module WPScan
module Model
# Timthumb
class Timthumb < InterestingFinding
include Vulnerable
attr_reader :version_detection_opts
# @param [ String ] url
# @param [ Hash ] opts
# @option opts [ Symbol ] :mode The mode to use to detect the version
def initialize(url, opts = {})
super(url, opts)
@version_detection_opts = opts[:version_detection] || {}
end
# @param [ Hash ] opts
#
# @return [ Model::Version, false ]
def version(opts = {})
@version = Finders::TimthumbVersion::Base.find(self, version_detection_opts.merge(opts)) if @version.nil?
@version
end
# @return [ Array<Vulnerability> ]
def vulnerabilities
vulns = []
vulns << rce_webshot_vuln if version == false || (version > '1.35' && version < '2.8.14' && webshot_enabled?)
vulns << rce_132_vuln if version == false || version < '1.33'
vulns
end
# @return [ Vulnerability ] The RCE in the <= 1.32
def rce_132_vuln
Vulnerability.new(
'Timthumb <= 1.32 Remote Code Execution',
references: { exploitdb: ['17602'] },
type: 'RCE',
fixed_in: '1.33'
)
end
# @return [ Vulnerability ] The RCE due to the WebShot in the > 1.35 (or >= 2.0) and <= 2.8.13
def rce_webshot_vuln
Vulnerability.new(
'Timthumb <= 2.8.13 WebShot Remote Code Execution',
references: {
url: ['http://seclists.org/fulldisclosure/2014/Jun/117', 'https://github.com/wpscanteam/wpscan/issues/519'],
cve: '2014-4663'
},
type: 'RCE',
fixed_in: '2.8.14'
)
end
# @return [ Boolean ]
def webshot_enabled?
res = Browser.get(url, params: { webshot: 1, src: "http://#{default_allowed_domains.sample}" })
!/WEBSHOT_ENABLED == true/.match?(res.body)
end
# @return [ Array<String> ] The default allowed domains (between the 2.0 and 2.8.13)
def default_allowed_domains
%w[flickr.com picasa.com img.youtube.com upload.wikimedia.org]
end
end
end
end
================================================
FILE: app/models/wp_item.rb
================================================
# frozen_string_literal: true
module WPScan
module Model
# WpItem (superclass of Plugin & Theme)
class WpItem
include Vulnerable
include Finders::Finding
include CMSScanner::Target::Platform::PHP
include CMSScanner::Target::Server::Generic
# Most common readme filenames, based on checking all public plugins and themes.
READMES = %w[readme.txt README.txt README.md readme.md Readme.txt].freeze
attr_reader :uri, :slug, :detection_opts, :version_detection_opts, :blog, :path_from_blog, :db_data
delegate :homepage_res, :error_404_res, :xpath_pattern_from_page, :in_scope_uris, :head_or_get_params, to: :blog
# @param [ String ] slug The plugin/theme slug
# @param [ Target ] blog The targeted blog
# @param [ Hash ] opts
# @option opts [ Symbol ] :mode The detection mode to use
# @option opts [ Hash ] :version_detection The options to use when looking for the version
# @option opts [ String ] :url The URL of the item
def initialize(slug, blog, opts = {})
@slug = Addressable::URI.unencode(slug)
@blog = blog
@uri = Addressable::URI.parse(opts[:url]) if opts[:url]
@detection_opts = { mode: opts[:mode] }
@version_detection_opts = opts[:version_detection] || {}
parse_finding_options(opts)
end
# @return [ Array<Vulnerabily> ]
def vulnerabilities
return @vulnerabilities if @vulnerabilities
@vulnerabilities = []
Array(db_data['vulnerabilities']).each do |json_vuln|
vulnerability = Vulnerability.load_from_json(json_vuln)
@vulnerabilities << vulnerability if vulnerable_to?(vulnerability)
end
@vulnerabilities
end
# Checks if the wp_item is vulnerable to a specific vulnerability
#
# @param [ Vulnerability ] vuln Vulnerability to check the item against
#
# @return [ Boolean ]
def vulnerable_to?(vuln)
return false if version && vuln&.introduced_in && version < vuln.introduced_in
return true unless version && vuln&.fixed_in && !vuln.fixed_in.empty?
version < vuln.fixed_in
end
# @return [ String ]
def latest_version
@latest_version ||= metadata['latest_version'] ? Model::Version.new(metadata['latest_version']) : nil
end
# Not used anywhere ATM
# @return [ Boolean ]
def popular?
@popular ||= metadata['popular'] ? true : false
end
# @return [ String ]
def last_updated
@last_updated ||= metadata['last_updated']
end
# @return [ Boolean ]
def outdated?
@outdated ||= if version && latest_version
version < latest_version
else
false
end
end
# @param [ String ] path Optional path to merge with the uri
#
# @return [ String ]
def url(path = nil)
return unless @uri
return @uri.to_s unless path
@uri.join(Addressable::URI.encode(path)).to_s
end
# @return [ Boolean ]
def ==(other)
self.class == other.class && slug == other.slug
end
def to_s
slug
end
# @return [ Symbol ] The Class symbol associated to the item
def classify
@classify ||= classify_slug(slug)
end
# @return [ String, False ] The readme url if found, false otherwise
def readme_url
return if detection_opts[:mode] == :passive
return @readme_url unless @readme_url.nil?
potential_readme_filenames.each do |path|
t_url = url(path)
return @readme_url = t_url if Browser.forge_request(t_url, blog.head_or_get_params).run.code == 200
end
@readme_url = false
end
def potential_readme_filenames
@potential_readme_filenames ||= READMES
end
# @param [ String ] path
# @param [ Hash ] params The request params
#
# @return [ Boolean ]
def directory_listing?(path = nil, params = {})
return if detection_opts[:mode] == :passive
super(path, params)
end
# @param [ String ] path
# @param [ Hash ] params The request params
#
# @return [ Boolean ]
def error_log?(path = 'error_log', params = {})
return if detection_opts[:mode] == :passive
super(path, params)
end
# See CMSScanner::Target#head_and_get
#
# This is used by the error_log? above in the super()
# to have the correct path (ie readme.txt checked from the plugin/theme location
# and not from the blog root). Could also be used in finders
#
# @param [ String ] path
# @param [ Array<String> ] codes
# @param [ Hash ] params The requests params
# @option params [ Hash ] :head Request params for the HEAD
# @option params [ hash ] :get Request params for the GET
#
# @return [ Typhoeus::Response ]
def head_and_get(path, codes = [200], params = {})
final_path = @path_from_blog.dup # @path_from_blog is set in the plugin/theme
final_path << path unless path.nil?
blog.head_and_get(final_path, codes, params)
end
end
end
end
================================================
FILE: app/models/wp_version.rb
================================================
# frozen_string_literal: true
module WPScan
module Model
# WP Version
class WpVersion < CMSScanner::Model::Version
include Vulnerable
def initialize(number, opts = {})
raise Error::InvalidWordPressVersion unless WpVersion.valid?(number.to_s)
super(number, opts)
end
# @param [ String ] number
#
# @return [ Boolean ] true if the number is a valid WP version, false otherwise
def self.valid?(number)
all.include?(number)
end
# @return [ Array<String> ] All the version numbers
def self.all
return @all_numbers if @all_numbers
@all_numbers = []
DB::Version.metadata.each_key do |ver|
@all_numbers << ver
end
DB::Fingerprints.wp_fingerprints.each_value do |fp|
@all_numbers << fp.values
end
# @all_numbers.flatten.uniq.sort! {} doesn't produce the same result here.
@all_numbers.flatten!
@all_numbers.uniq!
@all_numbers.sort! { |a, b| Gem::Version.new(b) <=> Gem::Version.new(a) }
end
# Retrieve the metadata from the vuln API if available (and a valid token is given),
# or the local metadata db otherwise
# @return [ Hash ]
def metadata
@metadata ||= db_data.empty? ? DB::Version.metadata_at(number) : db_data
end
# @return [ Hash ]
def db_data
@db_data ||= DB::VulnApi.wordpress_data(number)
end
# @return [ Array<Vulnerability> ]
def vulnerabilities
return @vulnerabilities if @vulnerabilities
@vulnerabilities = []
Array(db_data['vulnerabilities']).each do |json_vuln|
@vulnerabilities << Vulnerability.load_from_json(json_vuln)
end
@vulnerabilities
end
# @return [ String ]
def release_date
@release_date ||= metadata['release_date'] || 'Unknown'
end
# @return [ String ]
def status
@status ||= metadata['status'] || 'Unknown'
end
end
end
end
================================================
FILE: app/models/xml_rpc.rb
================================================
# frozen_string_literal: true
module WPScan
module Model
# Override of the CMSScanner::XMLRPC to include the references
class XMLRPC < CMSScanner::Model::XMLRPC
include References # To be able to use the :wpvulndb reference if needed
# @return [ Hash ]
def references
@references ||= {
url: ['http://codex.wordpress.org/XML-RPC_Pingback_API'],
metasploit: [
'auxiliary/scanner/http/wordpress_ghost_scanner',
'auxiliary/dos/http/wordpress_xmlrpc_dos',
'auxiliary/scanner/http/wordpress_xmlrpc_login',
'auxiliary/scanner/http/wordpress_pingback_access'
]
}
end
end
end
end
================================================
FILE: app/models.rb
================================================
# frozen_string_literal: true
module WPScan
module Model
include CMSScanner::Model
end
end
require_relative 'models/interesting_finding'
require_relative 'models/wp_version'
require_relative 'models/xml_rpc'
require_relative 'models/wp_item'
require_relative 'models/timthumb'
require_relative 'models/media'
require_relative 'models/plugin'
require_relative 'models/theme'
require_relative 'models/config_backup'
require_relative 'models/db_export'
================================================
FILE: app/views/cli/core/banner.erb
================================================
_______________________________________________________________
__ _______ _____
\ \ / / __ \ / ____|
\ \ /\ / /| |__) | (___ ___ __ _ _ __ ®
\ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \
\ /\ / | | ____) | (__| (_| | | | |
\/ \/ |_| |_____/ \___|\__,_|_| |_|
WordPress Security Scanner by the WPScan Team
Version <%= WPScan::VERSION %>
<%= ' ' * ((63 - WPScan::DB::Sponsor.text.length)/2) + WPScan::DB::Sponsor.text %>
@_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________
================================================
FILE: app/views/cli/core/db_update_finished.erb
================================================
<% if @verbose && !@updated.empty? -%>
<%= notice_icon %> File(s) Updated:
<% @updated.each do |file| -%>
| <%= file %>
<% end -%>
<% end -%>
<%= notice_icon %> Update completed.
================================================
FILE: app/views/cli/core/db_update_started.erb
================================================
<%= notice_icon %> Updating the Database ...
================================================
FILE: app/views/cli/core/not_fully_configured.erb
================================================
<%= critical_icon %> The Website is not fully configured and currently in install mode. Create a new admin user at <%= @url %>
================================================
FILE: app/views/cli/core/version.erb
================================================
Current Version: <%= WPScan::VERSION %>
<% if @last_update -%>
Last DB Update: <%= @last_update.strftime('%Y-%m-%d') %>
<% end -%>
================================================
FILE: app/views/cli/enumeration/config_backups.erb
================================================
<% if @config_backups.empty? -%>
<%= notice_icon %> No Config Backups Found.
<% else -%>
<%= notice_icon %> Config Backup(s) Identified:
<% @config_backups.each do |config_backup| -%>
<%= critical_icon %> <%= config_backup %>
<%= render('@finding', item: config_backup) -%>
<% end -%>
<% end %>
================================================
FILE: app/views/cli/enumeration/db_exports.erb
================================================
<% if @db_exports.empty? -%>
<%= notice_icon %> No DB Exports Found.
<% else -%>
<%= notice_icon %> Db Export(s) Identified:
<% @db_exports.each do |db_export| -%>
<%= critical_icon %> <%= db_export %>
<%= render('@finding', item: db_export) -%>
<% end -%>
<% end %>
================================================
FILE: app/views/cli/enumeration/medias.erb
================================================
<% if @medias.empty? -%>
<%= notice_icon %> No Medias Found.
<% else -%>
<%= notice_icon %> Medias(s) Identified:
<% @medias.each do |media| -%>
<%= info_icon %> <%= media %>
<%= render('@finding', item: media) -%>
<% end -%>
<% end %>
================================================
FILE: app/views/cli/enumeration/plugins.erb
================================================
<% if @plugins.empty? -%>
<%= notice_icon %> No plugins Found.
<% else -%>
<%= notice_icon %> Plugin(s) Identified:
<% @plugins.each do |plugin| -%>
<%= info_icon %> <%= plugin %>
<%= render('@wp_item', wp_item: plugin) -%>
|
<%= render('@finding', item: plugin) -%>
|
<% if plugin.version -%>
| Version: <%= plugin.version %> (<%= plugin.version.confidence %>% confidence)
<%= render('@finding', item: plugin.version) -%>
<% else -%>
| The version could not be determined.
<% end -%>
<% end -%>
<% end %>
================================================
FILE: app/views/cli/enumeration/themes.erb
================================================
<% if @themes.empty? -%>
<%= notice_icon %> No themes Found.
<% else -%>
<%= notice_icon %> Theme(s) Identified:
<% @themes.each do |theme| -%>
<%= info_icon %> <%= theme %>
<%= render('@theme', theme: theme, show_parents: false) -%>
<% end -%>
<% end %>
================================================
FILE: app/views/cli/enumeration/timthumbs.erb
================================================
<% if @timthumbs.empty? -%>
<%= notice_icon %> No Timthumbs Found.
<% else -%>
<%= notice_icon %> Timthumb(s) Identified:
<% @timthumbs.each do |timthumb| -%>
<%= info_icon %> <%= timthumb %>
<%= render('@finding', item: timthumb) -%>
|
<% if timthumb.version -%>
| Version: <%= timthumb.version %>
<%= render('@finding', item: timthumb.version) -%>
<% else -%>
| The version could not be determined.
<% end -%>
<% end -%>
<% end %>
================================================
FILE: app/views/cli/enumeration/users.erb
================================================
<% if @users.empty? -%>
<%= notice_icon %> No Users Found.
<% else -%>
<%= notice_icon %> User(s) Identified:
<% @users.each do |user| -%>
<%= info_icon %> <%= user %>
<%= render('@finding', item: user) -%>
<% end -%>
<% end %>
================================================
FILE: app/views/cli/finding.erb
================================================
| Found By: <%= @item.found_by %>
<% @item.interesting_entries.each do |entry| -%>
| - <%= entry %>
<% end -%>
<% unless (confirmed = @item.confirmed_by).empty? -%>
<% if confirmed.size == 1 -%>
| Confirmed By: <%= confirmed.first.found_by %>
<% confirmed.first.interesting_entries.each do |entry| -%>
| - <%= entry %>
<% end -%>
<% else -%>
| Confirmed By:
<% confirmed.each do |c| -%>
| <%= c.found_by %>
<% c.interesting_entries.each do |entry| -%>
| - <%= entry %>
<% end -%>
<% end -%>
<% end -%>
<% end -%>
<% if @item.respond_to?(:vulnerabilities) && !(vulns = @item.vulnerabilities).empty? -%>
<% vulns_size = vulns.size -%>
|
| <%= critical_icon %> <%= vulns_size %> <%= vulns_size == 1 ? 'vulnerability' : 'vulnerabilities' %> identified:
|
<% vulns.each_with_index do |vulnerability, index| -%>
<%= render('@vulnerability', v: vulnerability) -%>
<% if index != vulns_size -1 -%>
|
<% end -%>
<% end -%>
<% end -%>
================================================
FILE: app/views/cli/info.erb
================================================
<%= info_icon %> <%= @msg %>
================================================
FILE: app/views/cli/main_theme/theme.erb
================================================
<% if @theme -%>
<%= info_icon %> WordPress theme in use: <%= @theme %>
<%= render('@theme', theme: @theme, show_parents: true) -%>
<% else -%>
<%= notice_icon %> The main theme could not be detected.
<% end %>
================================================
FILE: app/views/cli/notice.erb
================================================
<%= notice_icon %> <%= @msg %>
================================================
FILE: app/views/cli/password_attack/users.erb
================================================
<% if @users.empty? -%>
<%= notice_icon %> No Valid Passwords Found.
<% else -%>
<%= critical_icon %> Valid Combinations Found:
<% @users.each do |user| -%>
| Username: <%= user.username %>, Password: <%= user.password %>
<% end -%>
<% end %>
================================================
FILE: app/views/cli/theme.erb
================================================
<%= render('@wp_item', wp_item: @theme) -%>
| Style URL: <%= @theme.style_url %>
<% if @theme.style_name -%>
| Style Name: <%= @theme.style_name %>
<% end -%>
<% if @theme.style_uri -%>
| Style URI: <%= @theme.style_uri %>
<% end -%>
<% if @theme.description -%>
| Description: <%= @verbose ? @theme.description : @theme.description[0, 100] + '...' %>
<% end -%>
<% if @theme.author -%>
| Author: <%= @theme.author %>
<% end -%>
<% if @theme.author_uri -%>
| Author URI: <%= @theme.author_uri %>
<% end -%>
<% if @theme.template && @verbose -%>
| Template: <%= @theme.template %>
<% end -%>
<% if @theme.license && @verbose -%>
| License: <%= @theme.license %>
<% end -%>
<% if @theme.license_uri && @verbose -%>
| License URI: <%= @theme.license_uri %>
<% end -%>
<% if @theme.tags && @verbose -%>
| Tags: <%= @theme.tags %>
<% end -%>
<% if @theme.text_domain && @verbose -%>
| Text Domain: <%= @theme.text_domain %>
<% end -%>
|
<%= render('@finding', item: @theme) -%>
|
<% if @theme.version -%>
| Version: <%= @theme.version %> (<%= @theme.version.confidence %>% confidence)
<%= render('@finding', item: @theme.version) -%>
<% else -%>
| The version could not be determined.
<% end -%>
<% if @show_parents && !(parents = @theme.parent_themes).empty? -%>
|
| Parent Theme(s):
<% parents.each do |parent| -%>
|
<%= render('@theme', theme: parent, show_parents: false) -%>
<% end -%>
<% end -%>
================================================
FILE: app/views/cli/usage.erb
================================================
<%= @msg %>
Please use --help/-h for the list of available options.
================================================
FILE: app/views/cli/vuln_api/status.erb
================================================
<% unless @status.empty? -%>
<% if @status['http_error'] -%>
<%= critical_icon %> WPScan DB API, <%= @status['http_error'].to_s %>
<% else -%>
<%= info_icon %> WPScan DB API OK
| Plan: <%= @status['plan'] %>
| Requests Done (during the scan): <%= @api_requests %>
| Requests Remaining: <%= @status['requests_remaining'] %>
<% end -%>
<% else -%>
<%= warning_icon %> No WPScan API Token given, as a result vulnerability data has not been output.
<%= warning_icon %> You can get a free API token with 25 daily requests by registering at https://wpscan.com/register
<% end -%>
================================================
FILE: app/views/cli/vulnerability.erb
================================================
| <%= critical_icon %> Title: <%= @v.title %>
<% if @v.cvss -%>
| CVSS: <%= @v.cvss[:score] %> (<%= @v.cvss[:vector] %>)
<% end -%>
<% if @v.fixed_in -%>
| Fixed in: <%= @v.fixed_in %>
<% end -%>
<% unless (references = @v.references_urls).empty? -%>
<% if references.size == 1 -%>
| Reference: <%= references.first %>
<% else -%>
| References:
<% references.each do |ref| -%>
| - <%= ref %>
<% end -%>
<% end -%>
<% end -%>
================================================
FILE: app/views/cli/wp_item.erb
================================================
| Location: <%= @wp_item.url %>
<% if @wp_item.latest_version && !@wp_item.outdated? -%>
| Latest Version: <%= @wp_item.latest_version %><% if @wp_item.version %> (up to date)<% end %>
<% end -%>
<% if @wp_item.last_updated -%>
| Last Updated: <%= @wp_item.last_updated %>
<% end -%>
<% if @wp_item.readme_url -%>
| Readme: <%= @wp_item.readme_url %>
<% end -%>
<% if @wp_item.latest_version && @wp_item.outdated? -%>
| <%= warning_icon %> The version is out of date, the latest version is <%= @wp_item.latest_version %>
<% end -%>
<% if @wp_item.directory_listing? -%>
| <%= critical_icon %> Directory listing is enabled
<% end -%>
<% if @wp_item.error_log? -%>
| <%= critical_icon %> An error log file has been found: <%= @wp_item.url('error_log') %>
<% end -%>
================================================
FILE: app/views/cli/wp_version/version.erb
================================================
<% if @version -%>
<%= info_icon %> WordPress version <%= @version.number %> identified (<%= @version.status.tr('-', '_').humanize %>, released on <%= @version.release_date %>).
<%= render('@finding', item: @version) -%>
<% else -%>
<%= notice_icon %> The WordPress version could not be detected.
<% end %>
================================================
FILE: app/views/json/core/banner.erb
================================================
"banner": {
"description": "WordPress Security Scanner by the WPScan Team",
"version": <%= WPScan::VERSION.to_json %>,
"authors": [
"@_WPScan_",
"@ethicalhack3r",
"@erwan_lr",
"@firefart"
],
"sponsor": <%= WPScan::DB::Sponsor.text.to_json %>
},
================================================
FILE: app/views/json/core/db_update_finished.erb
================================================
"db_files_updated": <%= @updated.to_json %>,
"db_update_finished": true,
================================================
FILE: app/views/json/core/db_update_started.erb
================================================
"db_update_started": true,
================================================
FILE: app/views/json/core/not_fully_configured.erb
================================================
"not_fully_configured": "The Website is not fully configured and currently in install mode. Create a new admin user at <%= @url %>",
================================================
FILE: app/views/json/core/version.erb
================================================
"version": <%= WPScan::VERSION.to_json %>,
"last_db_update": <%= @last_update.to_json %>,
================================================
FILE: app/views/json/enumeration/config_backups.erb
================================================
"config_backups": {
<% unless @config_backups.empty? -%>
<% last_index = @config_backups.size - 1 -%>
<% @config_backups.each_with_index do |config_backup, index| -%>
<%= config_backup.url.to_json %>: {
<%= render('@finding', item: config_backup) -%>
}<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
},
================================================
FILE: app/views/json/enumeration/db_exports.erb
================================================
"db_exports": {
<% unless @db_exports.empty? -%>
<% last_index = @db_exports.size - 1 -%>
<% @db_exports.each_with_index do |db_export, index| -%>
<%= db_export.url.to_json %>: {
<%= render('@finding', item: db_export) -%>
}<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
},
================================================
FILE: app/views/json/enumeration/medias.erb
================================================
"medias": {
<% unless @medias.empty? -%>
<% last_index = @medias.size - 1 -%>
<% @medias.each_with_index do |media, index| -%>
<%= media.url.to_json %>: {
<%= render('@finding', item: media) -%>
}<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
},
================================================
FILE: app/views/json/enumeration/plugins.erb
================================================
"plugins": {
<% unless @plugins.empty? -%>
<% last_index = @plugins.size - 1 -%>
<% @plugins.each_with_index do |plugin, index| -%>
<%= plugin.slug.to_json %>: {
<%= render('@wp_item', wp_item: plugin) %>,
<%= render('@finding', item: plugin) -%>,
<% if plugin.version -%>
"version": {
"number": <%= plugin.version.number.to_json %>,
"confidence": <%= plugin.version.confidence.to_json %>,
<%= render('@finding', item: plugin.version) -%>
}
<% else -%>
"version": null
<% end -%>
}<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
},
================================================
FILE: app/views/json/enumeration/themes.erb
================================================
"themes": {
<% unless @themes.empty? -%>
<% last_index = @themes.size - 1 -%>
<% @themes.each_with_index do |theme, index| -%>
<%= theme.slug.to_json %>: {
<%= render('@theme', theme: theme) -%>
}<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
},
================================================
FILE: app/views/json/enumeration/timthumbs.erb
================================================
"timthumbs": {
<% unless @timthumbs.empty? -%>
<% last_index = @timthumbs.size - 1 -%>
<% @timthumbs.each_with_index do |timthumb, index| -%>
<%= timthumb.url.to_json %>: {
<%= render('@finding', item: timthumb) -%>,
<% if timthumb.version -%>
"version": {
"number": <%= timthumb.version.number.to_json %>,
"confidence": <%= timthumb.version.confidence.to_json %>,
<%= render('@finding', item: timthumb.version) -%>
}
<% else -%>
"version": null
<% end -%>
}<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
},
================================================
FILE: app/views/json/enumeration/users.erb
================================================
"users": {
<% unless @users.empty? -%>
<% last_index = @users.size - 1 -%>
<% @users.each_with_index do |user, index| -%>
<%= user.username.to_json %>: {
"id": <%= user.id.to_json %>,
<%= render('@finding', item: user) -%>
}<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
},
================================================
FILE: app/views/json/finding.erb
================================================
"found_by": <%= @item.found_by.to_json %>,
"confidence": <%= @item.confidence.to_json %>,
"interesting_entries": <%= @item.interesting_entries.to_json %>,
"confirmed_by": {
<% unless (confirmed = @item.confirmed_by).empty? -%>
<% last_index = @item.confirmed_by.size - 1 -%>
<% @item.confirmed_by.each_with_index do |c, index| -%>
<%= c.found_by.to_json %>: {
"confidence": <%= c.confidence.to_json %>,
"interesting_entries": <%= c.interesting_entries.to_json %>
}<% unless index == last_index %>,<% end -%>
<% end -%>
<% end -%>
}
<% if @item.respond_to?(:vulnerabilities) -%>
,"vulnerabilities": [
<% unless (vulns = @item.vulnerabilities).empty? -%>
<% last_index = vulns.size - 1 -%>
<% vulns.each_with_index do |v, index| -%>
{
"title": <%= v.title.to_json %>,
<% if v.cvss -%>
"cvss": <%= v.cvss.to_json %>,
<% end -%>
"fixed_in": <%= v.fixed_in.to_json %>,
"references": <%= v.references.to_json %>
}<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
]
<% end -%>
================================================
FILE: app/views/json/main_theme/theme.erb
================================================
<% if @theme -%>
"main_theme": {
<%= render('@theme', theme: @theme, show_parents: true) %>
},
<% else -%>
"main_theme": null,
<% end -%>
================================================
FILE: app/views/json/password_attack/users.erb
================================================
"password_attack": {
<% unless @users.empty? -%>
<% last_index = @users.size - 1 -%>
<% @users.each_with_index do |user, index| -%>
<%= user.username.to_json %>: {
"password": <%= user.password.to_json %>
}<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
},
================================================
FILE: app/views/json/theme.erb
================================================
<%= render('@wp_item', wp_item: @theme) %>,
"style_url": <%= @theme.style_url.to_json %>,
"style_name": <%= @theme.style_name.to_json %>,
"style_uri": <%= @theme.style_uri.to_json %>,
"description": <%= @theme.description.to_json %>,
"author": <%= @theme.author.to_json %>,
"author_uri": <%= @theme.author_uri.to_json %>,
"template": <%= @theme.template.to_json %>,
"license": <%= @theme.license.to_json %>,
"license_uri": <%= @theme.license_uri.to_json %>,
"tags": <%= @theme.tags.to_json %>,
"text_domain": <%= @theme.text_domain.to_json %>,
<%= render('@finding', item: @theme) -%>,
<% if @theme.version -%>
"version": {
"number": <%= @theme.version.number.to_json %>,
"confidence": <%= @theme.version.confidence.to_json %>,
<%= render('@finding', item: @theme.version) -%>
},
<% else -%>
"version": null,
<% end -%>
"parents": [
<% if @show_parents && !(parents = @theme.parent_themes).empty? -%>
<% last_index = parents.size - 1 -%>
<% parents.each_with_index do |parent, index| -%>
{
<%= render('@theme', theme: parent, show_parents: false) -%>
}<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
]
================================================
FILE: app/views/json/vuln_api/status.erb
================================================
"vuln_api": {
<% unless @status.empty? -%>
<% if @status['http_error'] -%>
"http_error": <%= @status['http_error'].to_s.to_json %>
<% else -%>
"plan": <%= @status['plan'].to_json %>,
"requests_done_during_scan": <%= @api_requests.to_json %>,
"requests_remaining": <%= @status['requests_remaining'].to_json %>
<% end -%>
<% else -%>
"error": "No WPScan API Token given, as a result vulnerability data has not been output.\nYou can get a free API token with 25 daily requests by registering at https://wpscan.com/register"
<% end -%>
},
================================================
FILE: app/views/json/wp_item.erb
================================================
"slug": <%= @wp_item.slug.to_json %>,
"location": <%= @wp_item.url.to_json %>,
"latest_version": <%= @wp_item.latest_version ? @wp_item.latest_version.number.to_json : nil.to_json %>,
"last_updated": <%= @wp_item.last_updated.to_json %>,
"outdated": <%= @wp_item.outdated?.to_json %>,
"readme_url": <%= @wp_item.readme_url.to_json %>,
"directory_listing": <%= @wp_item.directory_listing?.to_json %>,
"error_log_url": <% if @wp_item.error_log? %><%= @wp_item.url('error_log').to_json %><% else %>null<% end %>
================================================
FILE: app/views/json/wp_version/version.erb
================================================
<% if @version -%>
"version": {
"number": <%= @version.number.to_json %>,
"release_date": <%= @version.release_date.to_json %>,
"status": <%= @version.status.to_json %>,
<%= render('@finding', item: @version) -%>
},
<% else -%>
"version": null,
<% end -%>
================================================
FILE: bin/wpscan
================================================
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'wpscan'
WPScan::Scan.new do |s|
s.controllers <<
WPScan::Controller::VulnApi.new <<
WPScan::Controller::CustomDirectories.new <<
WPScan::Controller::InterestingFindings.new <<
WPScan::Controller::WpVersion.new <<
WPScan::Controller::MainTheme.new <<
WPScan::Controller::Enumeration.new <<
WPScan::Controller::PasswordAttack.new <<
WPScan::Controller::Aliases.new
s.run
end
================================================
FILE: bin/wpscan-docker
================================================
#!/bin/bash
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
cd $DIR/../
docker build -q -t wpscan:git .
docker run -it --rm wpscan:git "$@"
================================================
FILE: bin/wpscan-docker-dev
================================================
#!/bin/bash
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
cd $DIR/../
if [[ -n "$WPSCAN_BUILD" ]]; then
docker build -q -t wpscan:git .
fi
docker run -it --rm -v $DIR/../:/wpscan wpscan:git "$@"
================================================
FILE: bin/wpscan-memprof
================================================
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'memory_profiler' # https://github.com/SamSaffron/memory_profiler
require 'wpscan'
report = MemoryProfiler.report(top: 15) do
WPScan::Scan.new do |s|
s.controllers <<
WPScan::Controller::VulnApi.new <<
WPScan::Controller::CustomDirectories.new <<
WPScan::Controller::InterestingFindings.new <<
WPScan::Controller::WpVersion.new <<
WPScan::Controller::MainTheme.new <<
WPScan::Controller::Enumeration.new <<
WPScan::Controller::PasswordAttack.new <<
WPScan::Controller::Aliases.new
s.run
end
end
report.pretty_print(scale_bytes: true, to_file: 'memprof.report')
================================================
FILE: bin/wpscan-stackprof
================================================
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'stackprof' # https://github.com/tmm1/stackprof
require 'wpscan'
# The object mode produces a segfault currently: https://github.com/jfelchner/ruby-progressbar/issues/153
# StackProf.run(mode: :object, out: '/tmp/stackprof-object.dump') do
# StackProf.run(mode: :wall, out: '/tmp/stackprof-wall.dump') do
StackProf.run(mode: :cpu, out: '/tmp/stackprof-cpu.dump', interval: 500) do
# Couldn't we just load the ./wpscan here ?
# require_relative 'wpscan' doesn't work
WPScan::Scan.new do |s|
s.controllers <<
WPScan::Controller::VulnApi.new <<
WPScan::Controller::CustomDirectories.new <<
WPScan::Controller::InterestingFindings.new <<
WPScan::Controller::WpVersion.new <<
WPScan::Controller::MainTheme.new <<
WPScan::Controller::Enumeration.new <<
WPScan::Controller::PasswordAttack.new <<
WPScan::Controller::Aliases.new
s.run
end
end
================================================
FILE: lib/wpscan/browser.rb
================================================
# frozen_string_literal: true
module WPScan
# Custom Browser
class Browser < CMSScanner::Browser
extend Actions
# @return [ String ]
def default_user_agent
@default_user_agent ||= "WPScan v#{VERSION} (https://wpscan.com/wordpress-security-scanner)"
end
end
end
================================================
FILE: lib/wpscan/controller.rb
================================================
# frozen_string_literal: true
module WPScan
# Needed to load at least the Core controller
# Otherwise, the following error will be raised:
# `initialize': uninitialized constant WPScan::Controller::Core (NameError)
module Controller
include CMSScanner::Controller
end
end
================================================
FILE: lib/wpscan/controllers.rb
================================================
# frozen_string_literal: true
module WPScan
# Override to set the OptParser's summary width to 45 (instead of 40 from the CMSScanner)
class Controllers < CMSScanner::Controllers
def initialize(option_parser = OptParseValidator::OptParser.new(nil, 45))
super(option_parser)
end
end
end
================================================
FILE: lib/wpscan/db/dynamic_finders/base.rb
================================================
# frozen_string_literal: true
module WPScan
module DB
module DynamicFinders
class Base
# @return [ String ]
def self.df_file
@df_file ||= DB_DIR.join('dynamic_finders.yml').to_s
end
# @return [ Hash ]
def self.all_df_data
@all_df_data ||= if Gem::Version.new(Psych::VERSION) >= Gem::Version.new('4.0.0')
YAML.safe_load(File.read(df_file), permitted_classes: [Regexp])
else
YAML.safe_load(File.read(df_file), [Regexp])
end
end
# @return [ Array<Symbol> ]
def self.allowed_classes
# The Readme is not put in there as it's not a Real DF, but rather using the DF system
# to get the list of potential filenames for a given slug
@allowed_classes ||= %i[Comment Xpath HeaderPattern BodyPattern JavascriptVar QueryParameter ConfigParser]
end
# @param [ Symbol ] sym
def self.method_missing(sym)
super unless sym =~ /\A(passive|aggressive)_(.*)_finder_configs\z/i
finder_class = Regexp.last_match[2].camelize.to_sym
raise "#{finder_class} is not allowed as a Dynamic Finder" unless allowed_classes.include?(finder_class)
finder_configs(
finder_class,
aggressive: Regexp.last_match[1] == 'aggressive'
)
end
def self.respond_to_missing?(sym, *_args)
sym =~ /\A(passive|aggressive)_(.*)_finder_configs\z/i
end
end
end
end
end
================================================
FILE: lib/wpscan/db/dynamic_finders/plugin.rb
================================================
# frozen_string_literal: true
module WPScan
module DB
module DynamicFinders
class Plugin < Base
# @return [ Hash ]
def self.df_data
@df_data ||= all_df_data['plugins'] || {}
end
def self.version_finder_module
Finders::PluginVersion
end
# @param [ Symbol ] finder_class
# @param [ Boolean ] aggressive
# @return [ Hash ]
def self.finder_configs(finder_class, aggressive: false)
configs = {}
return configs unless allowed_classes.include?(finder_class)
df_data.each do |slug, finders|
# Quite sure better can be done with some kind of logic statement in the select
fs = if aggressive
finders.reject { |_f, c| c['path'].nil? }
else
finders.select { |_f, c| c['path'].nil? }
end
fs.each do |finder_name, config|
klass = config['class'] || finder_name
next unless klass.to_sym == finder_class
configs[slug] ||= {}
configs[slug][finder_name] = config
end
end
configs
end
# @return [ Hash ]
def self.versions_finders_configs
return @versions_finders_configs if @versions_finders_configs
@versions_finders_configs = {}
df_data.each do |slug, finders|
finders.each do |finder_name, config|
next unless config.key?('version')
@versions_finders_configs[slug] ||= {}
@versions_finders_configs[slug][finder_name] = config
end
end
@versions_finders_configs
end
# @param [ String ] slug
# @return [ Constant ]
def self.maybe_create_module(slug)
# What about slugs such as js_composer which will be done as JsComposer, just like js-composer
constant_name = classify_slug(slug)
unless version_finder_module.constants.include?(constant_name)
version_finder_module.const_set(constant_name, Module.new)
end
version_finder_module.const_get(constant_name)
end
# Create the dynamic finders related to the given slug, and return the created classes
#
# @param [ String ] slug
#
# @return [ Array<Class> ] The created classes
def self.create_versions_finders(slug)
created = []
mod = maybe_create_module(slug)
versions_finders_configs[slug]&.each do |finder_class, config|
klass = config['class'] || finder_class
# Instead of raising exceptions, skip unallowed/already defined finders
# So that, when new DF configs are put in the .yml
# users with old version of WPScan will still be able to scan blogs
# when updating the DB but not the tool
next unless allowed_classes.include?(klass.to_sym)
created << if mod.constants.include?(finder_class.to_sym)
mod.const_get(finder_class.to_sym)
else
version_finder_super_class(klass).create_child_class(mod, finder_class.to_sym, config)
end
end
created
end
# The idea here would be to check if the class exist in
# the Finders::DynamicFinders::Plugins/Themes::klass or WpItemVersion::klass
# and return the related constant when one has been found.
#
# So far, the Finders::DynamicFinders::WPItemVersion is enought
# as nothing else is used
#
# @param [ String, Symbol ] klass
# @return [ Constant ]
def self.version_finder_super_class(klass)
"WPScan::Finders::DynamicFinder::WpItemVersion::#{klass}".constantize
end
end
end
end
end
================================================
FILE: lib/wpscan/db/dynamic_finders/theme.rb
================================================
# frozen_string_literal: true
module WPScan
module DB
module DynamicFinders
class Theme < Plugin
# @return [ Hash ]
def self.df_data
@df_data ||= all_df_data['themes'] || {}
end
def self.version_finder_module
Finders::ThemeVersion
end
end
end
end
end
================================================
FILE: lib/wpscan/db/dynamic_finders/wordpress.rb
================================================
# frozen_string_literal: true
module WPScan
module DB
module DynamicFinders
class Wordpress < Base
# @return [ Hash ]
def self.df_data
@df_data ||= all_df_data['wordpress'] || {}
end
# @return [ Constant ]
def self.version_finder_module
Finders::WpVersion
end
# @return [ Array<Symbol> ]
def self.allowed_classes
@allowed_classes ||= %i[
Comment Xpath HeaderPattern BodyPattern JavascriptVar QueryParameter WpItemQueryParameter
]
end
# @param [ Symbol ] finder_class
# @param [ Boolean ] aggressive
# @return [ Hash ]
def self.finder_configs(finder_class, aggressive: false)
configs = {}
return configs unless allowed_classes.include?(finder_class)
finders = if aggressive
df_data.reject { |_f, c| c['path'].nil? }
else
df_data.select { |_f, c| c['path'].nil? }
end
finders.each do |finder_name, config|
klass = config['class'] || finder_name
next unless klass.to_sym == finder_class
configs[finder_name] = config
end
configs
end
# @return [ Hash ]
def self.versions_finders_configs
@versions_finders_configs ||= df_data.select { |_finder_name, config| config.key?('version') }
end
def self.create_versions_finders
versions_finders_configs.each do |finder_class, config|
klass = config['class'] || finder_class
# Instead of raising exceptions, skip unallowed/already defined finders
# So that, when new DF configs are put in the .yml
# users with old version of WPScan will still be able to scan blogs
# when updating the DB but not the tool
next if version_finder_module.constants.include?(finder_class.to_sym) ||
!allowed_classes.include?(klass.to_sym)
version_finder_super_class(klass).create_child_class(version_finder_module, finder_class.to_sym, config)
end
end
# @param [ String, Symbol ] klass
# @return [ Constant ]
def self.version_finder_super_class(klass)
"WPScan::Finders::DynamicFinder::WpVe
Showing preview only (696K chars total). Download the full file or copy to clipboard to get everything.
gitextract_9u6uo61d/ ├── .codeclimate.yml ├── .dockerignore ├── .github/ │ ├── CONTRIBUTING.md │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── feature_request.md │ │ └── other-issue.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── dependabot.yml │ └── workflows/ │ ├── build.yml │ ├── docker.yml │ └── gempush.yml ├── .gitignore ├── .rspec ├── .rubocop.yml ├── .ruby-gemset ├── .ruby-version ├── .simplecov ├── Dockerfile ├── Gemfile ├── LICENSE ├── README.md ├── Rakefile ├── app/ │ ├── app.rb │ ├── controllers/ │ │ ├── aliases.rb │ │ ├── core.rb │ │ ├── custom_directories.rb │ │ ├── enumeration/ │ │ │ ├── cli_options.rb │ │ │ └── enum_methods.rb │ │ ├── enumeration.rb │ │ ├── main_theme.rb │ │ ├── password_attack.rb │ │ ├── vuln_api.rb │ │ └── wp_version.rb │ ├── controllers.rb │ ├── finders/ │ │ ├── config_backups/ │ │ │ └── known_filenames.rb │ │ ├── config_backups.rb │ │ ├── db_exports/ │ │ │ └── known_locations.rb │ │ ├── db_exports.rb │ │ ├── interesting_findings/ │ │ │ ├── backup_db.rb │ │ │ ├── debug_log.rb │ │ │ ├── duplicator_installer_log.rb │ │ │ ├── emergency_pwd_reset_script.rb │ │ │ ├── full_path_disclosure.rb │ │ │ ├── mu_plugins.rb │ │ │ ├── multisite.rb │ │ │ ├── php_disabled.rb │ │ │ ├── readme.rb │ │ │ ├── registration.rb │ │ │ ├── tmm_db_migrate.rb │ │ │ ├── upload_directory_listing.rb │ │ │ ├── upload_sql_dump.rb │ │ │ └── wp_cron.rb │ │ ├── interesting_findings.rb │ │ ├── main_theme/ │ │ │ ├── css_style_in_404_page.rb │ │ │ ├── css_style_in_homepage.rb │ │ │ ├── urls_in_404_page.rb │ │ │ ├── urls_in_homepage.rb │ │ │ └── woo_framework_meta_generator.rb │ │ ├── main_theme.rb │ │ ├── medias/ │ │ │ └── attachment_brute_forcing.rb │ │ ├── medias.rb │ │ ├── passwords/ │ │ │ ├── wp_login.rb │ │ │ ├── xml_rpc.rb │ │ │ └── xml_rpc_multicall.rb │ │ ├── passwords.rb │ │ ├── plugin_version/ │ │ │ └── readme.rb │ │ ├── plugin_version.rb │ │ ├── plugins/ │ │ │ ├── body_pattern.rb │ │ │ ├── comment.rb │ │ │ ├── config_parser.rb │ │ │ ├── header_pattern.rb │ │ │ ├── javascript_var.rb │ │ │ ├── known_locations.rb │ │ │ ├── query_parameter.rb │ │ │ ├── urls_in_404_page.rb │ │ │ ├── urls_in_homepage.rb │ │ │ └── xpath.rb │ │ ├── plugins.rb │ │ ├── theme_version/ │ │ │ ├── style.rb │ │ │ └── woo_framework_meta_generator.rb │ │ ├── theme_version.rb │ │ ├── themes/ │ │ │ ├── known_locations.rb │ │ │ ├── urls_in_404_page.rb │ │ │ └── urls_in_homepage.rb │ │ ├── themes.rb │ │ ├── timthumb_version/ │ │ │ └── bad_request.rb │ │ ├── timthumb_version.rb │ │ ├── timthumbs/ │ │ │ └── known_locations.rb │ │ ├── timthumbs.rb │ │ ├── users/ │ │ │ ├── author_id_brute_forcing.rb │ │ │ ├── author_posts.rb │ │ │ ├── author_sitemap.rb │ │ │ ├── login_error_messages.rb │ │ │ ├── oembed_api.rb │ │ │ ├── rss_generator.rb │ │ │ ├── wp_json_api.rb │ │ │ └── yoast_seo_author_sitemap.rb │ │ ├── users.rb │ │ ├── wp_items/ │ │ │ └── urls_in_page.rb │ │ ├── wp_items.rb │ │ ├── wp_version/ │ │ │ ├── atom_generator.rb │ │ │ ├── rdf_generator.rb │ │ │ ├── readme.rb │ │ │ ├── rss_generator.rb │ │ │ └── unique_fingerprinting.rb │ │ └── wp_version.rb │ ├── finders.rb │ ├── models/ │ │ ├── config_backup.rb │ │ ├── db_export.rb │ │ ├── interesting_finding.rb │ │ ├── media.rb │ │ ├── plugin.rb │ │ ├── theme.rb │ │ ├── timthumb.rb │ │ ├── wp_item.rb │ │ ├── wp_version.rb │ │ └── xml_rpc.rb │ ├── models.rb │ └── views/ │ ├── cli/ │ │ ├── core/ │ │ │ ├── banner.erb │ │ │ ├── db_update_finished.erb │ │ │ ├── db_update_started.erb │ │ │ ├── not_fully_configured.erb │ │ │ └── version.erb │ │ ├── enumeration/ │ │ │ ├── config_backups.erb │ │ │ ├── db_exports.erb │ │ │ ├── medias.erb │ │ │ ├── plugins.erb │ │ │ ├── themes.erb │ │ │ ├── timthumbs.erb │ │ │ └── users.erb │ │ ├── finding.erb │ │ ├── info.erb │ │ ├── main_theme/ │ │ │ └── theme.erb │ │ ├── notice.erb │ │ ├── password_attack/ │ │ │ └── users.erb │ │ ├── theme.erb │ │ ├── usage.erb │ │ ├── vuln_api/ │ │ │ └── status.erb │ │ ├── vulnerability.erb │ │ ├── wp_item.erb │ │ └── wp_version/ │ │ └── version.erb │ └── json/ │ ├── core/ │ │ ├── banner.erb │ │ ├── db_update_finished.erb │ │ ├── db_update_started.erb │ │ ├── not_fully_configured.erb │ │ └── version.erb │ ├── enumeration/ │ │ ├── config_backups.erb │ │ ├── db_exports.erb │ │ ├── medias.erb │ │ ├── plugins.erb │ │ ├── themes.erb │ │ ├── timthumbs.erb │ │ └── users.erb │ ├── finding.erb │ ├── main_theme/ │ │ └── theme.erb │ ├── password_attack/ │ │ └── users.erb │ ├── theme.erb │ ├── vuln_api/ │ │ └── status.erb │ ├── wp_item.erb │ └── wp_version/ │ └── version.erb ├── bin/ │ ├── wpscan │ ├── wpscan-docker │ ├── wpscan-docker-dev │ ├── wpscan-memprof │ └── wpscan-stackprof ├── lib/ │ ├── wpscan/ │ │ ├── browser.rb │ │ ├── controller.rb │ │ ├── controllers.rb │ │ ├── db/ │ │ │ ├── dynamic_finders/ │ │ │ │ ├── base.rb │ │ │ │ ├── plugin.rb │ │ │ │ ├── theme.rb │ │ │ │ └── wordpress.rb │ │ │ ├── fingerprints.rb │ │ │ ├── plugin.rb │ │ │ ├── plugins.rb │ │ │ ├── sponsor.rb │ │ │ ├── theme.rb │ │ │ ├── themes.rb │ │ │ ├── updater.rb │ │ │ ├── vuln_api.rb │ │ │ ├── wp_item.rb │ │ │ ├── wp_items.rb │ │ │ └── wp_version.rb │ │ ├── db.rb │ │ ├── errors/ │ │ │ ├── enumeration.rb │ │ │ ├── http.rb │ │ │ ├── update.rb │ │ │ ├── vuln_api.rb │ │ │ ├── wordpress.rb │ │ │ └── xmlrpc.rb │ │ ├── errors.rb │ │ ├── finders/ │ │ │ ├── dynamic_finder/ │ │ │ │ ├── finder.rb │ │ │ │ ├── version/ │ │ │ │ │ ├── body_pattern.rb │ │ │ │ │ ├── comment.rb │ │ │ │ │ ├── config_parser.rb │ │ │ │ │ ├── finder.rb │ │ │ │ │ ├── header_pattern.rb │ │ │ │ │ ├── javascript_var.rb │ │ │ │ │ ├── query_parameter.rb │ │ │ │ │ └── xpath.rb │ │ │ │ ├── wp_item_version.rb │ │ │ │ ├── wp_items/ │ │ │ │ │ └── finder.rb │ │ │ │ └── wp_version.rb │ │ │ └── finder/ │ │ │ └── wp_version/ │ │ │ └── smart_url_checker.rb │ │ ├── finders.rb │ │ ├── helper.rb │ │ ├── parsed_cli.rb │ │ ├── references.rb │ │ ├── target/ │ │ │ └── platform/ │ │ │ ├── wordpress/ │ │ │ │ └── custom_directories.rb │ │ │ └── wordpress.rb │ │ ├── target.rb │ │ ├── typhoeus/ │ │ │ └── response.rb │ │ ├── version.rb │ │ ├── vulnerability.rb │ │ └── vulnerable.rb │ └── wpscan.rb ├── spec/ │ ├── app/ │ │ ├── controllers/ │ │ │ ├── aliases_spec.rb │ │ │ ├── core_spec.rb │ │ │ ├── custom_directories_spec.rb │ │ │ ├── enumeration_spec.rb │ │ │ ├── password_attack_spec.rb │ │ │ ├── vuln_api_spec.rb │ │ │ └── wp_version_spec.rb │ │ ├── finders/ │ │ │ ├── config_backups/ │ │ │ │ └── known_filenames_spec.rb │ │ │ ├── config_backups_spec.rb │ │ │ ├── db_exports/ │ │ │ │ └── known_locations_spec.rb │ │ │ ├── db_exports_spec.rb │ │ │ ├── interesting_findings/ │ │ │ │ ├── backup_db_spec.rb │ │ │ │ ├── debug_log_spec.rb │ │ │ │ ├── duplicator_installer_log_spec.rb │ │ │ │ ├── emergency_pwd_reset_script_spec.rb │ │ │ │ ├── full_path_disclosure_spec.rb │ │ │ │ ├── mu_plugins_spec.rb │ │ │ │ ├── multisite_spec.rb │ │ │ │ ├── php_disabled_spec.rb │ │ │ │ ├── readme_spec.rb │ │ │ │ ├── registration_spec.rb │ │ │ │ ├── tmm_db_migrate_spec.rb │ │ │ │ ├── upload_direcrory_listing_spec.rb │ │ │ │ ├── upload_sql_dump_spec.rb │ │ │ │ └── wp_cron_spec.rb │ │ │ ├── interesting_findings_spec.rb │ │ │ ├── main_theme/ │ │ │ │ ├── css_style_in_404_page_spec.rb │ │ │ │ ├── css_style_in_homepage_spec.rb │ │ │ │ ├── urls_in_404_page_spec.rb.rb │ │ │ │ ├── urls_in_homepage_spec.rb │ │ │ │ └── woo_framework_meta_generator_spec.rb │ │ │ ├── main_theme_spec.rb │ │ │ ├── medias/ │ │ │ │ └── attachment_brute_forcing_spec.rb │ │ │ ├── medias_spec.rb │ │ │ ├── passwords/ │ │ │ │ ├── wp_login_spec.rb │ │ │ │ └── xml_rpc_spec.rb │ │ │ ├── plugin_version/ │ │ │ │ └── readme_spec.rb │ │ │ ├── plugin_version_spec.rb │ │ │ ├── plugins/ │ │ │ │ ├── body_pattern_spec.rb │ │ │ │ ├── comment_spec.rb │ │ │ │ ├── config_parser_spec.rb │ │ │ │ ├── header_pattern_spec.rb │ │ │ │ ├── javascript_var_spec.rb │ │ │ │ ├── known_locations_spec.rb │ │ │ │ ├── query_parameter_spec.rb │ │ │ │ ├── urls_in_404_page_spec.rb │ │ │ │ ├── urls_in_homepage_spec.rb │ │ │ │ └── xpath_spec.rb │ │ │ ├── plugins_spec.rb │ │ │ ├── theme_version/ │ │ │ │ ├── style_spec.rb │ │ │ │ └── woo_framework_meta_generator_spec.rb │ │ │ ├── theme_version_spec.rb │ │ │ ├── themes/ │ │ │ │ ├── known_locations_spec.rb │ │ │ │ ├── urls_in_404_page_spec.rb │ │ │ │ └── urls_in_homepage_spec.rb │ │ │ ├── themes_spec.rb │ │ │ ├── timthumb_version/ │ │ │ │ └── bad_request_spec.rb │ │ │ ├── timthumb_version_spec.rb │ │ │ ├── timthumbs/ │ │ │ │ └── known_locations_spec.rb │ │ │ ├── timthumbs_spec.rb │ │ │ ├── users/ │ │ │ │ ├── author_id_brute_forcing_spec.rb │ │ │ │ ├── author_posts_spec.rb │ │ │ │ ├── author_sitemap_spec.rb │ │ │ │ ├── login_error_messages_spec.rb │ │ │ │ ├── oembed_api_spec.rb │ │ │ │ ├── rss_generator_spec.rb │ │ │ │ ├── wp_json_api_spec.rb │ │ │ │ └── yoast_seo_author_sitemap_spec.rb │ │ │ ├── users_spec.rb │ │ │ ├── wp_version/ │ │ │ │ ├── atom_generator_spec.rb │ │ │ │ ├── rdf_generator_spec.rb │ │ │ │ ├── readme_spec.rb │ │ │ │ ├── rss_generator_spec.rb │ │ │ │ └── unique_fingerprinting_spec.rb │ │ │ └── wp_version_spec.rb │ │ ├── models/ │ │ │ ├── interesting_finding_spec.rb │ │ │ ├── media_spec.rb │ │ │ ├── plugin_spec.rb │ │ │ ├── theme_spec.rb │ │ │ ├── timthumb_spec.rb │ │ │ ├── wp_item_spec.rb │ │ │ ├── wp_version_spec.rb │ │ │ └── xml_rpc_spec.rb │ │ └── views_spec.rb │ ├── cache/ │ │ └── .gitignore │ ├── fixtures/ │ │ ├── db/ │ │ │ ├── config_backups.txt │ │ │ ├── db_exports.txt │ │ │ ├── dynamic_finders.yml │ │ │ ├── metadata.json │ │ │ ├── sponsor.txt │ │ │ ├── vuln_api/ │ │ │ │ ├── plugins/ │ │ │ │ │ ├── no-vulns-popular.json │ │ │ │ │ ├── vulnerable-introduced-in.json │ │ │ │ │ └── vulnerable-not-popular.json │ │ │ │ ├── themes/ │ │ │ │ │ ├── dignitas-themes.json │ │ │ │ │ ├── no-vulns-popular.json │ │ │ │ │ ├── vulnerable-not-popular.json │ │ │ │ │ └── yaaburnee-themes.json │ │ │ │ └── wordpresses/ │ │ │ │ ├── 38.json │ │ │ │ ├── 381.json │ │ │ │ └── 40.json │ │ │ └── wp_fingerprints.json │ │ ├── dynamic_finders/ │ │ │ ├── expected.yml │ │ │ ├── plugin_version/ │ │ │ │ ├── 10bit-paybuttons-easycard/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── 10bit-paybuttons-easycard-he_IL.po │ │ │ │ ├── 10bit-paybuttons-pelecard/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── 10bit-paybuttons-pelecard-he_IL.po │ │ │ │ ├── 24liveblog/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── 2fas/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── 2fas-pt_BR.po │ │ │ │ ├── 2fas-light/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── 2kb-amazon-affiliates-store/ │ │ │ │ │ └── version_log/ │ │ │ │ │ └── template/ │ │ │ │ │ └── admin/ │ │ │ │ │ └── version.phtml │ │ │ │ ├── 3-word-address-validation-field/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── 300form/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── 360-image/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── 360-product-viewer-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── wp360view.pot │ │ │ │ ├── 360-video/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── 404-page/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── 404-solution/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── 404-to-301/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── 404-to-301.pot │ │ │ │ ├── 4nton-extensions/ │ │ │ │ │ └── javascript_file/ │ │ │ │ │ └── assets/ │ │ │ │ │ └── js/ │ │ │ │ │ └── script.js │ │ │ │ ├── 4partners/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── 4partners-ru_RU.po │ │ │ │ ├── 9mail-wp-email-templates-designer/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── LayerSlider/ │ │ │ │ │ ├── language_translation_file/ │ │ │ │ │ │ └── languages/ │ │ │ │ │ │ └── LayerSlider-en_US.po │ │ │ │ │ └── locale_translation_file/ │ │ │ │ │ └── locales/ │ │ │ │ │ └── LayerSlider-en_US.po │ │ │ │ ├── Ultimate_VC_Addons/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── a-note-above-wp-dashboard-notes/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── a-z-listing/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.md │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── a-z-listing.pot │ │ │ │ ├── a3-portfolio/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── a4-barcode-generator/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── wpbcu-barcode-generator.pot │ │ │ │ ├── ab-human-time/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ab-human-time-it_IT.po │ │ │ │ ├── abandoned-cart-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── abandoned-cart-for-woocommerce.pot │ │ │ │ ├── abandoned-contact-form-7/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── abandoned-forms-contact-form-7.pot │ │ │ │ ├── above-the-fold-optimization/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── absolute-thumbnail-column/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── absolute-thumbnail-column.pot │ │ │ │ ├── academic-bloggers-toolkit/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── academic-bloggers-toolkit.pot │ │ │ │ ├── academy-starter-templates/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── academy-starter-templates.pot │ │ │ │ ├── accedeme-for-wp/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── wp-accedeme-es_ES.po │ │ │ │ ├── accelerated-mobile-pages/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── accept-2checkout-payments-using-contact-form-7/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── accept-2checkout-payments-using-contact-form-7.pot │ │ │ │ ├── accept-authorize-net-payments-using-contact-form-7/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── contact-form-7-authorize-net-addon.pot │ │ │ │ ├── accept-qpay-payments-using-contact-form-7/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── accept-qpay-payments-using-contact-form-7.pot │ │ │ │ ├── accept-sagepay-payments-using-contact-form-7/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── accept-sagepay-payments-using-contact-form-7.pot │ │ │ │ ├── accept-stripe-payments-using-contact-form-7/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── contact-form-7-stripe-addon.pot │ │ │ │ ├── accept-worldpay-payments-using-contact-form-7/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── contact-form-7-worldpay-addon.pot │ │ │ │ ├── access-guard/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── access-guard.pot │ │ │ │ ├── accessiblewp-skiplinks/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── accessiblewp-skiplinks.pot │ │ │ │ ├── accordion-blocks/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── accordion-faq-block/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── accordion-for-wp/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── accordion-for-wp.pot │ │ │ │ ├── aceide/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── acf-beautiful-flexible/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── acf-conditional-logic-advanced/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── composer.json │ │ │ │ ├── acf-dropzone/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── acf-dropzone.pot │ │ │ │ ├── acf-duplicate-repeater/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── acf-duplicate-repeater.pot │ │ │ │ ├── acf-field-selector-field/ │ │ │ │ │ ├── translation_file/ │ │ │ │ │ │ └── lang/ │ │ │ │ │ │ └── acf-field-selector-field-hu_HU.mo │ │ │ │ │ ├── translation_file2/ │ │ │ │ │ │ └── lang/ │ │ │ │ │ │ └── translation.po │ │ │ │ │ ├── translation_file3/ │ │ │ │ │ │ └── lang/ │ │ │ │ │ │ └── acf-field-selector-field-hu_HU.po │ │ │ │ │ └── translation_file_/ │ │ │ │ │ └── lang/ │ │ │ │ │ ├── acf-field-selector-field-hu_HU.mo │ │ │ │ │ ├── acf-field-selector-field-hu_HU.po │ │ │ │ │ └── translation.po │ │ │ │ ├── acf-fields-in-custom-table/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── acffict.pot │ │ │ │ ├── acf-flexible-content-extended/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── acf-flexible-content-preview/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── acf-openstreetmap-field/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── acf-openstreetmap-field.pot │ │ │ │ ├── acf-options-for-polylang/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── acf-pro-show-fields-shortcode/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── uk_UA.po │ │ │ │ ├── acf-quickedit-fields/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── acf-quickedit-fields.pot │ │ │ │ ├── acf-sidebar-selector-field/ │ │ │ │ │ ├── translation_file/ │ │ │ │ │ │ └── lang/ │ │ │ │ │ │ └── acf-sidebar-selector-field-hu_HU.mo │ │ │ │ │ ├── translation_file2/ │ │ │ │ │ │ └── lang/ │ │ │ │ │ │ └── translation.pot │ │ │ │ │ └── translation_file3/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── acf-sidebar-selector-field-hu_HU.po │ │ │ │ ├── acf-to-rest-api/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── composer.json │ │ │ │ │ └── composer_file_/ │ │ │ │ │ └── composer.json │ │ │ │ ├── ach-updates-manager/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ach_upn_manager.pot │ │ │ │ ├── aco-product-labels-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── aco-product-labels-for-woocommerce.pot │ │ │ │ ├── aco-variation-swatches-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── aco-variation-swatches-for-woocommerce.pot │ │ │ │ ├── aco-wishlist-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── aco-wishlist-for-woocommerce.pot │ │ │ │ ├── acobot-chatbot/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── acobot.pot │ │ │ │ ├── action-scheduler/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── active-directory-authentication-integration/ │ │ │ │ │ ├── translation_file/ │ │ │ │ │ │ └── active-directory-authentication-integration.pot │ │ │ │ │ ├── translation_file2/ │ │ │ │ │ │ └── languages/ │ │ │ │ │ │ └── default.mo │ │ │ │ │ └── translation_file3/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── default.po │ │ │ │ ├── active-plugins-on-multisite/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── active-plugins.pot │ │ │ │ ├── activecampaign-newsletter-subscription/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── default.pot │ │ │ │ ├── activity-log-gravity-forms/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── wsal-gravityforms.pot │ │ │ │ ├── activity-log-memberpress/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── activity-log-memberpress.pot │ │ │ │ ├── activity-log-tablepress/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── activity-log-tablepress.pot │ │ │ │ ├── activity-log-wp-seo/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── activity-log-wp-seo.pot │ │ │ │ ├── activitystream-extension/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── localization/ │ │ │ │ │ └── activitystream_extension.pot │ │ │ │ ├── actus-animated-tags/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── acumulus/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ └── siel/ │ │ │ │ │ │ └── acumulus/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── libraries/ │ │ │ │ │ └── Siel/ │ │ │ │ │ └── composer.json │ │ │ │ ├── acymailing-integration-for-uncanny-automator/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── language/ │ │ │ │ │ └── acymailing-integration-for-uncanny-automator.pot │ │ │ │ ├── ad-blocks/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ad-blocks.pot │ │ │ │ ├── ad-inserter/ │ │ │ │ │ ├── javascript_var/ │ │ │ │ │ │ └── js/ │ │ │ │ │ │ └── ad-inserter.js │ │ │ │ │ └── style_var/ │ │ │ │ │ └── css/ │ │ │ │ │ └── ad-inserter.css │ │ │ │ ├── ad-music-player-lite/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── plugin-name.pot │ │ │ │ ├── adamrob-parallax-scroll/ │ │ │ │ │ └── style_comment/ │ │ │ │ │ └── css/ │ │ │ │ │ └── parallax.css │ │ │ │ ├── adaptive-learning-with-learndash/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── adblock-notify-by-bweb/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── add-amazon-block/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── add-from-server/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── add-meta-tags/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── add-meta-tags.pot │ │ │ │ ├── add-on-cf7-for-airtable/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── wpc-wpcf7-at.pot │ │ │ │ ├── add-on-cf7-for-notion/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── wpc-wpcf7-ntn.pot │ │ │ │ ├── add-on-contact-form-7-mailpoet/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── add-on-gravity-forms-mailpoet/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── add-on-woocommerce-mailpoet/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── add-product-frontend-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bytes_product_frontend.pot │ │ │ │ ├── additional-block-styles/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── additional-content/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── additional-content.pot │ │ │ │ ├── additional-product-fields-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── rednaowooextraproduct.pot │ │ │ │ ├── addon-gravityforms-sendinblue-free/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── addon-gravityforms-sendinblue-free.pot │ │ │ │ ├── addon-library/ │ │ │ │ │ └── release_log/ │ │ │ │ │ └── release_log.txt │ │ │ │ ├── addon-library-layouts/ │ │ │ │ │ └── release_log/ │ │ │ │ │ └── release_log.txt │ │ │ │ ├── addon-stripe-with-contact-form-7/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── stripe-with-contact-form-7.pot │ │ │ │ ├── addonify-quick-view/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── address-autocomplete-google-places/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── address-autocomplete.pot │ │ │ │ ├── addressfinder-woo/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ │ └── javascript_var/ │ │ │ │ │ └── addressfinder.js │ │ │ │ ├── addy-autocomplete-woocommerce/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── adl-team/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── at.pot │ │ │ │ ├── admin-atlex-cloud/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ru_RU.pot │ │ │ │ ├── admin-bar/ │ │ │ │ │ ├── translation_file/ │ │ │ │ │ │ └── lang/ │ │ │ │ │ │ └── ru_RU.po │ │ │ │ │ └── translation_file2/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── ru_RU.mo │ │ │ │ ├── admin-bar-backend-search/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── ab-backend-search-de_DE.po │ │ │ │ ├── admin-category-filter/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── post-category-filter.pot │ │ │ │ ├── admin-color-schemes/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── admin-dashboard-last-edits/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── admin-email-as-from-address/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── admin-help-docs/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── admin-live-search/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── admin-live-search.pot │ │ │ │ ├── admin-menu-manager/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── admin-menu-manager.pot │ │ │ │ ├── admin-menu-reorder/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── admin-notes-wp/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── wp-admin-notes.pot │ │ │ │ ├── admin-only-jetpack/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── admin-only-jetpack.pot │ │ │ │ ├── admin-todotastic/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── admin-todotastic.pot │ │ │ │ ├── admin-user-control/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── admin-user-control-ja.po │ │ │ │ ├── admitad-tracking/ │ │ │ │ │ ├── translation_file/ │ │ │ │ │ │ └── languages/ │ │ │ │ │ │ └── admitadtracking.pot │ │ │ │ │ ├── translation_file2/ │ │ │ │ │ │ └── languages/ │ │ │ │ │ │ └── admitadtracking-ru_RU.mo │ │ │ │ │ └── translation_file3/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── admitadtracking-ru_RU.po │ │ │ │ ├── adobe-xmp-for-wp/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── adobe-xmp-for-wp.pot │ │ │ │ ├── adplugg/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── adrecord-affiliate/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── adrecord-affiliate.pot │ │ │ │ ├── adshares/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── adsimple-vote/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── adsimple-vote-de_DE.po │ │ │ │ ├── advance-cash-on-delivery-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── coderockz-wc-advance-cod-free.pot │ │ │ │ ├── advance-custom-html/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── custom-html.pot │ │ │ │ ├── advanced-category-column/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── advanced-cc-es_ES.po │ │ │ │ ├── advanced-custom-fields-table-field/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── acf-table-pl_PL.po │ │ │ │ ├── advanced-custom-types-for-divi/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── en_US.po │ │ │ │ ├── advanced-database-cleaner/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── advanced-db-cleaner.pot │ │ │ │ ├── advanced-google-recaptcha/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── advanced-google-recaptcha.pot │ │ │ │ ├── advanced-image-comparison-for-elementor/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── advanced-options-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── i18n/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── advanced-options-for-woocommerce-he_IL.po │ │ │ │ ├── advanced-post-excerpt/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── advanced-quiz/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── advanced-random-posts-widget/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── advanced-random-posts-widget.pot │ │ │ │ ├── advanced-testimonial-carousel-for-elementor/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── advanced-testimonial-for-wp/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── itt_testimonial_textdomain-en_US.po │ │ │ │ ├── advanced-twitter-profile-widget/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── atpw-pl_PL.po │ │ │ │ ├── advanced-wp-table/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── advanced-wp-table.pot │ │ │ │ ├── advanced-xprofile-fields-for-buddypress/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── advanced-xprofile-fields-for-buddypress.pot │ │ │ │ ├── af-companion/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── affiliate-bridge/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── affiliate-bridge.pot │ │ │ │ ├── affiliate-links-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── uk_UA.po │ │ │ │ ├── affiliatebooster-blocks/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── affiliates/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── affiliates-buddypress/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── affiliates-events-manager/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── affiliates-formidable/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── affiliates-ninja-forms/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── affiliates-woocommerce-light/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── affiliatewp-blocks/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── affilicious/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── affliates-manager-prime-for-wc-lite/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ciwcamp-affliate-manager.pot │ │ │ │ ├── afi-to-integrations/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── after-comment-prompts/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── ag-twitter/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── age-verify/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── age-verify.pot │ │ │ │ ├── aged-content-message/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── composer.json │ │ │ │ ├── agile-whatsapp-share/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── agile_whatsapp_share.po │ │ │ │ ├── agnoplay/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── nl.po │ │ │ │ ├── agy-verification/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── agy-verification.pot │ │ │ │ ├── ahachat-messenger-marketing/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── ahime-image-printer/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── ai-bot/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ai-bot.pot │ │ │ │ ├── ai-co-pilot-for-wp/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── ai-contact-form/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── ai-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── i18n/ │ │ │ │ │ └── firstmedia-ai-text-es_VE.po │ │ │ │ ├── ai-image-generator/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── ai-scribe/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── aiscribe.pot │ │ │ │ ├── aiaibot/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── aiaibot.pot │ │ │ │ ├── aio-for-divi/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── en_US.po │ │ │ │ ├── air-wp-sync/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── airwpsync-fr_FR.po │ │ │ │ ├── aircash-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── aircash-for-woocommerce-hr.po │ │ │ │ ├── airstory/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── airstory.pot │ │ │ │ ├── ajax-contact-forms/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── acfw30-en_US.po │ │ │ │ ├── ajax-load-more-by-bkker-theme/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── en_US.po │ │ │ │ ├── ajax-search-bar/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── ajaxify-filters/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── language/ │ │ │ │ │ └── ajaxify-filters-en_US.po │ │ │ │ ├── alceris-analytics/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── alerts-block/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── ali2woo-lite/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── ali2woo-migration-tool/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── align-text-edge/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── align-text-edge.pot │ │ │ │ ├── alkubot/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── Alkubot-en_US.po │ │ │ │ ├── all-embed-addons-for-elementor/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── allembed.pot │ │ │ │ ├── all-in-all-image-hover-effect/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── cu-framework/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── zh_CN.po │ │ │ │ ├── all-in-one-event-calendar/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── language/ │ │ │ │ │ └── all-in-one-event-calendar.po │ │ │ │ ├── all-in-one-forms/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easycalculationform.pot │ │ │ │ ├── all-in-one-music-player/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── all-in-one-music-player.pot │ │ │ │ ├── all-in-one-redirection/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── all-in-one-redirection.pot │ │ │ │ ├── allada-tshirt-designer-for-woocommerce/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── allow-javascript-in-text-widgets/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── allow-javascript-in-text-widgets.pot │ │ │ │ ├── allpay-payment-gateway/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── allpay-payment-gateway-ru_RU.po │ │ │ │ ├── alnp-facebook-pixel-tracking/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── alnp-facebook-pixel-tracking.pot │ │ │ │ ├── alo-easymail/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── alpha-google-map-for-elementor/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── alpha-google-map-for-elementor.pot │ │ │ │ ├── alpha-insights-intelligent-profit-reports-for-woocommerce/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── alpha-price-table-for-elementor/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── alpha-price-table-for-elementor.pot │ │ │ │ ├── alpha-single-product-for-elementor/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── alpha-single-product-for-elementor.pot │ │ │ │ ├── altapay-for-woocommerce/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── always-allow-admin-comments/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── always-visible-floating-product-publish-button-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── floating-product-publish-button-it_IT.po │ │ │ │ ├── am-lottieplayer/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── amazing-portfolio/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── inc/ │ │ │ │ │ └── framework/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cs-framework.pot │ │ │ │ ├── amazon-fps/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ppdg.pot │ │ │ │ ├── amazon-product-in-a-post-plugin/ │ │ │ │ │ └── css_file/ │ │ │ │ │ └── css/ │ │ │ │ │ └── amazon-default-plugin-styles.css │ │ │ │ ├── amnav-menu-control/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── amnav-menu-control.pot │ │ │ │ ├── amwal-checkout/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── amzft/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── analogwp-templates/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ang.pot │ │ │ │ ├── analytics-for-cloudflare/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── ananas/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── angelleye-paypal-invoicing/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── angelleye-paypal-invoicing-en_US.po │ │ │ │ ├── ani-mate-animation-extension/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── animate-blocks/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── animate-blocks.pot │ │ │ │ ├── animated-blocks/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── animation-block/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── announce-on-publish/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── announce-on-publish-es_ES.po │ │ │ │ ├── annytab-photoswipe/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── annytab-photoswipe.pot │ │ │ │ ├── anrghg/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── anrghg-en_GB.po │ │ │ │ ├── anspress-question-answer/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── anspress-question-answer.pot │ │ │ │ ├── anti-ddosbot-recaptcha-protection/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── anwp-post-grid-for-elementor/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── anycomment/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── anycomment-analytics/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── anything-order-by-terms/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── aoplayer/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── aoplayer.pot │ │ │ │ ├── apcu-manager/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── api-cache-pro/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── api-key-for-google-maps/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── gmaps-api-key.po │ │ │ │ ├── apijoin-gumroad/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── apiki-wp-care/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── aplazame/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── i18n/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── aplazame.pot │ │ │ │ ├── aplazo-payment-gateway/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── i18n/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── aplazo-payment-gateway-es_MX.po │ │ │ │ ├── apollo13-framework-extensions/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── app-log/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── aplg.pot │ │ │ │ ├── appconsent-cmp-sfbx/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── appconsent-cmp-sfbx.pot │ │ │ │ ├── appmaps/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── appmaps.pot │ │ │ │ ├── appsy/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── apx-link-status/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── apx-link-status.pot │ │ │ │ ├── ar-contactus/ │ │ │ │ │ └── changelog/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── arabic-webfonts/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── composer.json │ │ │ │ ├── archive-disabler/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── archive-disabler.pot │ │ │ │ ├── archive-title/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── archiver/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── archiver.pot │ │ │ │ ├── archives-by-category-and-date/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── archives-by-category-and-date.pot │ │ │ │ ├── arforms-form-builder/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── arforms-form-builder-ja_JP.po │ │ │ │ ├── arkam-lite/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ar.po │ │ │ │ ├── arlo-training-and-event-management-system/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── armember-membership/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ARMember-en_US.po │ │ │ │ ├── array-partition/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── arrayforms/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── arvancloud-cdn/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── arvancloud-cdn.pot │ │ │ │ ├── arvancloud-vod/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── arvancloud-vod.pot │ │ │ │ ├── arya-license-manager/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── arya-license-manager.pot │ │ │ │ ├── ascendoor-logo-slide/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ascendoor-logo-slide.pot │ │ │ │ ├── ascendoor-metadata-manager/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ascendoor-metadata-manager.pot │ │ │ │ ├── ask-faq/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ask-faq-pro.pot │ │ │ │ ├── ask-me-anything-anonymously/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ask-me-anything-anonymously.pot │ │ │ │ ├── asmember/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── asmember-de_DE.po │ │ │ │ ├── assign-missing-categories/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── assign-missing-categories.pot │ │ │ │ ├── asterisk-web-callback/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── z_asteriskcallback-ru_RU.po │ │ │ │ ├── astra-sites/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── astra-sites.pot │ │ │ │ ├── astra-widgets/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── astra-widgets.pot │ │ │ │ ├── asura-connector/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── athemes-blocks/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── athemes-blocks.pot │ │ │ │ ├── atlas-content-modeler/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── atlas-content-modeler.pot │ │ │ │ ├── atom-featured-image/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── atomic-blocks/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── atomic-blocks.pot │ │ │ │ ├── atr-inline-rtl-ltr/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── attachment-file-icons/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── attachment-file-icons-en_US.po │ │ │ │ ├── attachment-usage/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── attachment-usage-de_DE.po │ │ │ │ ├── attribute-stock-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── attribute-stock-for-woocommerce.pot │ │ │ │ ├── audio-widget/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── audio-widget.pot │ │ │ │ ├── audius-block/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── aurora-heatmap/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── aurora-heatmap-ja.po │ │ │ │ ├── auth0/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── authentiq/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── author-bio-box/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── author-bio-box.pot │ │ │ │ ├── author-images/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── author-images.pot │ │ │ │ ├── authors-autocomplete-meta-box/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── authors-autocomplete-meta-box-es_ES.po │ │ │ │ ├── auto-animateimage/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── animateimage-ja.po │ │ │ │ ├── auto-category-for-posts/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── auto-category-for-posts.pot │ │ │ │ ├── auto-date-year-month/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── auto-delete-applications-add-on-for-wp-job-openings/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── auto-delete-wp-job-openings.pot │ │ │ │ ├── auto-deselect-uncategorized/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── auto-deselect-uncategorized.pot │ │ │ │ ├── auto-load-next-post/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── auto-load-next-post.pot │ │ │ │ ├── auto-login-with-cloudflare/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── auto-login-with-cloudflare-zh_TW.po │ │ │ │ ├── auto-menu-from-pages/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── auto-menu-from-pages.pot │ │ │ │ ├── auto-post-woocommerce-products/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── auto-post-woocommerce-products-es_ES.po │ │ │ │ ├── autoclear-autoptimize-cache/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── autoclear-autoptimize-cache.pot │ │ │ │ ├── autoclose/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── autoclose-en_US.pot │ │ │ │ ├── autocomplete-wc-order-status/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── autodate/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── default.pot │ │ │ │ ├── autodescription/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── language/ │ │ │ │ │ └── autodescription.pot │ │ │ │ ├── automatic-image-uploader/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── aiu.pot │ │ │ │ ├── automatic-post-categories/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── automatic-post-categories.pot │ │ │ │ ├── automatically-add-product-to-cart/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── automizy-gravity-forms/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── automizy-gravity-forms.pot │ │ │ │ ├── autoptimize-criticalcss/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ao_critcss_aas.pot │ │ │ │ ├── autoremove-attachments/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── autotags/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── AutoTags.pot │ │ │ │ ├── avadanta-companion/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── avadanta-companion.pot │ │ │ │ ├── avaibook/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── avaibook-pt_PT.po │ │ │ │ ├── avalon23-products-filter-for-woocommerce/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── avangpress/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── avartan-slider-lite/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── avartan-slider-lite.pot │ │ │ │ ├── avatarplus/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── avatarplus-de_DE.po │ │ │ │ ├── avatars-meta-box/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.md │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── avatars-meta-box.pot │ │ │ │ ├── avif-support/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── avif-support.pot │ │ │ │ ├── aw-woocommerce-kode-pembayaran/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── aw-woocommerce-pos/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── aw-woocommerce-tiki/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── aweos-wp-lock/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── awesome-hooks/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── awesome-instant-search/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── translation/ │ │ │ │ │ └── ais-es_ES.po │ │ │ │ ├── awesome-support/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── awesome-support.pot │ │ │ │ ├── awesome-surveys/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── awesome-surveys-hu_HU.po │ │ │ │ ├── awp-booking-calendar/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── awsa-quick-buy/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── awsa-quick-buy.pot │ │ │ │ ├── awsa-shipping/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── awsa-shipping-fa_IR.po │ │ │ │ ├── awstats-script/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── awstats-script.pot │ │ │ │ ├── ax-scrollto-top/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── ayecode-connect/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ayecode-connect-en_US.po │ │ │ │ ├── b-productiv-lite/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── b-slider/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── sliders-en_US.po │ │ │ │ ├── b-tiktok-feed/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── tiktok.pot │ │ │ │ ├── b2b-e-commerce-lite/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── b2binpay-payments-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── b2binpay-payments-for-woocommerce.pot │ │ │ │ ├── ba-book-everything/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ba-book-everything.pot │ │ │ │ ├── ba-event/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ba-event.pot │ │ │ │ ├── baap-mobile-version/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── baap-mobile-version.pot │ │ │ │ ├── back-in-stock-notifications-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── back-in-stock-notifications-for-woocommerce-en_US.po │ │ │ │ ├── back-in-stock-notifier-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cwginstocknotifier-cz_CZ.po │ │ │ │ ├── back-top/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── setting-page/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bn_BD.po │ │ │ │ ├── backdrop-post-types/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── backdrop-post-types.pot │ │ │ │ ├── backend-startpage-customizer/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── backend-startpage-customizer-de_DE.po │ │ │ │ ├── background-music-player-lite/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── plugin-name.pot │ │ │ │ ├── backstage/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── backstage.pot │ │ │ │ ├── backupbuddy/ │ │ │ │ │ └── history_log/ │ │ │ │ │ └── history.txt │ │ │ │ ├── backupwordpress/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── backupwordpress.pot │ │ │ │ ├── badgeos-edd-integration/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── badgeos-lifterlms-integration/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── badgeos-nomination-submission-add-on/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── badgeos-rest-api-addon/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── banana-faq/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── banana-faq.pot │ │ │ │ ├── banggood-dropshipping/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── bangla-sidebar-login/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── I18n/ │ │ │ │ │ └── bn-sidebar-login.pot │ │ │ │ ├── bankval/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── banner-alerts/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── banner-alerts.pot │ │ │ │ ├── banner-slider-for-advertisement/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── wpwbs-en_US.po │ │ │ │ ├── basic-alerts/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── bayarcash-givewp/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bayarcash-givewp.pot │ │ │ │ ├── bb-gallery/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bb_gallery.pot │ │ │ │ ├── bb-header-footer/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bb-header-footer.pot │ │ │ │ ├── bb-login-module/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── login-module-for-bb.pot │ │ │ │ ├── bb-toolbox/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── bb-vapor-modules/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bb-vapor-modules.pot │ │ │ │ ├── bbpress-digest/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bbp-digest.pot │ │ │ │ ├── bbpress-improved-statistics-users-online/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── bbpressmoderation/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── bbredirector/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── default.pot │ │ │ │ ├── bdthemes-prime-slider-lite/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── be-shortcodes/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── be-shortcodes.pot │ │ │ │ ├── bea-activator/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.MD │ │ │ │ ├── beastiepress/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── beastiepress-en_US.po │ │ │ │ ├── beautiful-custom-invoices/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── beautimour-kit/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── beautimour-kit.pot │ │ │ │ ├── beaver-builder-lite-version/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── beaverlodge-pushmenu/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── default.po │ │ │ │ ├── beer-blocks/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── before-after-image-block/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── before-after-images-for-divi/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── en_US.po │ │ │ │ ├── bellows-accordion-menu/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bellows.pot │ │ │ │ ├── beonepage-lite/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── beonepage-lite.pot │ │ │ │ ├── bertha-ai-free/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── best-restaurant-menu-by-pricelisto/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── best-suggestion-boxes/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── best-suggestion-boxes.pot │ │ │ │ ├── best-testimonial/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── best-testimonial.pot │ │ │ │ ├── bestprice-analytics-integration/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── bethemesme/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bethemesme.pot │ │ │ │ ├── better-admin-users-search/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── i18n/ │ │ │ │ │ └── baus.pot │ │ │ │ ├── better-comments/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── better-comments-reply-manager/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── better-comments-reply-manager.pot │ │ │ │ ├── better-file-editor/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── better-font-awesome/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── better-font-awesome.pot │ │ │ │ ├── better-formats/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── betterformats.pot │ │ │ │ ├── better-plugin-recommendations/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── better-plugin-recommendations.pot │ │ │ │ ├── better-rest-api-featured-images/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── better-rest-api-featured-images.pot │ │ │ │ ├── better-rest-endpoints/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── better-reviews-for-woocommerce/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── woo-better-reviews.pot │ │ │ │ ├── better-website-performance/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── better-website-performance.pot │ │ │ │ ├── better-wp-security/ │ │ │ │ │ └── history_log/ │ │ │ │ │ └── history.txt │ │ │ │ ├── better-yourls/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── better-yourls.pot │ │ │ │ ├── beyond-identity-passwordless/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── bft-autoresponder/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── bft-autoresponder.pot │ │ │ │ ├── bhoot-blocks-wp-job-manager/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── blocks-for-wp-job-manager.pot │ │ │ │ ├── bible-online-popup/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── BOP.pot │ │ │ │ ├── bigcommerce/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── bigly-dropship/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── composer.json │ │ │ │ ├── bike-rental/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bike-rental-ru_RU.po │ │ │ │ ├── billingo/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── billplz-for-edd/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── composer.json │ │ │ │ ├── bim-ba/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lib/ │ │ │ │ │ └── cmb2/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cmb2.pot │ │ │ │ ├── bing-translator/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bing-translator-bg_BG.po │ │ │ │ ├── bip-pages/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bip-pages.pot │ │ │ │ ├── birthday-widget-for-buddypress/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── bit-integrations/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bit-integrations.pot │ │ │ │ ├── bit-social/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bit-social.pot │ │ │ │ ├── bitform/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bitform.pot │ │ │ │ ├── black-login-screen/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── langs/ │ │ │ │ │ └── black_login_screen-en_GB.po │ │ │ │ ├── black-studio-tinymce-widget/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── black-studio-tinymce-widget.pot │ │ │ │ ├── blade/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── composer.json │ │ │ │ ├── blank-footnotes/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── blaze-checkout/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── bleumi-pay-crypto-payments-for-woocommerce/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── composer.json │ │ │ │ ├── blimply/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lib/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── blimply.pot │ │ │ │ ├── blkcanvas-easy-attachments/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── block-catalog/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── block-editor-gallery-slider/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── block-editor-gallery-slider.pot │ │ │ │ ├── block-editor-navigator/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── block-editor-navigator.pot │ │ │ │ ├── block-editor-search-replace/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── block-editor-search-replace.pot │ │ │ │ ├── block-enhancements/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── block-enhancements.pot │ │ │ │ ├── block-for-mailchimp/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── mailchimp.pot │ │ │ │ ├── block-for-masonry-gallery/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── block-for-woo-product-table/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── block-for-woo-product-table.pot │ │ │ │ ├── block-for-yandex-sovetnik/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── antisovet-ru_RU.po │ │ │ │ ├── block-layouts/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── block-minimap/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── block-pattern-builder/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── block-spammers/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── wbs.pot │ │ │ │ ├── block-xray-attributes/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── blockart-blocks/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── blockart.pot │ │ │ │ ├── blockbuddy/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── blockify/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── assets/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── blockify.pot │ │ │ │ ├── blockmeister/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── blockons/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── blockons.pot │ │ │ │ ├── blockprotocol/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── blockq/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── locale/ │ │ │ │ │ └── blockq.pot │ │ │ │ ├── blocks-by-projects-engine/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── blocks-export-import/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── blocks-for-eventbrite/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── blocks-for-shopengine/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── shopengine-gutenberg-addon.pot │ │ │ │ ├── blocks-for-wp-editor/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── blocks-ultimate/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── blogging-tools/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── blogging-tools.pot │ │ │ │ ├── bloglovin-follow/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bloglovin_follow_trans_domain.pot │ │ │ │ ├── blogsqode-posts/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── blogsqode.pot │ │ │ │ ├── blogware-importer/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── blogware-importer.pot │ │ │ │ ├── blossom-recipe-maker/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── blossom-recipe-maker.pot │ │ │ │ ├── blossomthemes-email-newsletter/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── blossomthemes-email-newsletter.pot │ │ │ │ ├── blossomthemes-toolkit/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── blossomthemes-toolkit.pot │ │ │ │ ├── blue-hat-cdn/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── blue-hat-cdn-pt_BR.po │ │ │ │ ├── bluebox-pricing-table-block/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── bluehost-site-migrator/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bluehost-site-migrator.pot │ │ │ │ ├── bma-lite-appointment-booking-and-scheduling/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── rtwbmal-book-my-appointment.pot │ │ │ │ ├── body_pattern_passive_all.html │ │ │ │ ├── boleto-cora/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── bolt-checkout-bigcommerce/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── bonaire/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── boo-recipes/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── boo-recipes-de_DE.po │ │ │ │ ├── book-block/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── book-review/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── book-review.pot │ │ │ │ ├── booking-activities/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── booking-activities.pot │ │ │ │ ├── booking-x/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bookingx.pot │ │ │ │ ├── bookingcom-official-searchbox/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bookingcom-official-searchbox-ru_RU.po │ │ │ │ ├── bookingcom-product-helper/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bookingcom-product-helper-en_US.po │ │ │ │ ├── bookingpress-appointment-booking/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bookingpress-appointment-booking-en_US.po │ │ │ │ ├── bookmark-export/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── bookmark-export-de_DE.po │ │ │ │ ├── bookwize-booking-form/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── boomerang/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── boomerang.pot │ │ │ │ ├── booster-for-elementor/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── elementor-booster.pot │ │ │ │ ├── booster-pack-for-divi/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── en_US.po │ │ │ │ ├── boostimer/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── boostimer.pot │ │ │ │ ├── bootstrap-for-contact-form-7/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── bopo-woo-product-bundle-builder/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── bot-for-telegram-on-woocommerce/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── bounce-handler-mailpoet/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── bowe-codes/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bowe-codes.pot │ │ │ │ ├── boxtal-connect/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── Boxtal/ │ │ │ │ │ └── BoxtalConnectWoocommerce/ │ │ │ │ │ └── translation/ │ │ │ │ │ └── boxtal-connect-fr_FR.po │ │ │ │ ├── bp-activity-social-share/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── buddypress-share.pot │ │ │ │ ├── bp-avatar-suggestions/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-avatar-suggestions.pot │ │ │ │ ├── bp-beta-tester/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-beta-tester.pot │ │ │ │ ├── bp-block-users/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-block-users.pot │ │ │ │ ├── bp-bookmarklet/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-bookmarklet.pot │ │ │ │ ├── bp-create-group-type/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-add-group-types.pot │ │ │ │ ├── bp-edit-user-profiles/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-edit-user-profiles.pot │ │ │ │ ├── bp-emails-for-bbp/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-emails-for-bbp.pot │ │ │ │ ├── bp-events-calendar/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-events-calendar.pot │ │ │ │ ├── bp-forum-notifier/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-forum-notifier-sv_SE.po │ │ │ │ ├── bp-group-sites/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-group-sites.pot │ │ │ │ ├── bp-groups-civicrm-sync/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-groups-civicrm-sync.pot │ │ │ │ ├── bp-my-home/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-my-home.pot │ │ │ │ ├── bp-new-order-notifications-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-new-order-notification.pot │ │ │ │ ├── bp-order-date-time-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-woopick-delivery.pot │ │ │ │ ├── bp-post-from-anywhere/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-post-from-anywhere.pot │ │ │ │ ├── bp-premiums/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-premiums.pot │ │ │ │ ├── bp-profile-field-duplicator/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-profile-field-duplicator.pot │ │ │ │ ├── bp-reactions/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-reactions.pot │ │ │ │ ├── bp-search-block/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-search-block-fr_FR.po │ │ │ │ ├── bp-security-check/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-security-check.pot │ │ │ │ ├── bp-show-friends/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-show-friends.pot │ │ │ │ ├── bp-social-connect/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── bp-sticky-groups/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-sticky-groups.pot │ │ │ │ ├── bp-xprofile-rich-text-field/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-xprofile-rich-text-field.pot │ │ │ │ ├── bpost-shipping/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── composer.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bpost_shipping.pot │ │ │ │ ├── bps-splide-slider-block/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bps-slider-block.pot │ │ │ │ ├── bpwp-set-homepages/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── plugin.pot │ │ │ │ ├── braft-woo-shipping-packer/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── braft-woo-shipping-packer.pot │ │ │ │ ├── branda-white-labeling/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ub.pot │ │ │ │ ├── brandnestor/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── brandnestor-el.po │ │ │ │ ├── breadcrumb-trail/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.md │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── breadcrumb-trail.pot │ │ │ │ ├── bridge-tournament/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bridge-tournament-fr_FR.po │ │ │ │ ├── bridgy-publish/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bridgy.pot │ │ │ │ ├── brightcove-video-connect/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── brightcove.pot │ │ │ │ ├── brix-page-builder/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── brix.pot │ │ │ │ ├── broken-links-remover/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── browser-title-bar-animation/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── wp-tbas.pot │ │ │ │ ├── browser-window-stats/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── browser-window-stats.pot │ │ │ │ ├── brozzme-blurb-lightbox-module-in-divi/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── brozzme-lightbox-blurb-fr_FR.po │ │ │ │ ├── brozzme-change-username/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── brozzme-change-username.pot │ │ │ │ ├── brozzme-colorize/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── brozzme-colorize.pot │ │ │ │ ├── brozzme-fullwidth-divi/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── brozzme-fullwidth-divi.pot │ │ │ │ ├── bstone-demo-importer/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── btb-full-width-section/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── btcpaywall/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── bu-learning-blocks/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bu-learning-blocks.pot │ │ │ │ ├── bu-navigation/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bu-navigation.pot │ │ │ │ ├── bu-section-editing/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bu-section-editing.pot │ │ │ │ ├── buddy-bbpress-support-topic/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── buddypress/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── buddypress.pot │ │ │ │ ├── buddypress-activity-tags/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-activity-tags-sr_RS.po │ │ │ │ ├── buddypress-compliments/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── change_log.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-compliments-en_US.po │ │ │ │ ├── buddypress-docs/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── buddypress-docs.pot │ │ │ │ ├── buddypress-media/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── buddypress-media.po │ │ │ │ ├── buddypress-message-attachment/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bp-msgat.pot │ │ │ │ ├── buddypress-profile-progression/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bppp-de_DE.po │ │ │ │ ├── buddypress-registration-groups-1/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── buddypress-registration-groups.pot │ │ │ │ ├── buffer-my-post/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── buffer-my-post.pot │ │ │ │ ├── bugherd-dashboard/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── plugin-name.pot │ │ │ │ ├── bulk-delete/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bulk-delete.pot │ │ │ │ ├── bulk-edit-categories-tags/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── bulk-edit-categories-tags.pot │ │ │ │ ├── bulk-edit-events/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── bulk-edit-events.pot │ │ │ │ ├── bulk-edit-posts-on-frontend/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── bulk-edit-posts-on-frontend.pot │ │ │ │ ├── bulk-edit-user-profiles-in-spreadsheet/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── bulk-edit-user-profiles-in-spreadsheet.pot │ │ │ │ ├── bulk-plugin-installation/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bulk-plugin-installation-es_ES.po │ │ │ │ ├── bulk-plugin-toggle/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── bulk-term-editor/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bulk-term-editor.pot │ │ │ │ ├── bulkpress-export/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bulkpress-export.pot │ │ │ │ ├── bulky-bulk-edit-products-for-woo/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── bulletproof-security/ │ │ │ │ │ └── config_comment/ │ │ │ │ │ └── admin/ │ │ │ │ │ └── htaccess/ │ │ │ │ │ └── wpadmin-secure.htaccess │ │ │ │ ├── bumbal/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bumbal.pot │ │ │ │ ├── bunnycdnbunnyapi/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── buscape-wp-related-products/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── BWPRP-pt_BR.po │ │ │ │ ├── business-block-widget/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── business-block-widget.pot │ │ │ │ ├── business-directory-plugin/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── WPBDM.pot │ │ │ │ ├── business-profile/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── business-profile.pot │ │ │ │ ├── business-review/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── business-reviews.pot │ │ │ │ ├── business-website-helper/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── button-with-fontawesome-icons-by-like-agency/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── lbfa-pl_PL.po │ │ │ │ ├── buttons-block/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── buy-now-button-direct-checkout-quick-checkoutpurchase-button-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── buy-now-direct-checkout-for-woocommerce-hi_IN.po │ │ │ │ ├── bwp-recaptcha/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── bwp-recaptcha.pot │ │ │ │ ├── bxslider-integration/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bxsg.pot │ │ │ │ ├── bypass-iframe-height-limit/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── cab-fare-calculator/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── tblight.pot │ │ │ │ ├── cache-control-by-cacholong/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── cache-images/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cache-images-fa_IR.po │ │ │ │ ├── cache-seo-speed/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── cal-embedder-lite/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── language/ │ │ │ │ │ └── cal-embedder-lite.pot │ │ │ │ ├── calculated-fields-for-acf/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── calculated-fields-for-acf.pot │ │ │ │ ├── calculated-fields-form/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── caldera-forms/ │ │ │ │ │ └── javascript_comment/ │ │ │ │ │ └── assets/ │ │ │ │ │ └── js/ │ │ │ │ │ └── vue.js │ │ │ │ ├── calendarista-basic-edition/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── calendarista-de_DE.po │ │ │ │ ├── call-to-action-block/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── callme-form/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── callme-plugin-ru_RU.po │ │ │ │ ├── campaign-monitor-dashboard/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── campaign-monitor-dashboard.pot │ │ │ │ ├── candescent/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── canto/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── capture-and-convert/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── carbon-fields/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── card-oracle/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── card-oracle.pot │ │ │ │ ├── carmo-woo-product-gtin/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── carmo-product-gtin-for-woocommerce-pt_PT.po │ │ │ │ ├── carousel-glider-js/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── cart-rest-api-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cart-rest-api-for-woocommerce.pot │ │ │ │ ├── cartflows/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cartflows.pot │ │ │ │ ├── casso-tu-dong-xac-nhan-thanh-toan-chuyen-khoan-ngan-hang/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── casso-wordpress-plugin-vi.po │ │ │ │ ├── catalog-mode-pricing-enquiry-forms-promotions/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── wmodes-tdm.pot │ │ │ │ ├── categorize-pages/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── categorize-your-wishlist-for-woocomerceposts-custom-post-types/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── categorize-wishlist-woocomerce-posts-custom-post-types-ja.po │ │ │ │ ├── category-archives-block/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── category-tag-tidy/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── category-tag-tidy-en.po │ │ │ │ ├── catenis-blocks/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── catenis-blocks.pot │ │ │ │ ├── catna-woo-name-your-price-and-offers/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── cbqe-edit-flow/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cbqe-edit-flow.pot │ │ │ │ ├── cbtwittercard/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cbtwittercard-en_US.po │ │ │ │ ├── cbxdropboxfilechooser/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cbxdropboxfilechooser-en_GB.po │ │ │ │ ├── cbxform/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cbxform-en_GB.po │ │ │ │ ├── cbxpoll/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cbxpoll-en_US.po │ │ │ │ ├── cbxwooextendedorders/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cbxwooextendedorders-en_GB.po │ │ │ │ ├── cbxwpslack/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cbxwpslack-en_GB.po │ │ │ │ ├── cc-auto-activate-plugins/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── composer.json │ │ │ │ ├── cc-manga-comic-reader/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lib/ │ │ │ │ │ └── codestar-framework/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bn_BD.po │ │ │ │ ├── cc-mu-plugins-loader/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── composer.json │ │ │ │ ├── centrobill-payment-gateway/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── cestina-zalomeni-radku/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── bozimediazalomeni.pot │ │ │ │ ├── cf-7-gutenberg/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cf-7-gutenberg.pot │ │ │ │ ├── cf-geoplugin/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── cf-image-resizing/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── cf-images/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cf-images.pot │ │ │ │ ├── cf7-blocks/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── cf7-conditional-load/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── cf7-conditional-load.pot │ │ │ │ ├── cf7-constant-contact-fields-mapping/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cf7-constant-contact-fields-mapping.pot │ │ │ │ ├── cf7-custom-validation-message/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cf7-custom-validation-message.pot │ │ │ │ ├── cf7-editor-button/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── contact-form-7-editor-button.pot │ │ │ │ ├── cf7-facebook-contactor/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── gsconnector-en_US.po │ │ │ │ ├── cf7-file-download/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cf7-file-download.pot │ │ │ │ ├── cf7-google-sheets-connector/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cf7-google-sheets-connector-en_US.po │ │ │ │ ├── cf7-mountstride-crm-integration/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cf7-to-mountstride.pot │ │ │ │ ├── cf7-proxy-ip/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── cf7-repeatable-fields/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── cf7-sendinblue-opt-in-checkbox/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── cf7-signature/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cf7-signature.pot │ │ │ │ ├── cf7-sms/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cf7-sms.pot │ │ │ │ ├── cfonlinetest/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cfonlinetest-es.po │ │ │ │ ├── chained-product-for-woocommerce/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── chained-quiz/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── chained-quiz.pot │ │ │ │ ├── chamber-dashboard-events-calendar/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── change-password-e-mail/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── change-password-e-mail.pot │ │ │ │ ├── change-payments-account/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── change-payments-account.pot │ │ │ │ ├── chaport/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── charitable/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── i18n/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── charitable.pot │ │ │ │ ├── charts-blocks/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── chat-for-aesop-story-engine/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ase-chat.pot │ │ │ │ ├── chat-robot/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── plugin-chat-robot.pot │ │ │ │ ├── chatra-live-chat/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── chatra-live-chat-ru_RU.po │ │ │ │ ├── chatster/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── chatster.pot │ │ │ │ ├── chayall/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── chayall.pot │ │ │ │ ├── checkbox-for-taxonomies/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── checkbox-for-taxonomies.pot │ │ │ │ ├── checkout-add-on-woo-onepage/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── woo-onepage-checkout.pot │ │ │ │ ├── checkout-field-customizer/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── checkout-upsell-funnel-for-woo/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── checkoutwc-lite/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── checkoutx/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── checkrobin/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── child-theme-configurator/ │ │ │ │ │ └── javascript_comment/ │ │ │ │ │ └── js/ │ │ │ │ │ └── chldthmcfg.js │ │ │ │ ├── chillpay-payment-gateway/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── chinads-dropshipping-taobao-woocommerce/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── choco/ │ │ │ │ │ └── javascript_var/ │ │ │ │ │ └── js/ │ │ │ │ │ └── choco.js │ │ │ │ ├── chuffed-widget/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── churchtithewp/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── church-tithe-wp.pot │ │ │ │ ├── cielo-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cielo-woocommerce.pot │ │ │ │ ├── cip-dtac-for-give/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── cision-modules/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── composer.json │ │ │ │ ├── citadela-directory-lite/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── citadela-directory-lite.pot │ │ │ │ ├── cities-shipping-zones-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── i18n/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cities-shipping-zones-for-woocommerce.pot │ │ │ │ ├── civicrm-admin-utilities/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── civicrm-admin-utilities.pot │ │ │ │ ├── civicrm-wp-member-sync/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── civicrm-wp-member-sync.pot │ │ │ │ ├── civil-comments/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── civil-comments.pot │ │ │ │ ├── classic-quiz-feedback-survey/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cqfs.pot │ │ │ │ ├── classic-widgets-with-block-based-widgets/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── classic-and-block-widgets.pot │ │ │ │ ├── classified/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── i18n/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── classified.pot │ │ │ │ ├── classifieds-wp/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── classifieds-wp.pot │ │ │ │ ├── clean-and-simple-contact-form-by-meg-nicholas/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── clean-and-simple-contact-form-by-meg-nicholas.pot │ │ │ │ ├── clean-my-archives/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── clean-my-wp/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── clean-my-wordpress.pot │ │ │ │ ├── clean-options/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cleanoptions-de_DE.po │ │ │ │ ├── cleaner-gallery/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cleaner-gallery.pot │ │ │ │ ├── clear-autoptimize-cache-automatically/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── clear-cache-for-timber/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── composer.json │ │ │ │ ├── clear-floats-button/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── clear-opcache/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── clearfy/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── clearfy-ru_RU.po │ │ │ │ ├── cleverreach-newsletter-dashboard-widget/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── translations/ │ │ │ │ │ └── haet_cleverreach_dashboard-de_DE.po │ │ │ │ ├── click-pledge-paid-memberships-pro/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── click-pledge-wpjobboard/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── change_log.txt │ │ │ │ ├── clicksco-offerstack/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── clickship/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── clickship.pot │ │ │ │ ├── clicksports-maps/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── clicksports-maps.pot │ │ │ │ ├── clicky/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── clicky.pot │ │ │ │ ├── client-power-tools/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── clocks-block/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── cloud-search/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── cloud2png/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── clou2png.pot │ │ │ │ ├── cloudflare/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── composer.json │ │ │ │ │ └── config_file/ │ │ │ │ │ └── config.js │ │ │ │ ├── cloudtables/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── clust-client-portal/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── clust-wp-portal.pot │ │ │ │ ├── cm-idin/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cm-idin.pot │ │ │ │ ├── cmb2/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cmb2.pot │ │ │ │ ├── co2counter/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── plugin-name.pot │ │ │ │ ├── coblocks/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── coblocks.pot │ │ │ │ ├── cocart-get-cart-enhanced/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cocart-get-cart-enhanced.pot │ │ │ │ ├── cocart-jwt-authentication/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cocart-jwt-authentication.pot │ │ │ │ ├── cocoon-scenery-color/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cocoon-scenery-color-en.po │ │ │ │ ├── cod-network/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── code-for-cj-affiliate-network/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── code-generator/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── generate-wp.pot │ │ │ │ ├── code-injection/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── code-injection.pot │ │ │ │ ├── code-prettify-syntax-highlighter/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cpsh-ru_RU.po │ │ │ │ ├── code-snippet-library/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── code_snippet-en_GB.po │ │ │ │ ├── code-snippets/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── code-snippets.pot │ │ │ │ ├── code-snippets-cpt/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dsgnwrks-code-snippets-cpt.pot │ │ │ │ ├── code-to-widget/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── codechime-loader/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── codechime-loader.pot │ │ │ │ ├── codedragon-smartcache/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── codeless-hotspot-block/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── codepen-embed-block/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── codepile/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── codistoconnect/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── codja-wc-ajax-search/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cj-wc-ajax-search.pot │ │ │ │ ├── coinpaprika/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── coinpaprika-pl_PL.po │ │ │ │ ├── colete-online/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── coleteonline-ro_RO.po │ │ │ │ ├── colissimo-shipping-methods-for-woocommerce/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── colorlab/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── woocommerce-colorlab.pot │ │ │ │ ├── colorlib-login-customizer/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── colorlib-login-customizer.po │ │ │ │ ├── columnify/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── come-back/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── come-back.pot │ │ │ │ ├── comet-lite/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── comet.pot │ │ │ │ ├── coming-soon-by-boomdevs/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── coming-soon-counter-page-maintenance-mode-lacoming-soon/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── lasoon-en_CA.po │ │ │ │ ├── coming2live/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── coming2live.pot │ │ │ │ ├── comment-count-admin/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── comment-count-admin-de_DE.po │ │ │ │ ├── comment-form-message/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── comment-form-message.pot │ │ │ │ ├── comment-mail/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── comment-privileges-by-post/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── comment-privileges-by-post.pot │ │ │ │ ├── comment_passive_all.html │ │ │ │ ├── commentmailer/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── commentmailer.pot │ │ │ │ ├── commentpress-core/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── commentpress-core.pot │ │ │ │ ├── comments-avatar-lazyload/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── comments-link-optimization/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── comments-user-column/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── comments-user-column.pot │ │ │ │ ├── comments-widget-plus/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── comments-widget-plus.pot │ │ │ │ ├── common-wish-and-bridal-lists/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── commonsbooking/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── commonsbooking.pot │ │ │ │ ├── community-watch/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── community-watch.pot │ │ │ │ ├── community-yard-sale/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── community-yard-sale.pot │ │ │ │ ├── compactrss/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── compactrss.pot │ │ │ │ ├── compe-woo-compare-products/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── complete-open-graph/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── complianz-terms-conditions/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── complianz-terms-conditions.pot │ │ │ │ ├── composite-products-conditional-images-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── woocommerce-composite-products-conditional-images.pot │ │ │ │ ├── conditional-logic-for-woo-product-add-ons/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── conekta-payment-gateway/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── conformis-cookie-banner/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── conformis-en_GB.po │ │ │ │ ├── connect-daily-web-calendar/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── captions/ │ │ │ │ │ └── connect-daily-web-calendar-fr_FR.po │ │ │ │ ├── connect-eduma-theme-to-discord/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.TXT │ │ │ │ ├── connect-learndash-and-discord/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── connect-learnpress-discord-add-on/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.TXT │ │ │ │ ├── connections-business-directory-certifications/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── connections-business-directory-facilities/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── connections-business-directory-local-time/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── constant-contact-api/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── constant-contact-api.pot │ │ │ │ ├── consumer-financing-by-chargeafter/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── contact-form-7-extras/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cf7-extras.pot │ │ │ │ ├── contact-form-7-getresponse-extension/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── contact-form-7-getresponse-extension.pot │ │ │ │ ├── contact-form-query/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── contact-form-query.pot │ │ │ │ ├── contact-list/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── contact-list.pot │ │ │ │ ├── content-parts/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── content-promoter/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── contentpromoter.pot │ │ │ │ ├── content-switcher/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── content-switcher-fr_FR.po │ │ │ │ ├── contentblocks/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── contestfriend/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── contestfriend.pot │ │ │ │ ├── contributor-role-for-approved-comments/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── contributor-role-for-approved-comments.pot │ │ │ │ ├── convatic/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── convert-speech-to-text-as-post/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── convertiser-widgets/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── convertiser-widgets.pot │ │ │ │ ├── convertplug/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── convocations/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── convocations-fr_FR.po │ │ │ │ ├── cookbook-hook-guide/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cookbook-hook-guide.pot │ │ │ │ ├── cookie-jar/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── cookie-law-info/ │ │ │ │ │ └── javascript_comment/ │ │ │ │ │ └── js/ │ │ │ │ │ └── cookielawinfo.js │ │ │ │ ├── cookiebot/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── langs/ │ │ │ │ │ └── cookiebot.pot │ │ │ │ ├── cookiegenie/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── cookiegenie-nl_NL.po │ │ │ │ ├── cookiehub/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── cookiepro/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── wpcookiepro.pot │ │ │ │ ├── cooking-recipe-block/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── cool-admin-theme-lite-for-wp/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── catforwp.po │ │ │ │ ├── copycraft/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── copycraft.pot │ │ │ │ ├── copysmith-for-woocommerce/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── cora-lite/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── core-rollback/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── core-rollback.pot │ │ │ │ ├── coreactivity/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── cornell-notes/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── cornerstone/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── corona-vat-germany/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cect.pot │ │ │ │ ├── correos-oficial/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── correoswc.pot │ │ │ │ ├── cosy-address-book/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cosy-address-book.pot │ │ │ │ ├── counting-number-block/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── counting-number.pot │ │ │ │ ├── courier-notices/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── composer.json │ │ │ │ ├── course-scheduler-for-learndash/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── course-wizard-for-sensei/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── covid-19-live-tracking/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── jms-covid-19.pot │ │ │ │ ├── cowidgets-elementor-addons/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── coyote/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── cpo-content-types/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── crazy-call-to-action-box/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── crea-listings/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── plugin-name.pot │ │ │ │ ├── create-payment-stripe-gateway/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── uk_UA.po │ │ │ │ ├── creative-commons-configurator-1/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── creative-commons-configurator-1.pot │ │ │ │ ├── creative-mail-by-constant-contact/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── creeperbit-woo-accordion/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── cresta-posts-box/ │ │ │ │ │ └── style_comment/ │ │ │ │ │ └── css/ │ │ │ │ │ └── cresta-posts-box-style.css │ │ │ │ ├── crm-hubspot-learndash-integration/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── crm-in-cloud-for-wc/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── crm-in-cloud-for-wc-it_IT.pot │ │ │ │ ├── crm-salesforce-learndash-integration/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── cron-task-viewer-redux/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cron-task-viewer-redux.pot │ │ │ │ ├── croquet-metaverse-web-showcase/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── croquet-metaverse-web-showcase.pot │ │ │ │ ├── cross-domain-tracker-for-affiliatewp/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── crosswinds-blocks/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── crosswordsearch/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── crosswordsearch.pot │ │ │ │ ├── crowdcue/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── crowdsignal-forms/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── crowdsignal-forms.pot │ │ │ │ ├── crucial-real-estate/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── cryptex/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── Cryptex.pot │ │ │ │ ├── crypto-payments-woo/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── Crypto-Payments-Woo.pot │ │ │ │ ├── crypto-qr-code-wp/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── cryptocurrency-price-widget/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── crcpw-cryptocurrency-price-widget.pot │ │ │ │ ├── cryptopanel-payment-gateway-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cryptopanel-payment-gateway-de_DE.po │ │ │ │ ├── cryptum-nft/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cryptum-nft-domain.pot │ │ │ │ ├── css3-buttons/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── default.pot │ │ │ │ ├── csv-exporter-for-terms/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── et-csv.pot │ │ │ │ ├── csv-to-db/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── src/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── csv2db.pot │ │ │ │ ├── cta-bar/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── ctc-countdown-timer-cookies/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ctc-countdown-timer-cookies.pot │ │ │ │ ├── ctcl-floating-cart/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── cubecolour-caboodle/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cubecolour-caboodle.pot │ │ │ │ ├── cubicfusion-admin-enhancer/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── culqi-full-integration/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── cultivate-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cultivate-for-woocommerce.pot │ │ │ │ ├── curatewp-nested-posts/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cwpnp.pot │ │ │ │ ├── curatewp-related-posts/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cwprp-en_US.po │ │ │ │ ├── currencyr/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── default.po │ │ │ │ ├── custom-admin-login/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── custom-advert-blocks-free/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── custom-blocks-free-ru_RU.po │ │ │ │ ├── custom-authentication/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── custauth.pot │ │ │ │ ├── custom-bulkquick-edit/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── custom-bulkquick-edit.pot │ │ │ │ ├── custom-classes/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.md │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── custom-classes.pot │ │ │ │ ├── custom-codes/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── custom-codes.pot │ │ │ │ ├── custom-content-portfolio/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── custom-content-types-by-pixelpillow/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── pixelpillow-custom-content-types-nl_NL.po │ │ │ │ ├── custom-css-by-dev7studios/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── custom-css-js/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── custom-css-js.pot │ │ │ │ ├── custom-database-tables/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── langs/ │ │ │ │ │ └── custom-database-tables-ja.po │ │ │ │ ├── custom-dokan-fields/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── custom-fields-account-registration-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── custom-fields-account-for-woocommerce-registration.pot │ │ │ │ ├── custom-header-extended/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── custom-help/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── custom-importer-exporter/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── custom-importer-exporter.pot │ │ │ │ ├── custom-javascript-editor/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── custom-javascript-editor.pot │ │ │ │ ├── custom-page-extensions/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── custom-page-extensions.pot │ │ │ │ ├── custom-post-type-cleanup/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── custom-post-type-cleanup.pot │ │ │ │ ├── custom-post-type-maker/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── custom-post-type-manager/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── cptm-ja.po │ │ │ │ ├── custom-post-type-order/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cpto-fr_FR.po │ │ │ │ ├── custom-post-type-parents/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── custom-post-type-parents.pot │ │ │ │ ├── custom-post-type-widget-blocks/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── custom-post-type-widget-blocks.pot │ │ │ │ ├── custom-posts-list-block/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── custom-registration-link/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── custom-registration-link-fr_FR.po │ │ │ │ ├── custom-sidebars/ │ │ │ │ │ └── javascript_comment/ │ │ │ │ │ └── assets/ │ │ │ │ │ └── js/ │ │ │ │ │ └── cs-visibility.js │ │ │ │ ├── custom-smilies-directory/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── jpm_csd.pot │ │ │ │ ├── custom-template-learndash/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── custom-template-learndash.pot │ │ │ │ ├── custom-template-lifterlms/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── custom-template-lifterlms.pot │ │ │ │ ├── custom-testimonial/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── vendor/ │ │ │ │ │ └── testimonialmetaoption/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── zh_CN.po │ │ │ │ ├── custom-toolbox/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── custom-toolbox-fr_FR.po │ │ │ │ ├── custom-typekit-fonts/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── custom-typekit-fonts.pot │ │ │ │ ├── custom-wishlist/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── cwl-es_ES.po │ │ │ │ ├── customer-area/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── composer.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cuar.pot │ │ │ │ ├── customify-sites/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── customify-sites.pot │ │ │ │ ├── customize-my-account-for-woocommerce/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── customize-woo/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── i18n/ │ │ │ │ │ └── customize-woo.pot │ │ │ │ ├── customizely/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── customizely.pot │ │ │ │ ├── customizer-search/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── customizer-search.pot │ │ │ │ ├── customizr-addons/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── en_US.po │ │ │ │ ├── cvi-widgets/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cvi.pot │ │ │ │ ├── cycle-blocks/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── cycle-blocks-ja.po │ │ │ │ ├── daggerhart-openid-connect-generic/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── daily-maxim-365/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── daily-maxim-365.pot │ │ │ │ ├── daily-snapshot-for-woocommerce-admin/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── mwb-dailyss-en_US.po │ │ │ │ ├── danixland-countdown/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── i18n/ │ │ │ │ │ └── danixland-countdown.pot │ │ │ │ ├── dark-login-screen/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── langs/ │ │ │ │ │ └── dark_login_screen-en_AU.po │ │ │ │ ├── dark-mode-lite/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dark_mode_lite.pot │ │ │ │ ├── dark-mode-toggle/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dark-mode-toggle.pot │ │ │ │ ├── darwin-backup/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── dash-notifier/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dash-notifier.pot │ │ │ │ ├── dashboard-columns/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── dashboard-linker/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dashboard-linker.pot │ │ │ │ ├── dashboard-notes/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dashboard-notes.pot │ │ │ │ ├── dashboard-welcome-for-beaver-builder/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── dashly/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dashly-ru_RU.po │ │ │ │ ├── dashview/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── i18n/ │ │ │ │ │ └── dashview-de_DE.po │ │ │ │ ├── database-analyzer/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── date-and-time-widget/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── date-time.pot │ │ │ │ ├── davons-floating-admin-bar/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── davon-floating-admin-bar-de_DE.po │ │ │ │ ├── db-access-adminer/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── db-access-adminer.pot │ │ │ │ ├── db-share-count/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── db-signatures/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── deau-api/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── deau-api-en_US.po │ │ │ │ ├── debrandify/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dbrdify.pot │ │ │ │ ├── debug-bar-rewrite-rules/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── decent-comments/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── deep-free-plus/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── deepcore/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── deep.pot │ │ │ │ ├── default-attributes-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── i18n/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── default-attributes-for-woocommerce-he_IL.po │ │ │ │ ├── defender-security/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── wpdef-default.pot │ │ │ │ ├── delete-expired-transients/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── delete-revision/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── delete-unscaled-images/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── delete-unscaled-images.pot │ │ │ │ ├── delicious-recipes/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── delicious-recipes.pot │ │ │ │ ├── delivengo/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── wc_delivengo.pot │ │ │ │ ├── delivery-area-with-google-maps/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── delivery-date-system-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── delivery-date-system.pot │ │ │ │ ├── delucks-seo/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── language/ │ │ │ │ │ └── delucks-seo-de_DE_formal.po │ │ │ │ ├── demo-bar/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── demo-bar.pot │ │ │ │ ├── demo-importer-plus/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── demo-importer-plus.pot │ │ │ │ ├── demoify-blocks/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── demomentsomtres-wc-minimum-purchase-message/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── DeMomentSomTres-WC-minPurchaseMessage-ca.po │ │ │ │ ├── demomentsomtres-woocommerce-minimum-purchase-message/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── DeMomentSomTres-WC-minPurchaseMessage-ca.po │ │ │ │ ├── denade-translate/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── depay-payments-for-woocommerce/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── depay-woocommerce-payments.pot │ │ │ │ ├── deposits-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── deposits-for-woocommerce.pot │ │ │ │ ├── deposits-partial-payments-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── deposits-partial-payments-for-woocommerce.pot │ │ │ │ ├── depublish-posts/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── wp-depublish-posts.pot │ │ │ │ ├── derweili-fb-chat/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── description-list-block/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── design-sidebar-using-page-builder/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── sidebar-using-page-builder.pot │ │ │ │ ├── deskaddons-for-beaver-builder-lite/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── dessky-responsive-slider/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── dessky-security/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── dev-debug-tools/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── dev-studio/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── developer-tool/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dev-tool.pot │ │ │ │ ├── device-detect/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── device-detect-fr_FR.po │ │ │ │ ├── device-detector/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── dexonline-searchbox/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dexonline-searchbox-de_DE.po │ │ │ │ ├── dezo-tools/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dezo-tools.pot │ │ │ │ ├── df-pagination/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── I18n/ │ │ │ │ │ └── df-pagination.pot │ │ │ │ ├── dgxpco/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── composer.json │ │ │ │ ├── dh-dashboard-quick-content-access/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dh-widget-dashqa-de_DE.po │ │ │ │ ├── dh-new-mark/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dh-new-mark-ja.po │ │ │ │ ├── dialogue-layout/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── language/ │ │ │ │ │ └── dialogue-layout.pot │ │ │ │ ├── dibs-for-woocommerce/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── dicentis-podcast/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── digest/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── digest.pot │ │ │ │ ├── digital-certainty/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── plugin-name.pot │ │ │ │ ├── digitalpush/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── insert-headers-and-footers.pot │ │ │ │ ├── diller-loyalty/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── diller-loyalty.pot │ │ │ │ ├── dirt-directory-client/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dirt-directory-client.pot │ │ │ │ ├── disable-automatic-theme-plugin-updates/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── disable-plugin-theme-auto-updates.pot │ │ │ │ ├── disable-blog/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── disable-directory-listings/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── disable-directory-listings.pot │ │ │ │ ├── disable-emails/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── disable-embeds/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── composer.json │ │ │ │ ├── disable-feeds/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── disable-feeds.pot │ │ │ │ ├── disable-flamingo-addressbook/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── disable-right-click-powered-by-pixterme/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── pixterme.pot │ │ │ │ ├── disable-search/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── disable-search-slug/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── disable-title/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── disable_title-de_DE.po │ │ │ │ ├── disclaimer-popup/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── assets/ │ │ │ │ │ └── mb-settings-page/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── default.pot │ │ │ │ ├── discontinued-product-stock-status-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── discontinued-products-stock-status.pot │ │ │ │ ├── dispensary-coupons/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── display-a-meta-field-as-block/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── mfb.pot │ │ │ │ ├── display-featured-image-genesis/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── display-featured-image-genesis.pot │ │ │ │ ├── display-git-status/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── display-git-status.pot │ │ │ │ ├── display-post-reading-time/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── Changelog.txt │ │ │ │ ├── display-post-types/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── display-post-types.pot │ │ │ │ ├── display-posts-shortcode/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── display-taxes-on-product-page-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── mlfactory_tax_plugin-de_DE.po │ │ │ │ ├── display-terms-shortcode/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── display-terms-shortcode.pot │ │ │ │ ├── distributor-remote-quickedit/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── dlocal-go-payments-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── directo-pago-payments-for-woocommerce-es_PE.po │ │ │ │ ├── dn-footer-contacts/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dn-footer-contacts-it_IT.po │ │ │ │ ├── dn-shopping-discounts/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dn_discounts-it_IT.po │ │ │ │ ├── do-not-send-emails-if/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── do-not-send-emails-if.pot │ │ │ │ ├── dobsondev-shortcodes/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── dobsondev-weather/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── doc8/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── docu-en_US.pot │ │ │ │ ├── docket-cache/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── docket-cache.pot │ │ │ │ ├── docollipics-faustball-de/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── docs2site/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── docs2site.pot │ │ │ │ ├── document-embedder-addons-for-elementor/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── b-addon.pot │ │ │ │ ├── document-engine/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── document-engine.pot │ │ │ │ ├── document-gallery/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── document-generator-for-openapi/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── document-library-lite/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── document-library-lite.pot │ │ │ │ ├── documentation/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── dodebug/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── dodebug.pot │ │ │ │ ├── dokan-invoice/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dokan-invoice.pot │ │ │ │ ├── dokan-lite/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dokan-lite.pot │ │ │ │ ├── dokan-migrator/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dokan-migrator.pot │ │ │ │ ├── dokan-plus/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── dokan-vendor-dashboard/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dokan-vendor-dashboard.pot │ │ │ │ ├── dolibarr-rest-api/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── domyaccounting/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── rtwdma-domyaccounting.pot │ │ │ │ ├── doppelme-avatars/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── double-image/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── double-image.pot │ │ │ │ ├── download-after-email/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dae.pot │ │ │ │ ├── download-list-block-with-icons/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── download-media-file/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── download-media-file.pot │ │ │ │ ├── download-monitor/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── download-monitor.pot │ │ │ │ ├── download-monitor-learndash-integration/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── download-monitor-paid-membership-pro-integration/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── download-monitor-restrict-content-integration/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── download-plugins-dashboard/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── langs/ │ │ │ │ │ └── download-plugins-dashboard.pot │ │ │ │ ├── downloadio/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── downloadio.pot │ │ │ │ ├── dozent/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dozent.pot │ │ │ │ ├── dozent-lms/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dozent-lms.pot │ │ │ │ ├── dozent-lms-certificate/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dozent-lms-certificate.pot │ │ │ │ ├── dplayer/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dplayer.pot │ │ │ │ ├── dps-pxpay-for-wp-ecommerce/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── dr-widgets-blocks/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dr-widgets-blocks.pot │ │ │ │ ├── dracula-dark-mode/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dracula-dark-mode.pot │ │ │ │ ├── drag-drop-featured-image-improved/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dragandropimproved.pot │ │ │ │ ├── dragon-video/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── drastic-table-manager/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── drastic-table-manager.pot │ │ │ │ ├── driveworks-block-form-embed/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── dropdown-content/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dropdowncontent.pot │ │ │ │ ├── dropp-pay-per-use/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── dropp-pay-tipping/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── dropship-sell-your-art/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── dropshipping-with-ebay-for-woocommerce/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── dropshipping-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dropshipping-woocommerce.pot │ │ │ │ ├── dropshipping-xml-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── dropshipping-xml-for-woocommerce.pot │ │ │ │ ├── ds-suit/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── en_US.po │ │ │ │ ├── dse-divi-section-enhancer/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dse-divi-section-enhancer.pot │ │ │ │ ├── dummy-images/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── duogeek-blocks/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dggb-blocks.pot │ │ │ │ ├── duplicate-pages-posts/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── duplicate-pages-posts.pot │ │ │ │ ├── duplicate-term/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── duplicate-term.pot │ │ │ │ ├── dvk-social-sharing/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── dxtag-auto-listings/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── guaven_dxtag.pot │ │ │ │ ├── dynamic-asset-versioning/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dynamic-asset-versioning.pot │ │ │ │ ├── dynamic-block-content/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── dynamic-content-for-elementor/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── dynamic-coupons-with-zendesk-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── zndskcoupon-en_US.po │ │ │ │ ├── dynamic-seo-child-pages/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── dynamic-seo-child-pages.pot │ │ │ │ ├── dynamic-text-field-for-contact-form-7/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── dynamic-text-field-for-contact-form-7.pot │ │ │ │ ├── dynamically-display-posts/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── uk_UA.po │ │ │ │ ├── e-commerce-by-salescart/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── e-commerce-mailcheck/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── e-commerce-payment-gateway-kevin/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── composer.json │ │ │ │ ├── e-connector-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── e-connector-for-woocommerce.pot │ │ │ │ ├── e-nkap-woocommerce-gateway/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── composer.json │ │ │ │ ├── easing-slider/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easingslider.pot │ │ │ │ ├── easy-ad-picker/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easyadpicker-nl_NL.po │ │ │ │ ├── easy-attendance/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-attendance-en_US.po │ │ │ │ ├── easy-blog-ideas/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── __pig_.pot │ │ │ │ ├── easy-code-manager/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── locals/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── css-javascript-toolbox.pot │ │ │ │ ├── easy-contact-form-pro/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelogs.txt │ │ │ │ ├── easy-content-protector/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── easy-content-protector.pot │ │ │ │ ├── easy-custom-error-pages/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── easy-custom-js-and-css/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── easy-custom-oceanwp-shop/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-custom-oceanwp-shop-fr_FR.po │ │ │ │ ├── easy-customizer/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-customizer.pot │ │ │ │ ├── easy-customizer-for-woocommerce-pdf-invoices/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── easy-digital-downloads/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-digital-downloads.pot │ │ │ │ ├── easy-digital-downloads-free-link/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── easy-digital-downloads-payment-gateway-by-novalnet/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── edd-novalnet.pot │ │ │ │ ├── easy-excerpt/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-excerpt.po │ │ │ │ ├── easy-featured-images/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── easy-featured-images-hu_HU.po │ │ │ │ ├── easy-feedback/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── easy-flipbook-i-widget/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-flipbook.pot │ │ │ │ ├── easy-folders/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-folders.pot │ │ │ │ ├── easy-google-fonts/ │ │ │ │ │ └── javascript_comment/ │ │ │ │ │ └── assets/ │ │ │ │ │ └── js/ │ │ │ │ │ └── admin.js │ │ │ │ ├── easy-image-optimizer/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── easy-plugin-demo/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-plugin-demo.pot │ │ │ │ ├── easy-plugin-stats/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-plugin-stats.pot │ │ │ │ ├── easy-post-types-fields/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-post-types-fields.pot │ │ │ │ ├── easy-pricing-table-manager/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── easy-pricing-table-manager.po │ │ │ │ ├── easy-primary-category/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-primary-category.pot │ │ │ │ ├── easy-product-bundles-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── asnp-easy-product-bundles.pot │ │ │ │ ├── easy-property-listings/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-property-listings.pot │ │ │ │ ├── easy-recent-posts/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── langs/ │ │ │ │ │ └── easy-recent-posts-de_DE.po │ │ │ │ ├── easy-retweet/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-retweet.pot │ │ │ │ ├── easy-scheduled-posts/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── langs/ │ │ │ │ │ └── easy-recent-posts-de_DE.po │ │ │ │ ├── easy-similar-posts/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── langs/ │ │ │ │ │ └── easy-similar-posts-de_DE.po │ │ │ │ ├── easy-social-sharing/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-social-sharing.pot │ │ │ │ ├── easy-static-maps/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── easy-static-maps-it_IT.po │ │ │ │ ├── easy-support-videos/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-support-videos.pot │ │ │ │ ├── easy-swipebox/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-swipebox.pot │ │ │ │ ├── easy-taxonomy-support/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── ez-taxonomy-support.pot │ │ │ │ ├── easy-testimonial-rotator/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-testimonial-rotator.pot │ │ │ │ ├── easy-theme-plugin-switcher/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-wp-tp-switcher.pot │ │ │ │ ├── easy-timer/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-timer-fr_FR.po │ │ │ │ ├── easy-user-registration/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-user-registration.pot │ │ │ │ ├── easy-woocommerce-discounts/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── easy-woocommerce-discounts.pot │ │ │ │ ├── easymega/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── eazy-ad-unblocker/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── eazy-ad-unblocker-de_DE.po │ │ │ │ ├── eazy-image-slider-block/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── eazyimagesliderblock-de_DE.po │ │ │ │ ├── eazyable/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── eazyable.pot │ │ │ │ ├── eazyfilter-for-woocommerce/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── ebanqo-widget/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ebanqo-widget.pot │ │ │ │ ├── ec-links/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── echo-show-ids/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── eclear-spot/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── ecomail-elementor-form-integration/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── edd-advanced-discounts/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── edd-advanced-discounts.pot │ │ │ │ ├── edd-blocks/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── edd-bulk-sale-price/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── edd-card/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── edd-card.pot │ │ │ │ ├── edd-download-info/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── edd-download-info.pot │ │ │ │ ├── edd-first-time-buyers-gift/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── edd-mark-as-add-on/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── edd-mark-as-addon.pot │ │ │ │ ├── edd-multilingual/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── edd-payu-latam-gateway/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── wpas-edd-payu-latam-en_US.po │ │ │ │ ├── edd-purchase-details/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── edd-purchase-details.pot │ │ │ │ ├── edd-variable-defaults-update/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.txt │ │ │ │ ├── edit-author-slug/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── edit-author-slug.pot │ │ │ │ ├── edit-parent-comment-id/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── edit-parent-comment-id-ru_RU.po │ │ │ │ ├── edit-recent-posts/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── edit-recent-posts.pot │ │ │ │ ├── editor-bridge/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── editor-bridge-ja.po │ │ │ │ ├── editor-custom-color-palette/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── editor-custom-color-palette-fr_FR.po │ │ │ │ ├── editor-for-timber/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── composer.json │ │ │ │ ├── editorial-access-manager/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── editorial-access-manager.pot │ │ │ │ ├── editors-note/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── educare/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.md │ │ │ │ ├── efavourite-posts/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── efavourite-posts.pot │ │ │ │ ├── eidlogin/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── eidlogin-de_DE.po │ │ │ │ ├── eight-day-week-print-workflow/ │ │ │ │ │ ├── composer_file/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── eight-day-week.pot │ │ │ │ ├── eighties-bbpress/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── eighties-bbpress-en_US.pot │ │ │ │ ├── ekiline-block-collection/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ekiline-collection-es_MX.po │ │ │ │ ├── eladdon/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── elementaddon.pot │ │ │ │ ├── elasticpress/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── lang/ │ │ │ │ │ └── elasticpress.pot │ │ │ │ ├── electrifying-engineering-portfolio/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── electrifying-engineering-portfolio.pot │ │ │ │ ├── elegant-responsive-content-slider/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── ercs.pot │ │ │ │ ├── elemendas-addons/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── elemendas-addons.pot │ │ │ │ ├── element-capability-manager/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── english.po │ │ │ │ ├── elemental-theme-builder/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── elemental-theme-builder.pot │ │ │ │ ├── elementify-visual-widgets/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── elementify-visual-widgets.pot │ │ │ │ ├── elementor/ │ │ │ │ │ └── javascript_comment/ │ │ │ │ │ └── assets/ │ │ │ │ │ └── js/ │ │ │ │ │ └── admin-feedback.js │ │ │ │ ├── elementor-addon-widgets/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── elementor-pro/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── elementor-templater/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── elementpress/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── elform/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── elform.pot │ │ │ │ ├── elfsight-addons-for-elementor/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── elfsight-blocks/ │ │ │ │ │ └── composer_file/ │ │ │ │ │ └── package.json │ │ │ │ ├── elgg-bridge/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── CHANGELOG.md │ │ │ │ ├── elmo-privacylab/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── elmo.pot │ │ │ │ ├── email-address-encoder/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── email-address-encoder.pot │ │ │ │ ├── email-download-link/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── email-fields-for-woocommerce/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── email-fields-for-woocommerce.pot │ │ │ │ ├── email-log/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── email-log.pot │ │ │ │ ├── email-notice-wp-document-revisions/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── wpdr-email-notice.pot │ │ │ │ ├── email-posts-to-subscribers/ │ │ │ │ │ └── change_log/ │ │ │ │ │ └── changelog.txt │ │ │ │ ├── email-subscribe/ │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── email-subscribe.pot │ │ │ │ ├── email-subscribers/ │ │ │ │ │ ├── change_log/ │ │ │ │ │ │ └── changelog.txt │ │ │ │ │ └── translation_file/ │ │ │ │ │ └── languages/ │ │ │ │ │ └── email-subscribers-pt_BR.po │ │ │ │ ├── email-subscribers-advanced-f
SYMBOL INDEX (2086 symbols across 167 files)
FILE: app/controllers/aliases.rb
type WPScan (line 3) | module WPScan
type Controller (line 4) | module Controller
class Aliases (line 6) | class Aliases < CMSScanner::Controller::Base
method cli_options (line 7) | def cli_options
FILE: app/controllers/core.rb
type WPScan (line 3) | module WPScan
type Controller (line 4) | module Controller
class Core (line 6) | class Core < CMSScanner::Controller::Core
method cli_options (line 8) | def cli_options
method local_db (line 23) | def local_db
method update_db_required? (line 28) | def update_db_required?
method update_db (line 48) | def update_db
method before_scan (line 55) | def before_scan
method check_wordpress_state (line 72) | def check_wordpress_state
method load_server_module (line 90) | def load_server_module
FILE: app/controllers/custom_directories.rb
type WPScan (line 3) | module WPScan
type Controller (line 4) | module Controller
class CustomDirectories (line 7) | class CustomDirectories < CMSScanner::Controller::Base
method cli_options (line 8) | def cli_options
method before_scan (line 17) | def before_scan
FILE: app/controllers/enumeration.rb
type WPScan (line 6) | module WPScan
type Controller (line 7) | module Controller
class Enumeration (line 9) | class Enumeration < CMSScanner::Controller::Base
method run (line 10) | def run
FILE: app/controllers/enumeration/cli_options.rb
type WPScan (line 3) | module WPScan
type Controller (line 4) | module Controller
class Enumeration (line 6) | class Enumeration < CMSScanner::Controller::Base
method cli_options (line 7) | def cli_options
method cli_enum_choices (line 14) | def cli_enum_choices
method cli_plugins_opts (line 49) | def cli_plugins_opts
method cli_themes_opts (line 77) | def cli_themes_opts
method cli_timthumbs_opts (line 106) | def cli_timthumbs_opts
method cli_config_backups_opts (line 121) | def cli_config_backups_opts
method cli_db_exports_opts (line 136) | def cli_db_exports_opts
method cli_medias_opts (line 151) | def cli_medias_opts
method cli_users_opts (line 162) | def cli_users_opts
FILE: app/controllers/enumeration/enum_methods.rb
type WPScan (line 3) | module WPScan
type Controller (line 4) | module Controller
class Enumeration (line 6) | class Enumeration < CMSScanner::Controller::Base
method enum_message (line 11) | def enum_message(type, detection_mode)
method enum_detection_message (line 28) | def enum_detection_message(detection_mode)
method default_opts (line 41) | def default_opts(type)
method enum_plugins? (line 58) | def enum_plugins?(opts)
method enum_plugins (line 62) | def enum_plugins
method plugins_list_from_opts (line 89) | def plugins_list_from_opts(opts)
method enum_themes? (line 105) | def enum_themes?(opts)
method enum_themes (line 109) | def enum_themes
method themes_list_from_opts (line 136) | def themes_list_from_opts(opts)
method enum_timthumbs (line 149) | def enum_timthumbs
method enum_config_backups (line 156) | def enum_config_backups
method enum_db_exports (line 163) | def enum_db_exports
method enum_medias (line 170) | def enum_medias
method enum_users? (line 185) | def enum_users?(opts)
method enum_users (line 189) | def enum_users
method enum_users_range (line 202) | def enum_users_range
FILE: app/controllers/main_theme.rb
type WPScan (line 3) | module WPScan
type Controller (line 4) | module Controller
class MainTheme (line 6) | class MainTheme < CMSScanner::Controller::Base
method cli_options (line 7) | def cli_options
method run (line 17) | def run
FILE: app/controllers/password_attack.rb
type WPScan (line 3) | module WPScan
type Controller (line 4) | module Controller
class PasswordAttack (line 6) | class PasswordAttack < CMSScanner::Controller::Base
method cli_options (line 7) | def cli_options
method attack_opts (line 28) | def attack_opts
method run (line 35) | def run
method attacker (line 60) | def attacker
method xmlrpc (line 65) | def xmlrpc
method attacker_from_cli_options (line 70) | def attacker_from_cli_options
method xmlrpc_get_users_blogs_enabled? (line 90) | def xmlrpc_get_users_blogs_enabled?
method attacker_from_automatic_detection (line 103) | def attacker_from_automatic_detection
method users (line 120) | def users
FILE: app/controllers/vuln_api.rb
type WPScan (line 3) | module WPScan
type Controller (line 4) | module Controller
class VulnApi (line 6) | class VulnApi < CMSScanner::Controller::Base
method cli_options (line 9) | def cli_options
method before_scan (line 18) | def before_scan
method after_scan (line 30) | def after_scan
FILE: app/controllers/wp_version.rb
type WPScan (line 3) | module WPScan
type Controller (line 4) | module Controller
class WpVersion (line 6) | class WpVersion < CMSScanner::Controller::Base
method cli_options (line 7) | def cli_options
method before_scan (line 19) | def before_scan
method run (line 23) | def run
FILE: app/finders/config_backups.rb
type WPScan (line 5) | module WPScan
type Finders (line 6) | module Finders
type ConfigBackups (line 7) | module ConfigBackups
class Base (line 9) | class Base
method initialize (line 13) | def initialize(target)
FILE: app/finders/config_backups/known_filenames.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type ConfigBackups (line 5) | module ConfigBackups
class KnownFilenames (line 7) | class KnownFilenames < CMSScanner::Finders::Finder
method aggressive (line 15) | def aggressive(opts = {})
method potential_urls (line 31) | def potential_urls(opts = {})
method create_progress_bar (line 41) | def create_progress_bar(opts = {})
FILE: app/finders/db_exports.rb
type WPScan (line 5) | module WPScan
type Finders (line 6) | module Finders
type DbExports (line 7) | module DbExports
class Base (line 9) | class Base
method initialize (line 13) | def initialize(target)
FILE: app/finders/db_exports/known_locations.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type DbExports (line 5) | module DbExports
class KnownLocations (line 7) | class KnownLocations < CMSScanner::Finders::Finder
method valid_response_codes (line 10) | def valid_response_codes
method aggressive (line 21) | def aggressive(opts = {})
method full_request_params (line 37) | def full_request_params
method potential_urls (line 45) | def potential_urls(opts = {})
method domain_name (line 70) | def domain_name
method domain_name_with_sub (line 78) | def domain_name_with_sub
method create_progress_bar (line 97) | def create_progress_bar(opts = {})
FILE: app/finders/interesting_findings.rb
type WPScan (line 18) | module WPScan
type Finders (line 19) | module Finders
type InterestingFindings (line 20) | module InterestingFindings
class Base (line 22) | class Base < CMSScanner::Finders::InterestingFindings::Base
method initialize (line 24) | def initialize(target)
FILE: app/finders/interesting_findings/backup_db.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type InterestingFindings (line 5) | module InterestingFindings
class BackupDB (line 7) | class BackupDB < CMSScanner::Finders::Finder
method aggressive (line 9) | def aggressive(_opts = {})
FILE: app/finders/interesting_findings/debug_log.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type InterestingFindings (line 5) | module InterestingFindings
class DebugLog (line 7) | class DebugLog < CMSScanner::Finders::Finder
method aggressive (line 9) | def aggressive(_opts = {})
FILE: app/finders/interesting_findings/duplicator_installer_log.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type InterestingFindings (line 5) | module InterestingFindings
class DuplicatorInstallerLog (line 7) | class DuplicatorInstallerLog < CMSScanner::Finders::Finder
method aggressive (line 9) | def aggressive(_opts = {})
FILE: app/finders/interesting_findings/emergency_pwd_reset_script.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type InterestingFindings (line 5) | module InterestingFindings
class EmergencyPwdResetScript (line 7) | class EmergencyPwdResetScript < CMSScanner::Finders::Finder
method aggressive (line 9) | def aggressive(_opts = {})
FILE: app/finders/interesting_findings/full_path_disclosure.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type InterestingFindings (line 5) | module InterestingFindings
class FullPathDisclosure (line 7) | class FullPathDisclosure < CMSScanner::Finders::Finder
method aggressive (line 9) | def aggressive(_opts = {})
FILE: app/finders/interesting_findings/mu_plugins.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type InterestingFindings (line 5) | module InterestingFindings
class MuPlugins (line 7) | class MuPlugins < CMSScanner::Finders::Finder
method passive (line 9) | def passive(_opts = {})
method aggressive (line 25) | def aggressive(_opts = {})
FILE: app/finders/interesting_findings/multisite.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type InterestingFindings (line 5) | module InterestingFindings
class Multisite (line 7) | class Multisite < CMSScanner::Finders::Finder
method aggressive (line 9) | def aggressive(_opts = {})
FILE: app/finders/interesting_findings/php_disabled.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type InterestingFindings (line 5) | module InterestingFindings
class PHPDisabled (line 7) | class PHPDisabled < CMSScanner::Finders::Finder
method aggressive (line 11) | def aggressive(_opts = {})
FILE: app/finders/interesting_findings/readme.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type InterestingFindings (line 5) | module InterestingFindings
class Readme (line 7) | class Readme < CMSScanner::Finders::Finder
method aggressive (line 9) | def aggressive(_opts = {})
method potential_files (line 22) | def potential_files
FILE: app/finders/interesting_findings/registration.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type InterestingFindings (line 5) | module InterestingFindings
class Registration (line 7) | class Registration < CMSScanner::Finders::Finder
method passive (line 9) | def passive(_opts = {})
method aggressive (line 14) | def aggressive(_opts = {})
FILE: app/finders/interesting_findings/tmm_db_migrate.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type InterestingFindings (line 5) | module InterestingFindings
class TmmDbMigrate (line 7) | class TmmDbMigrate < CMSScanner::Finders::Finder
method aggressive (line 9) | def aggressive(_opts = {})
FILE: app/finders/interesting_findings/upload_directory_listing.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type InterestingFindings (line 5) | module InterestingFindings
class UploadDirectoryListing (line 7) | class UploadDirectoryListing < CMSScanner::Finders::Finder
method aggressive (line 9) | def aggressive(_opts = {})
FILE: app/finders/interesting_findings/upload_sql_dump.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type InterestingFindings (line 5) | module InterestingFindings
class UploadSQLDump (line 7) | class UploadSQLDump < CMSScanner::Finders::Finder
method aggressive (line 11) | def aggressive(_opts = {})
FILE: app/finders/interesting_findings/wp_cron.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type InterestingFindings (line 5) | module InterestingFindings
class WPCron (line 7) | class WPCron < CMSScanner::Finders::Finder
method aggressive (line 9) | def aggressive(_opts = {})
method wp_cron_url (line 17) | def wp_cron_url
FILE: app/finders/main_theme.rb
type WPScan (line 9) | module WPScan
type Finders (line 10) | module Finders
type MainTheme (line 11) | module MainTheme
class Base (line 13) | class Base
method initialize (line 17) | def initialize(target)
FILE: app/finders/main_theme/css_style_in_404_page.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type MainTheme (line 5) | module MainTheme
class CssStyleIn404Page (line 7) | class CssStyleIn404Page < CssStyleInHomepage
method passive (line 8) | def passive(opts = {})
FILE: app/finders/main_theme/css_style_in_homepage.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type MainTheme (line 5) | module MainTheme
class CssStyleInHomepage (line 7) | class CssStyleInHomepage < CMSScanner::Finders::Finder
method create_theme (line 10) | def create_theme(slug, style_url, opts)
method passive (line 18) | def passive(opts = {})
method passive_from_css_href (line 22) | def passive_from_css_href(res, opts)
method passive_from_style_code (line 31) | def passive_from_style_code(res, opts)
FILE: app/finders/main_theme/urls_in_404_page.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type MainTheme (line 5) | module MainTheme
class UrlsIn404Page (line 7) | class UrlsIn404Page < UrlsInHomepage
method page_res (line 9) | def page_res
FILE: app/finders/main_theme/urls_in_homepage.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type MainTheme (line 5) | module MainTheme
class UrlsInHomepage (line 7) | class UrlsInHomepage < CMSScanner::Finders::Finder
method passive (line 13) | def passive(opts = {})
method page_res (line 26) | def page_res
FILE: app/finders/main_theme/woo_framework_meta_generator.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type MainTheme (line 5) | module MainTheme
class WooFrameworkMetaGenerator (line 7) | class WooFrameworkMetaGenerator < CMSScanner::Finders::Finder
method passive (line 12) | def passive(opts = {})
FILE: app/finders/medias.rb
type WPScan (line 5) | module WPScan
type Finders (line 6) | module Finders
type Medias (line 7) | module Medias
class Base (line 9) | class Base
method initialize (line 13) | def initialize(target)
FILE: app/finders/medias/attachment_brute_forcing.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Medias (line 5) | module Medias
class AttachmentBruteForcing (line 7) | class AttachmentBruteForcing < CMSScanner::Finders::Finder
method aggressive (line 14) | def aggressive(opts = {})
method target_urls (line 30) | def target_urls(opts = {})
method create_progress_bar (line 40) | def create_progress_bar(opts = {})
FILE: app/finders/passwords/wp_login.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Passwords (line 5) | module Passwords
class WpLogin (line 7) | class WpLogin < CMSScanner::Finders::Finder
method login_request (line 10) | def login_request(username, password)
method valid_credentials? (line 14) | def valid_credentials?(response)
method errored_response? (line 19) | def errored_response?(response)
FILE: app/finders/passwords/xml_rpc.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Passwords (line 5) | module Passwords
class XMLRPC (line 7) | class XMLRPC < CMSScanner::Finders::Finder
method login_request (line 10) | def login_request(username, password)
method valid_credentials? (line 14) | def valid_credentials?(response)
method errored_response? (line 18) | def errored_response?(response)
FILE: app/finders/passwords/xml_rpc_multicall.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Passwords (line 5) | module Passwords
class XMLRPCMulticall (line 8) | class XMLRPCMulticall < CMSScanner::Finders::Finder
method do_multi_call (line 13) | def do_multi_call(users, passwords)
method passwords_from_wordlist (line 29) | def passwords_from_wordlist(file, passwords_size)
method attack (line 58) | def attack(users, wordlist_path, opts = {})
method passwords_size (line 115) | def passwords_size(max_passwords, users_size)
method check_and_output_errors (line 123) | def check_and_output_errors(res)
FILE: app/finders/plugin_version.rb
type WPScan (line 5) | module WPScan
type Finders (line 6) | module Finders
type PluginVersion (line 7) | module PluginVersion
class Base (line 9) | class Base
method initialize (line 13) | def initialize(plugin)
method create_and_load_dynamic_versions_finders (line 22) | def create_and_load_dynamic_versions_finders(plugin)
FILE: app/finders/plugin_version/readme.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type PluginVersion (line 5) | module PluginVersion
class Readme (line 7) | class Readme < CMSScanner::Finders::Finder
method aggressive (line 9) | def aggressive(_opts = {})
method version_numbers (line 33) | def version_numbers(body)
method from_stable_tag (line 50) | def from_stable_tag(body)
method from_changelog_section (line 61) | def from_changelog_section(body)
FILE: app/finders/plugins.rb
type WPScan (line 15) | module WPScan
type Finders (line 16) | module Finders
type Plugins (line 17) | module Plugins
class Base (line 19) | class Base
method initialize (line 23) | def initialize(target)
FILE: app/finders/plugins/body_pattern.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Plugins (line 5) | module Plugins
class BodyPattern (line 7) | class BodyPattern < Finders::DynamicFinder::WpItems::Finder
method process_response (line 17) | def process_response(opts, response, slug, klass, config)
FILE: app/finders/plugins/comment.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Plugins (line 5) | module Plugins
class Comment (line 7) | class Comment < Finders::DynamicFinder::WpItems::Finder
method process_response (line 17) | def process_response(opts, response, slug, klass, config)
FILE: app/finders/plugins/config_parser.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Plugins (line 5) | module Plugins
class ConfigParser (line 7) | class ConfigParser < Finders::DynamicFinder::WpItems::Finder
method _process_response (line 17) | def _process_response(_opts, _response, slug, klass, config)
FILE: app/finders/plugins/header_pattern.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Plugins (line 5) | module Plugins
class HeaderPattern (line 7) | class HeaderPattern < Finders::DynamicFinder::WpItems::Finder
method passive (line 13) | def passive(opts = {})
method aggressive (line 37) | def aggressive(_opts = {})
FILE: app/finders/plugins/javascript_var.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Plugins (line 5) | module Plugins
class JavascriptVar (line 7) | class JavascriptVar < Finders::DynamicFinder::WpItems::Finder
method process_response (line 17) | def process_response(opts, response, slug, klass, config)
FILE: app/finders/plugins/known_locations.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Plugins (line 5) | module Plugins
class KnownLocations (line 7) | class KnownLocations < CMSScanner::Finders::Finder
method valid_response_codes (line 11) | def valid_response_codes
method aggressive (line 19) | def aggressive(opts = {})
method target_urls (line 39) | def target_urls(opts = {})
method create_progress_bar (line 50) | def create_progress_bar(opts = {})
FILE: app/finders/plugins/query_parameter.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Plugins (line 5) | module Plugins
class QueryParameter (line 7) | class QueryParameter < Finders::DynamicFinder::WpItems::Finder
method passive (line 10) | def passive(_opts = {})
method process_response (line 21) | def process_response(opts, response, slug, klass, config)
FILE: app/finders/plugins/urls_in_404_page.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Plugins (line 5) | module Plugins
class UrlsIn404Page (line 8) | class UrlsIn404Page < UrlsInHomepage
method page_res (line 10) | def page_res
FILE: app/finders/plugins/urls_in_homepage.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Plugins (line 5) | module Plugins
class UrlsInHomepage (line 8) | class UrlsInHomepage < CMSScanner::Finders::Finder
method passive (line 14) | def passive(opts = {})
method page_res (line 25) | def page_res
FILE: app/finders/plugins/xpath.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Plugins (line 5) | module Plugins
class Xpath (line 7) | class Xpath < Finders::DynamicFinder::WpItems::Finder
method process_response (line 17) | def process_response(opts, response, slug, klass, config)
FILE: app/finders/theme_version.rb
type WPScan (line 6) | module WPScan
type Finders (line 7) | module Finders
type ThemeVersion (line 8) | module ThemeVersion
class Base (line 10) | class Base
method initialize (line 14) | def initialize(theme)
method create_and_load_dynamic_versions_finders (line 25) | def create_and_load_dynamic_versions_finders(theme)
FILE: app/finders/theme_version/style.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type ThemeVersion (line 5) | module ThemeVersion
class Style (line 7) | class Style < CMSScanner::Finders::Finder
method passive (line 11) | def passive(_opts = {})
method aggressive (line 20) | def aggressive(_opts = {})
method cached_style? (line 27) | def cached_style?
method style_version (line 32) | def style_version
FILE: app/finders/theme_version/woo_framework_meta_generator.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type ThemeVersion (line 5) | module ThemeVersion
class WooFrameworkMetaGenerator (line 7) | class WooFrameworkMetaGenerator < CMSScanner::Finders::Finder
method passive (line 11) | def passive(_opts = {})
FILE: app/finders/themes.rb
type WPScan (line 7) | module WPScan
type Finders (line 8) | module Finders
type Themes (line 9) | module Themes
class Base (line 11) | class Base
method initialize (line 15) | def initialize(target)
FILE: app/finders/themes/known_locations.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Themes (line 5) | module Themes
class KnownLocations (line 7) | class KnownLocations < CMSScanner::Finders::Finder
method valid_response_codes (line 11) | def valid_response_codes
method aggressive (line 19) | def aggressive(opts = {})
method target_urls (line 39) | def target_urls(opts = {})
method create_progress_bar (line 50) | def create_progress_bar(opts = {})
FILE: app/finders/themes/urls_in_404_page.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Themes (line 5) | module Themes
class UrlsIn404Page (line 7) | class UrlsIn404Page < UrlsInHomepage
method page_res (line 9) | def page_res
FILE: app/finders/themes/urls_in_homepage.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Themes (line 5) | module Themes
class UrlsInHomepage (line 7) | class UrlsInHomepage < CMSScanner::Finders::Finder
method passive (line 13) | def passive(opts = {})
method page_res (line 24) | def page_res
FILE: app/finders/timthumb_version.rb
type WPScan (line 5) | module WPScan
type Finders (line 6) | module Finders
type TimthumbVersion (line 7) | module TimthumbVersion
class Base (line 9) | class Base
method initialize (line 13) | def initialize(target)
FILE: app/finders/timthumb_version/bad_request.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type TimthumbVersion (line 5) | module TimthumbVersion
class BadRequest (line 8) | class BadRequest < CMSScanner::Finders::Finder
method aggressive (line 10) | def aggressive(_opts = {})
FILE: app/finders/timthumbs.rb
type WPScan (line 5) | module WPScan
type Finders (line 6) | module Finders
type Timthumbs (line 7) | module Timthumbs
class Base (line 9) | class Base
method initialize (line 13) | def initialize(target)
FILE: app/finders/timthumbs/known_locations.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Timthumbs (line 5) | module Timthumbs
class KnownLocations (line 9) | class KnownLocations < CMSScanner::Finders::Finder
method valid_response_codes (line 13) | def valid_response_codes
method aggressive (line 21) | def aggressive(opts = {})
method target_urls (line 37) | def target_urls(opts = {})
method main_theme_timthumbs_paths (line 54) | def main_theme_timthumbs_paths
method create_progress_bar (line 59) | def create_progress_bar(opts = {})
FILE: app/finders/users.rb
type WPScan (line 12) | module WPScan
type Finders (line 13) | module Finders
class UsersFinders (line 16) | class UsersFinders < SameTypeFinders
method filter_findings (line 17) | def filter_findings
type Users (line 24) | module Users
class Base (line 26) | class Base
method initialize (line 30) | def initialize(target)
method finders (line 42) | def finders
FILE: app/finders/users/author_id_brute_forcing.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Users (line 5) | module Users
class AuthorIdBruteForcing (line 7) | class AuthorIdBruteForcing < CMSScanner::Finders::Finder
method valid_response_codes (line 11) | def valid_response_codes
method aggressive (line 19) | def aggressive(opts = {})
method target_urls (line 43) | def target_urls(opts = {})
method create_progress_bar (line 53) | def create_progress_bar(opts = {})
method full_request_params (line 57) | def full_request_params
method potential_username (line 64) | def potential_username(res)
method username_from_author_url (line 77) | def username_from_author_url(uri)
method username_from_response (line 86) | def username_from_response(res)
method display_name_from_body (line 100) | def display_name_from_body(body)
FILE: app/finders/users/author_posts.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Users (line 5) | module Users
class AuthorPosts (line 7) | class AuthorPosts < CMSScanner::Finders::Finder
method passive (line 11) | def passive(opts = {})
method usernames (line 26) | def usernames(_opts = {})
method potential_usernames (line 45) | def potential_usernames(res)
FILE: app/finders/users/author_sitemap.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Users (line 5) | module Users
class AuthorSitemap (line 8) | class AuthorSitemap < CMSScanner::Finders::Finder
method aggressive (line 12) | def aggressive(_opts = {})
method sitemap_url (line 30) | def sitemap_url
FILE: app/finders/users/login_error_messages.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Users (line 5) | module Users
class LoginErrorMessages (line 13) | class LoginErrorMessages < CMSScanner::Finders::Finder
method aggressive (line 18) | def aggressive(opts = {})
method usernames (line 36) | def usernames(opts = {})
FILE: app/finders/users/oembed_api.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Users (line 5) | module Users
class OembedApi (line 8) | class OembedApi < CMSScanner::Finders::Finder
method passive (line 12) | def passive(_opts = {})
method aggressive (line 20) | def aggressive(_opts = {})
method user_details_from_oembed_data (line 34) | def user_details_from_oembed_data(oembed_data)
method found_by_msg (line 48) | def found_by_msg
method api_url (line 53) | def api_url
FILE: app/finders/users/rss_generator.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Users (line 5) | module Users
class RSSGenerator (line 9) | class RSSGenerator < Finders::WpVersion::RSSGenerator
method process_urls (line 10) | def process_urls(urls, _opts = {})
FILE: app/finders/users/wp_json_api.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Users (line 5) | module Users
class WpJsonApi (line 11) | class WpJsonApi < CMSScanner::Finders::Finder
method aggressive (line 17) | def aggressive(_opts = {})
method users_from_response (line 42) | def users_from_response(response)
method api_url (line 57) | def api_url
FILE: app/finders/users/yoast_seo_author_sitemap.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type Users (line 5) | module Users
class YoastSeoAuthorSitemap (line 8) | class YoastSeoAuthorSitemap < AuthorSitemap
method sitemap_url (line 10) | def sitemap_url
FILE: app/finders/wp_items/urls_in_page.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type WpItems (line 5) | module WpItems
type UrlsInPage (line 7) | module UrlsInPage
function items_from_links (line 12) | def items_from_links(type, uniq: true)
function items_from_codes (line 34) | def items_from_codes(type, uniq: true)
function item_attribute_pattern (line 50) | def item_attribute_pattern(type)
function item_code_pattern (line 57) | def item_code_pattern(type)
function item_url_pattern (line 64) | def item_url_pattern(type)
FILE: app/finders/wp_version.rb
type WPScan (line 9) | module WPScan
type Finders (line 10) | module Finders
class WpVersionFinders (line 15) | class WpVersionFinders < UniqueFinders
method filter_findings (line 16) | def filter_findings
type WpVersion (line 23) | module WpVersion
class Base (line 25) | class Base
method initialize (line 29) | def initialize(target)
method finders (line 38) | def finders
FILE: app/finders/wp_version/atom_generator.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type WpVersion (line 5) | module WpVersion
class AtomGenerator (line 7) | class AtomGenerator < CMSScanner::Finders::Finder
method process_urls (line 10) | def process_urls(urls, _opts = {})
method passive_urls_xpath (line 30) | def passive_urls_xpath
method aggressive_urls (line 34) | def aggressive_urls(_opts = {})
FILE: app/finders/wp_version/rdf_generator.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type WpVersion (line 5) | module WpVersion
class RDFGenerator (line 7) | class RDFGenerator < CMSScanner::Finders::Finder
method process_urls (line 10) | def process_urls(urls, _opts = {})
method passive_urls_xpath (line 30) | def passive_urls_xpath
method aggressive_urls (line 34) | def aggressive_urls(_opts = {})
FILE: app/finders/wp_version/readme.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type WpVersion (line 5) | module WpVersion
class Readme (line 7) | class Readme < CMSScanner::Finders::Finder
method aggressive (line 9) | def aggressive(_opts = {})
FILE: app/finders/wp_version/rss_generator.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type WpVersion (line 5) | module WpVersion
class RSSGenerator (line 7) | class RSSGenerator < CMSScanner::Finders::Finder
method process_urls (line 10) | def process_urls(urls, _opts = {})
method passive_urls_xpath (line 33) | def passive_urls_xpath
method aggressive_urls (line 37) | def aggressive_urls(_opts = {})
FILE: app/finders/wp_version/unique_fingerprinting.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type WpVersion (line 5) | module WpVersion
class UniqueFingerprinting (line 7) | class UniqueFingerprinting < CMSScanner::Finders::Finder
method aggressive (line 11) | def aggressive(opts = {})
method create_progress_bar (line 26) | def create_progress_bar(opts = {})
FILE: app/models.rb
type WPScan (line 3) | module WPScan
type Model (line 4) | module Model
FILE: app/models/config_backup.rb
type WPScan (line 3) | module WPScan
type Model (line 4) | module Model
class ConfigBackup (line 6) | class ConfigBackup < InterestingFinding
FILE: app/models/db_export.rb
type WPScan (line 3) | module WPScan
type Model (line 4) | module Model
class DbExport (line 6) | class DbExport < InterestingFinding
FILE: app/models/interesting_finding.rb
type WPScan (line 3) | module WPScan
type Model (line 4) | module Model
class InterestingFinding (line 6) | class InterestingFinding < CMSScanner::Model::InterestingFinding
class BackupDB (line 10) | class BackupDB < InterestingFinding
method to_s (line 11) | def to_s
method references (line 16) | def references
class DebugLog (line 21) | class DebugLog < InterestingFinding
method to_s (line 22) | def to_s
method references (line 27) | def references
class DuplicatorInstallerLog (line 32) | class DuplicatorInstallerLog < InterestingFinding
method references (line 34) | def references
class EmergencyPwdResetScript (line 39) | class EmergencyPwdResetScript < InterestingFinding
method references (line 40) | def references
class FullPathDisclosure (line 47) | class FullPathDisclosure < InterestingFinding
method to_s (line 48) | def to_s
method references (line 53) | def references
class MuPlugins (line 58) | class MuPlugins < InterestingFinding
method to_s (line 60) | def to_s
method references (line 65) | def references
class Multisite (line 70) | class Multisite < InterestingFinding
method to_s (line 72) | def to_s
method references (line 77) | def references
class Readme (line 82) | class Readme < InterestingFinding
method to_s (line 83) | def to_s
class Registration (line 88) | class Registration < InterestingFinding
method to_s (line 90) | def to_s
class TmmDbMigrate (line 95) | class TmmDbMigrate < InterestingFinding
method to_s (line 96) | def to_s
method references (line 101) | def references
class UploadDirectoryListing (line 106) | class UploadDirectoryListing < InterestingFinding
method to_s (line 108) | def to_s
class UploadSQLDump (line 113) | class UploadSQLDump < InterestingFinding
method to_s (line 114) | def to_s
class WPCron (line 119) | class WPCron < InterestingFinding
method to_s (line 121) | def to_s
method references (line 126) | def references
class PHPDisabled (line 136) | class PHPDisabled < InterestingFinding
method to_s (line 138) | def to_s
method references (line 143) | def references
FILE: app/models/media.rb
type WPScan (line 3) | module WPScan
type Model (line 4) | module Model
class Media (line 6) | class Media < InterestingFinding
FILE: app/models/plugin.rb
type WPScan (line 3) | module WPScan
type Model (line 4) | module Model
class Plugin (line 6) | class Plugin < WpItem
method initialize (line 8) | def initialize(slug, blog, opts = {})
method metadata (line 21) | def metadata
method db_data (line 26) | def db_data
method version (line 33) | def version(opts = {})
method potential_readme_filenames (line 40) | def potential_readme_filenames
FILE: app/models/theme.rb
type WPScan (line 3) | module WPScan
type Model (line 4) | module Model
class Theme (line 6) | class Theme < WpItem
method initialize (line 11) | def initialize(slug, blog, opts = {})
method metadata (line 27) | def metadata
method db_data (line 32) | def db_data
method version (line 39) | def version(opts = {})
method parent_theme (line 46) | def parent_theme
method parent_themes (line 62) | def parent_themes(depth = 3)
method style_body (line 78) | def style_body
method parse_style (line 82) | def parse_style
method parse_style_tag (line 103) | def parse_style_tag(body, tag)
method == (line 109) | def ==(other)
FILE: app/models/timthumb.rb
type WPScan (line 3) | module WPScan
type Model (line 4) | module Model
class Timthumb (line 6) | class Timthumb < InterestingFinding
method initialize (line 14) | def initialize(url, opts = {})
method version (line 23) | def version(opts = {})
method vulnerabilities (line 30) | def vulnerabilities
method rce_132_vuln (line 40) | def rce_132_vuln
method rce_webshot_vuln (line 50) | def rce_webshot_vuln
method webshot_enabled? (line 63) | def webshot_enabled?
method default_allowed_domains (line 70) | def default_allowed_domains
FILE: app/models/wp_item.rb
type WPScan (line 3) | module WPScan
type Model (line 4) | module Model
class WpItem (line 6) | class WpItem
method initialize (line 25) | def initialize(slug, blog, opts = {})
method vulnerabilities (line 37) | def vulnerabilities
method vulnerable_to? (line 55) | def vulnerable_to?(vuln)
method latest_version (line 64) | def latest_version
method popular? (line 70) | def popular?
method last_updated (line 75) | def last_updated
method outdated? (line 80) | def outdated?
method url (line 91) | def url(path = nil)
method == (line 99) | def ==(other)
method to_s (line 103) | def to_s
method classify (line 108) | def classify
method readme_url (line 113) | def readme_url
method potential_readme_filenames (line 127) | def potential_readme_filenames
method directory_listing? (line 135) | def directory_listing?(path = nil, params = {})
method error_log? (line 145) | def error_log?(path = 'error_log', params = {})
method head_and_get (line 164) | def head_and_get(path, codes = [200], params = {})
FILE: app/models/wp_version.rb
type WPScan (line 3) | module WPScan
type Model (line 4) | module Model
class WpVersion (line 6) | class WpVersion < CMSScanner::Model::Version
method initialize (line 9) | def initialize(number, opts = {})
method valid? (line 18) | def self.valid?(number)
method all (line 23) | def self.all
method metadata (line 45) | def metadata
method db_data (line 50) | def db_data
method vulnerabilities (line 55) | def vulnerabilities
method release_date (line 68) | def release_date
method status (line 73) | def status
FILE: app/models/xml_rpc.rb
type WPScan (line 3) | module WPScan
type Model (line 4) | module Model
class XMLRPC (line 6) | class XMLRPC < CMSScanner::Model::XMLRPC
method references (line 10) | def references
FILE: lib/wpscan.rb
type WPScan (line 37) | module WPScan
function app_name (line 52) | def self.app_name
function api_requests (line 57) | def self.api_requests
function api_requests= (line 62) | def self.api_requests=(value)
FILE: lib/wpscan/browser.rb
type WPScan (line 3) | module WPScan
class Browser (line 5) | class Browser < CMSScanner::Browser
method default_user_agent (line 9) | def default_user_agent
FILE: lib/wpscan/controller.rb
type WPScan (line 3) | module WPScan
type Controller (line 7) | module Controller
FILE: lib/wpscan/controllers.rb
type WPScan (line 3) | module WPScan
class Controllers (line 5) | class Controllers < CMSScanner::Controllers
method initialize (line 6) | def initialize(option_parser = OptParseValidator::OptParser.new(nil,...
FILE: lib/wpscan/db/dynamic_finders/base.rb
type WPScan (line 3) | module WPScan
type DB (line 4) | module DB
type DynamicFinders (line 5) | module DynamicFinders
class Base (line 6) | class Base
method df_file (line 8) | def self.df_file
method all_df_data (line 13) | def self.all_df_data
method allowed_classes (line 22) | def self.allowed_classes
method method_missing (line 29) | def self.method_missing(sym)
method respond_to_missing? (line 42) | def self.respond_to_missing?(sym, *_args)
FILE: lib/wpscan/db/dynamic_finders/plugin.rb
type WPScan (line 3) | module WPScan
type DB (line 4) | module DB
type DynamicFinders (line 5) | module DynamicFinders
class Plugin (line 6) | class Plugin < Base
method df_data (line 8) | def self.df_data
method version_finder_module (line 12) | def self.version_finder_module
method finder_configs (line 19) | def self.finder_configs(finder_class, aggressive: false)
method versions_finders_configs (line 46) | def self.versions_finders_configs
method maybe_create_module (line 65) | def self.maybe_create_module(slug)
method create_versions_finders (line 81) | def self.create_versions_finders(slug)
method version_finder_super_class (line 114) | def self.version_finder_super_class(klass)
FILE: lib/wpscan/db/dynamic_finders/theme.rb
type WPScan (line 3) | module WPScan
type DB (line 4) | module DB
type DynamicFinders (line 5) | module DynamicFinders
class Theme (line 6) | class Theme < Plugin
method df_data (line 8) | def self.df_data
method version_finder_module (line 12) | def self.version_finder_module
FILE: lib/wpscan/db/dynamic_finders/wordpress.rb
type WPScan (line 3) | module WPScan
type DB (line 4) | module DB
type DynamicFinders (line 5) | module DynamicFinders
class Wordpress (line 6) | class Wordpress < Base
method df_data (line 8) | def self.df_data
method version_finder_module (line 13) | def self.version_finder_module
method allowed_classes (line 18) | def self.allowed_classes
method finder_configs (line 27) | def self.finder_configs(finder_class, aggressive: false)
method versions_finders_configs (line 50) | def self.versions_finders_configs
method create_versions_finders (line 54) | def self.create_versions_finders
method version_finder_super_class (line 71) | def self.version_finder_super_class(klass)
FILE: lib/wpscan/db/fingerprints.rb
type WPScan (line 3) | module WPScan
type DB (line 4) | module DB
class Fingerprints (line 6) | class Fingerprints
method unique_fingerprints (line 21) | def self.unique_fingerprints(data)
method wp_fingerprints_path (line 37) | def self.wp_fingerprints_path
method wp_fingerprints (line 42) | def self.wp_fingerprints
method wp_unique_fingerprints (line 47) | def self.wp_unique_fingerprints
FILE: lib/wpscan/db/plugin.rb
type WPScan (line 3) | module WPScan
type DB (line 4) | module DB
class Plugin (line 6) | class Plugin < WpItem
method metadata (line 8) | def self.metadata
FILE: lib/wpscan/db/plugins.rb
type WPScan (line 3) | module WPScan
type DB (line 4) | module DB
class Plugins (line 6) | class Plugins < WpItems
method metadata (line 8) | def self.metadata
FILE: lib/wpscan/db/sponsor.rb
type WPScan (line 3) | module WPScan
type DB (line 4) | module DB
class Sponsor (line 5) | class Sponsor
method text (line 7) | def self.text
method file_path (line 11) | def self.file_path
FILE: lib/wpscan/db/theme.rb
type WPScan (line 3) | module WPScan
type DB (line 4) | module DB
class Theme (line 6) | class Theme < WpItem
method metadata (line 8) | def self.metadata
FILE: lib/wpscan/db/themes.rb
type WPScan (line 3) | module WPScan
type DB (line 4) | module DB
class Themes (line 6) | class Themes < WpItems
method metadata (line 8) | def self.metadata
FILE: lib/wpscan/db/updater.rb
type WPScan (line 3) | module WPScan
type DB (line 4) | module DB
class Updater (line 7) | class Updater
method initialize (line 22) | def initialize(repo_directory)
method delete_old_files (line 40) | def delete_old_files
method last_update (line 47) | def last_update
method last_update_file (line 54) | def last_update_file
method outdated? (line 59) | def outdated?
method missing_files? (line 66) | def missing_files?
method request_params (line 75) | def request_params
method remote_file_url (line 86) | def remote_file_url(filename)
method remote_file_checksum (line 91) | def remote_file_checksum(filename)
method local_file_path (line 101) | def local_file_path(filename)
method local_file_checksum (line 105) | def local_file_checksum(filename)
method backup_file_path (line 110) | def backup_file_path(filename)
method create_backup (line 114) | def create_backup(filename)
method restore_backup (line 120) | def restore_backup(filename)
method delete_backup (line 126) | def delete_backup(filename)
method download (line 131) | def download(filename)
method update (line 144) | def update
FILE: lib/wpscan/db/vuln_api.rb
type WPScan (line 3) | module WPScan
type DB (line 4) | module DB
class VulnApi (line 6) | class VulnApi
method uri (line 14) | def self.uri
method get (line 22) | def self.get(path, params = {})
method plugin_data (line 47) | def self.plugin_data(slug)
method theme_data (line 52) | def self.theme_data(slug)
method wordpress_data (line 57) | def self.wordpress_data(version_number)
method status (line 62) | def self.status
method default_request_params (line 72) | def self.default_request_params
FILE: lib/wpscan/db/wp_item.rb
type WPScan (line 3) | module WPScan
type DB (line 4) | module DB
class WpItem (line 6) | class WpItem
method metadata_at (line 10) | def self.metadata_at(identifier)
method metadata (line 15) | def self.metadata
method metadata_file (line 20) | def self.metadata_file
FILE: lib/wpscan/db/wp_items.rb
type WPScan (line 3) | module WPScan
type DB (line 4) | module DB
class WpItems (line 6) | class WpItems
method all_slugs (line 8) | def self.all_slugs
method popular_slugs (line 13) | def self.popular_slugs
method vulnerable_slugs (line 18) | def self.vulnerable_slugs
FILE: lib/wpscan/db/wp_version.rb
type WPScan (line 3) | module WPScan
type DB (line 4) | module DB
class Version (line 6) | class Version < WpItem
method metadata (line 8) | def self.metadata
FILE: lib/wpscan/errors.rb
type WPScan (line 3) | module WPScan
type Error (line 4) | module Error
class Standard (line 7) | class Standard < StandardError
FILE: lib/wpscan/errors/enumeration.rb
type WPScan (line 3) | module WPScan
type Error (line 4) | module Error
class PluginsThresholdReached (line 5) | class PluginsThresholdReached < Standard
method to_s (line 6) | def to_s
class ThemesThresholdReached (line 13) | class ThemesThresholdReached < Standard
method to_s (line 14) | def to_s
FILE: lib/wpscan/errors/http.rb
type WPScan (line 3) | module WPScan
type Error (line 4) | module Error
class HTTP (line 6) | class HTTP < Standard
method initialize (line 10) | def initialize(response)
method failure_details (line 14) | def failure_details
method to_s (line 26) | def to_s
class Download (line 32) | class Download < HTTP
method to_s (line 33) | def to_s
FILE: lib/wpscan/errors/update.rb
type WPScan (line 3) | module WPScan
type Error (line 4) | module Error
class MissingDatabaseFile (line 6) | class MissingDatabaseFile < Standard
method to_s (line 7) | def to_s
class ChecksumsMismatch (line 12) | class ChecksumsMismatch < Standard
method initialize (line 15) | def initialize(db_file)
method to_s (line 19) | def to_s
FILE: lib/wpscan/errors/vuln_api.rb
type WPScan (line 3) | module WPScan
type Error (line 4) | module Error
class InvalidApiToken (line 6) | class InvalidApiToken < Standard
method to_s (line 7) | def to_s
class ApiLimitReached (line 14) | class ApiLimitReached < Standard
method to_s (line 15) | def to_s
FILE: lib/wpscan/errors/wordpress.rb
type WPScan (line 3) | module WPScan
type Error (line 4) | module Error
class WordPressHosted (line 6) | class WordPressHosted < Standard
method to_s (line 7) | def to_s
class NotWordPress (line 13) | class NotWordPress < Standard
method to_s (line 14) | def to_s
class InvalidWordPressVersion (line 20) | class InvalidWordPressVersion < Standard
method to_s (line 21) | def to_s
class WpContentDirNotDetected (line 26) | class WpContentDirNotDetected < Standard
method to_s (line 27) | def to_s
class NoLoginInterfaceDetected (line 33) | class NoLoginInterfaceDetected < Standard
method to_s (line 34) | def to_s
FILE: lib/wpscan/errors/xmlrpc.rb
type WPScan (line 3) | module WPScan
type Error (line 4) | module Error
class XMLRPCNotDetected (line 6) | class XMLRPCNotDetected < Standard
method to_s (line 7) | def to_s
FILE: lib/wpscan/finders.rb
type WPScan (line 18) | module WPScan
type Finders (line 20) | module Finders
type InterestingFindings (line 24) | module InterestingFindings
FILE: lib/wpscan/finders/dynamic_finder/finder.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type DynamicFinder (line 5) | module DynamicFinder
class Finder (line 7) | class Finder < CMSScanner::Finders::Finder
method child_class_constant (line 9) | def self.child_class_constant(*args)
method child_class_constants (line 23) | def self.child_class_constants
method create_child_class (line 30) | def self.create_child_class(mod, klass, config)
method find (line 48) | def find(_response, _opts = {})
method passive (line 54) | def passive(opts = {})
method aggressive (line 68) | def aggressive(opts = {})
FILE: lib/wpscan/finders/dynamic_finder/version/body_pattern.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type DynamicFinder (line 5) | module DynamicFinder
type Version (line 6) | module Version
class BodyPattern (line 9) | class BodyPattern < Finders::DynamicFinder::Version::Finder
method child_class_constants (line 11) | def self.child_class_constants
method find (line 18) | def find(response, _opts = {})
FILE: lib/wpscan/finders/dynamic_finder/version/comment.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type DynamicFinder (line 5) | module DynamicFinder
type Version (line 6) | module Version
class Comment (line 9) | class Comment < Finders::DynamicFinder::Version::Xpath
method child_class_constants (line 11) | def self.child_class_constants
FILE: lib/wpscan/finders/dynamic_finder/version/config_parser.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type DynamicFinder (line 5) | module DynamicFinder
type Version (line 6) | module Version
class ConfigParser (line 9) | class ConfigParser < Finders::DynamicFinder::Version::Finder
method child_class_constants (line 12) | def self.child_class_constants
method parse (line 20) | def parse(body)
method passive (line 35) | def passive(opts = {}); end
method find (line 40) | def find(response, _opts = {})
FILE: lib/wpscan/finders/dynamic_finder/version/finder.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type DynamicFinder (line 5) | module DynamicFinder
type Version (line 6) | module Version
class Finder (line 9) | class Finder < Finders::DynamicFinder::Finder
method create_version (line 15) | def create_version(number, finding_opts)
method version_finding_opts (line 21) | def version_finding_opts(opts)
FILE: lib/wpscan/finders/dynamic_finder/version/header_pattern.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type DynamicFinder (line 5) | module DynamicFinder
type Version (line 6) | module Version
class HeaderPattern (line 8) | class HeaderPattern < Finders::DynamicFinder::Version::Finder
method child_class_constants (line 10) | def self.child_class_constants
method find (line 17) | def find(response, _opts = {})
FILE: lib/wpscan/finders/dynamic_finder/version/javascript_var.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type DynamicFinder (line 5) | module DynamicFinder
type Version (line 6) | module Version
class JavascriptVar (line 8) | class JavascriptVar < Finders::DynamicFinder::Version::Finder
method child_class_constants (line 10) | def self.child_class_constants
method find (line 20) | def find(response, _opts = {})
method version_number_from_match_data (line 41) | def version_number_from_match_data(match_data)
FILE: lib/wpscan/finders/dynamic_finder/version/query_parameter.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type DynamicFinder (line 5) | module DynamicFinder
type Version (line 6) | module Version
class QueryParameter (line 8) | class QueryParameter < Finders::DynamicFinder::Version::Finder
method child_class_constants (line 10) | def self.child_class_constants
method find (line 19) | def find(response, _opts = {})
method scan_response (line 35) | def scan_response(response)
method xpath (line 51) | def xpath
method path_pattern (line 56) | def path_pattern
FILE: lib/wpscan/finders/dynamic_finder/version/xpath.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type DynamicFinder (line 5) | module DynamicFinder
type Version (line 6) | module Version
class Xpath (line 8) | class Xpath < Finders::DynamicFinder::Version::Finder
method child_class_constants (line 10) | def self.child_class_constants
method find (line 19) | def find(response, _opts = {})
FILE: lib/wpscan/finders/dynamic_finder/wp_item_version.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type DynamicFinder (line 5) | module DynamicFinder
type WpItemVersion (line 6) | module WpItemVersion
class BodyPattern (line 7) | class BodyPattern < Finders::DynamicFinder::Version::BodyPattern
class Comment (line 10) | class Comment < Finders::DynamicFinder::Version::Comment
class ConfigParser (line 13) | class ConfigParser < Finders::DynamicFinder::Version::ConfigParser
class HeaderPattern (line 16) | class HeaderPattern < Finders::DynamicFinder::Version::HeaderPat...
class JavascriptVar (line 19) | class JavascriptVar < Finders::DynamicFinder::Version::Javascrip...
class QueryParameter (line 22) | class QueryParameter < Finders::DynamicFinder::Version::QueryPar...
method path_pattern (line 24) | def path_pattern
method xpath (line 33) | def xpath
class Xpath (line 40) | class Xpath < Finders::DynamicFinder::Version::Xpath
FILE: lib/wpscan/finders/dynamic_finder/wp_items/finder.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type DynamicFinder (line 5) | module DynamicFinder
type WpItems (line 6) | module WpItems
class Finder (line 14) | class Finder < CMSScanner::Finders::Finder
method passive_configs (line 17) | def passive_configs
method passive (line 29) | def passive(opts = {})
method aggressive_configs (line 50) | def aggressive_configs
method aggressive (line 62) | def aggressive(_opts = {})
method aggressive_ (line 70) | def aggressive_(opts = {})
method aggressive_path (line 93) | def aggressive_path(slug, config)
FILE: lib/wpscan/finders/dynamic_finder/wp_version.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
type DynamicFinder (line 5) | module DynamicFinder
type WpVersion (line 6) | module WpVersion
type Finder (line 7) | module Finder
function create_version (line 8) | def create_version(number, finding_opts)
class BodyPattern (line 15) | class BodyPattern < Finders::DynamicFinder::Version::BodyPattern
class Comment (line 19) | class Comment < Finders::DynamicFinder::Version::Comment
class HeaderPattern (line 23) | class HeaderPattern < Finders::DynamicFinder::Version::HeaderPat...
class JavascriptVar (line 27) | class JavascriptVar < Finders::DynamicFinder::Version::Javascrip...
class QueryParameter (line 31) | class QueryParameter < Finders::DynamicFinder::Version::QueryPar...
method child_class_constants (line 35) | def self.child_class_constants
class WpItemQueryParameter (line 42) | class WpItemQueryParameter < QueryParameter
method xpath (line 43) | def xpath
method path_pattern (line 50) | def path_pattern
class Xpath (line 59) | class Xpath < WPScan::Finders::DynamicFinder::Version::Xpath
FILE: lib/wpscan/finders/finder/wp_version/smart_url_checker.rb
type WPScan (line 3) | module WPScan
type Finders (line 4) | module Finders
class Finder (line 5) | class Finder
type WpVersion (line 6) | module WpVersion
type SmartURLChecker (line 8) | module SmartURLChecker
function create_version (line 11) | def create_version(number, opts = {})
FILE: lib/wpscan/helper.rb
function read_json_file (line 3) | def read_json_file(file)
function classify_slug (line 15) | def classify_slug(slug)
FILE: lib/wpscan/parsed_cli.rb
type WPScan (line 3) | module WPScan
class ParsedCli (line 5) | class ParsedCli < CMSScanner::ParsedCli
FILE: lib/wpscan/references.rb
type WPScan (line 3) | module WPScan
type References (line 6) | module References
type ClassMethods (line 10) | module ClassMethods
function references_keys (line 12) | def references_keys
function references_urls (line 17) | def references_urls
function wpvulndb_ids (line 21) | def wpvulndb_ids
function wpvulndb_urls (line 25) | def wpvulndb_urls
function wpvulndb_url (line 29) | def wpvulndb_url(id)
FILE: lib/wpscan/target.rb
type WPScan (line 5) | module WPScan
class Target (line 7) | class Target < CMSScanner::Target
method head_or_get_request_params (line 11) | def head_or_get_request_params
method vulnerable? (line 20) | def vulnerable?
method xmlrpc (line 34) | def xmlrpc
method wp_version (line 41) | def wp_version(opts = {})
method main_theme (line 50) | def main_theme(opts = {})
method plugins (line 59) | def plugins(opts = {})
method themes (line 66) | def themes(opts = {})
method timthumbs (line 73) | def timthumbs(opts = {})
method config_backups (line 80) | def config_backups(opts = {})
method db_exports (line 87) | def db_exports(opts = {})
method medias (line 94) | def medias(opts = {})
method users (line 101) | def users(opts = {})
FILE: lib/wpscan/target/platform/wordpress.rb
type WPScan (line 7) | module WPScan
class Target (line 8) | class Target < CMSScanner::Target
type Platform (line 9) | module Platform
type WordPress (line 11) | module WordPress
function wordpress? (line 29) | def wordpress?(detection_mode)
function wordpress_from_meta_comments_or_scripts? (line 51) | def wordpress_from_meta_comments_or_scripts?(response)
function maybe_add_cookies (line 75) | def maybe_add_cookies
function registration_url (line 98) | def registration_url
function wordpress_hosted? (line 103) | def wordpress_hosted?
function do_login (line 119) | def do_login(username, password)
function login_request (line 127) | def login_request(username, password)
function login_url (line 143) | def login_url
FILE: lib/wpscan/target/platform/wordpress/custom_directories.rb
type WPScan (line 3) | module WPScan
class Target (line 4) | class Target < CMSScanner::Target
type Platform (line 5) | module Platform
type WordPress (line 7) | module WordPress
function content_dir= (line 8) | def content_dir=(dir)
function plugins_dir= (line 12) | def plugins_dir=(dir)
function content_dir (line 17) | def content_dir
function default_content_dir_exists? (line 39) | def default_content_dir_exists?
function content_uri (line 46) | def content_uri
function content_url (line 51) | def content_url
function plugins_dir (line 56) | def plugins_dir
function plugins_uri (line 61) | def plugins_uri
function plugins_url (line 66) | def plugins_url
function plugin_url (line 73) | def plugin_url(slug)
function themes_dir (line 78) | def themes_dir
function themes_uri (line 83) | def themes_uri
function themes_url (line 88) | def themes_url
function theme_url (line 95) | def theme_url(slug)
function sub_dir (line 103) | def sub_dir
function url (line 124) | def url(path = nil)
FILE: lib/wpscan/typhoeus/response.rb
type Typhoeus (line 3) | module Typhoeus
class Response (line 5) | class Response
method from_vuln_api? (line 9) | def from_vuln_api?
FILE: lib/wpscan/version.rb
type WPScan (line 4) | module WPScan
FILE: lib/wpscan/vulnerability.rb
type WPScan (line 3) | module WPScan
class Vulnerability (line 5) | class Vulnerability < CMSScanner::Vulnerability
method load_from_json (line 10) | def self.load_from_json(json_data)
FILE: lib/wpscan/vulnerable.rb
type WPScan (line 3) | module WPScan
type Vulnerable (line 6) | module Vulnerable
function vulnerable? (line 8) | def vulnerable?
FILE: spec/app/controllers/wp_version_spec.rb
function it_calls_the_formatter_with_the_correct_parameter (line 3) | def it_calls_the_formatter_with_the_correct_parameter(version)
FILE: spec/app/finders/plugin_version/readme_spec.rb
function version (line 9) | def version(number, found_by, confidence)
function stable_tag (line 18) | def stable_tag(number)
function changelog_section (line 22) | def changelog_section(number)
FILE: spec/app/finders/plugins/header_pattern_spec.rb
function plugin (line 9) | def plugin(slug)
FILE: spec/fixtures/dynamic_finders/plugin_version/4nton-extensions/javascript_file/assets/js/script.js
function xcroppie (line 27) | function xcroppie(){
function croppie (line 142) | function croppie(){
function ajax_search (line 353) | function ajax_search(id){
FILE: spec/fixtures/dynamic_finders/plugin_version/ad-inserter/javascript_var/js/ad-inserter.js
function SyntaxHighlight (line 233) | function SyntaxHighlight (id, block, settings) {
function change_block_alignment (line 313) | function change_block_alignment (block) {
function change_banner_image (line 317) | function change_banner_image (block) {
function get_editor_text (line 350) | function get_editor_text (block) {
function set_editor_text (line 360) | function set_editor_text (block, text) {
function window_open_post (line 372) | function window_open_post (url, windowoption, name, params) {
function remove_default_values (line 712) | function remove_default_values (block) {
function configure_editor_language (line 828) | function configure_editor_language (block) {
function disable_auto_refresh_statistics (line 837) | function disable_auto_refresh_statistics () {
function reload_statistics (line 843) | function reload_statistics (block) {
function getDate (line 850) | function getDate (element) {
function process_scheduling_dates (line 861) | function process_scheduling_dates (block) {
function process_chart_dates (line 894) | function process_chart_dates (block) {
function process_display_elements (line 928) | function process_display_elements (block) {
function process_adsense_elements (line 1052) | function process_adsense_elements (block) {
function switch_editor (line 1087) | function switch_editor (block, editor_disabled) {
function configure_editor (line 1104) | function configure_editor (block) {
function configure_adb (line 1149) | function configure_adb () {
function configure_statistics_toolbar (line 1164) | function configure_statistics_toolbar (tab) {
function configure_tab_0 (line 1304) | function configure_tab_0 () {
function configure_tab (line 1448) | function configure_tab (tab) {
function import_rotation_code (line 2282) | function import_rotation_code (block) {
function generate_rotatation_code (line 2341) | function generate_rotatation_code (block) {
function add_rotate_options (line 2390) | function add_rotate_options (block, new_options) {
function remove_rotate_option (line 2429) | function remove_rotate_option (block, option) {
function create_list_selector (line 2458) | function create_list_selector (element_name_prefix, index) {
function update_list_from_selection (line 2502) | function update_list_from_selection (select_element, element_name_prefix) {
function update_selection_from_list (line 2524) | function update_selection_from_list (list_element, element_name_prefix, ...
function create_multi_select (line 2564) | function create_multi_select (select, element_name_prefix, index) {
function create_list_editor (line 2603) | function create_list_editor (element_name_prefix, index) {
function clean_url_list (line 2622) | function clean_url_list (list_element, list_items) {
function update_editor_from_list (line 2668) | function update_editor_from_list (list_element, element_name_prefix, tog...
function update_list_from_editor (line 2689) | function update_list_from_editor (editor, element_name_prefix) {
function configure_hidden_tab (line 2700) | function configure_hidden_tab () {
function configure_chart (line 2736) | function configure_chart (container) {
function update_rating (line 2808) | function update_rating (parameter) {
function configure_charts (line 2824) | function configure_charts (container) {
function replace_block_number (line 2833) | function replace_block_number (element, attribute, old_block, new_block) {
function copy_to_clipboard (line 2843) | function copy_to_clipboard () {
function load_saved_settings_to_clipboard (line 2875) | function load_saved_settings_to_clipboard (block, paste) {
function paste_from_clipboard (line 2941) | function paste_from_clipboard (paste_name, paste_code, paste_settings, c...
function reload_list (line 3043) | function reload_list () {
function reload_adsense_list (line 3108) | function reload_adsense_list (update_ad_units) {
function configure_tabs (line 3277) | function configure_tabs () {
function reload_settings (line 3353) | function reload_settings () {
function update_adsense_authorization (line 3402) | function update_adsense_authorization (authorization_code) {
function update_block_code_demo (line 3417) | function update_block_code_demo () {
FILE: spec/fixtures/dynamic_finders/plugin_version/addressfinder-woo/javascript_var/addressfinder.js
function n (line 1) | function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{...
function i (line 1) | function i(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a ...
function e (line 1) | function e(e,n){for(var t=0;t<n.length;t++){var i=n[t];i.enumerable=i.en...
function e (line 1) | function e(n){i(this,e),this.version="1.2.10",this.widgetConfig=n,$=wind...
function n (line 1) | function n(n,i){switch($("#"+e+"country").val()){case"NZ":t.bind(this)("...
function t (line 1) | function t(e){for(var n=["nz","au"],t=0;t<n.length;t++)n[t]==e?(i[n[t]]....
FILE: spec/fixtures/dynamic_finders/plugin_version/caldera-forms/javascript_comment/assets/js/vue.js
function _toString (line 17) | function _toString (val) {
function toNumber (line 29) | function toNumber (val) {
function makeMap (line 38) | function makeMap (
function remove$1 (line 60) | function remove$1 (arr, item) {
function hasOwn (line 73) | function hasOwn (obj, key) {
function isPrimitive (line 80) | function isPrimitive (value) {
function cached (line 87) | function cached (fn) {
function bind$1 (line 124) | function bind$1 (fn, ctx) {
function toArray (line 141) | function toArray (list, start) {
function extend (line 154) | function extend (to, _from) {
function isObject (line 166) | function isObject (obj) {
function isPlainObject (line 176) | function isPlainObject (obj) {
function toObject (line 183) | function toObject (arr) {
function noop (line 196) | function noop () {}
function genStaticKeys (line 211) | function genStaticKeys (modules) {
function looseEqual (line 221) | function looseEqual (a, b) {
function looseIndexOf (line 231) | function looseIndexOf (arr, val) {
function isReserved (line 335) | function isReserved (str) {
function def (line 343) | function def (obj, key, val, enumerable) {
function parsePath (line 356) | function parsePath (path) {
function isNative (line 407) | function isNative (Ctor) {
function nextTickHandler (line 419) | function nextTickHandler () {
function Set (line 498) | function Set () {
function pushTarget (line 592) | function pushTarget (_target) {
function popTarget (line 597) | function popTarget () {
function protoAugment (line 714) | function protoAugment (target, src) {
function copyAugment (line 725) | function copyAugment (target, src, keys) {
function observe (line 737) | function observe (value) {
function defineReactive$$1 (line 759) | function defineReactive$$1 (
function set$1 (line 819) | function set$1 (obj, key, val) {
function del (line 849) | function del (obj, key) {
function dependArray (line 872) | function dependArray (value) {
function mergeData (line 909) | function mergeData (to, from) {
function mergeHook (line 983) | function mergeHook (
function mergeAssets (line 1007) | function mergeAssets (parentVal, childVal) {
function checkComponents (line 1069) | function checkComponents (options) {
function normalizeProps (line 1085) | function normalizeProps (options) {
function normalizeDirectives (line 1116) | function normalizeDirectives (options) {
function mergeOptions (line 1132) | function mergeOptions (
function resolveAsset (line 1179) | function resolveAsset (
function validateProp (line 1209) | function validateProp (
function getPropDefaultValue (line 1245) | function getPropDefaultValue (vm, prop, key) {
function assertProp (line 1276) | function assertProp (
function assertType (line 1329) | function assertType (value, type) {
function getType (line 1358) | function getType (fn) {
function isBooleanType (line 1363) | function isBooleanType (fn) {
method _Set (line 1417) | get _Set () { return _Set; }
method warn (line 1420) | get warn () { return warn; }
method formatComponentName (line 1421) | get formatComponentName () { return formatComponentName; }
function resetSchedulerState (line 1512) | function resetSchedulerState () {
function flushSchedulerQueue (line 1524) | function flushSchedulerQueue () {
function queueWatcher (line 1575) | function queueWatcher (watcher) {
function traverse (line 1808) | function traverse (val) {
function _traverse (line 1813) | function _traverse (val, seen) {
function initState (line 1838) | function initState (vm) {
function initProps (line 1849) | function initProps (vm) {
function initData (line 1886) | function initData (vm) {
function initComputed (line 1926) | function initComputed (vm) {
function makeComputedGetter (line 1949) | function makeComputedGetter (getter, owner) {
function initMethods (line 1964) | function initMethods (vm) {
function initWatch (line 1980) | function initWatch (vm) {
function createWatcher (line 1996) | function createWatcher (vm, key, handler) {
function stateMixin (line 2008) | function stateMixin (Vue) {
function proxy (line 2048) | function proxy (vm, key) {
function createTextVNode (line 2101) | function createTextVNode (val) {
function cloneVNode (line 2109) | function cloneVNode (vnode) {
function cloneVNodes (line 2126) | function cloneVNodes (vnodes) {
function initLifecycle (line 2138) | function initLifecycle (vm) {
function lifecycleMixin (line 2163) | function lifecycleMixin (Vue) {
function callHook (line 2333) | function callHook (vm, hook) {
function createComponent (line 2348) | function createComponent (
function createFunctionalComponent (line 2428) | function createFunctionalComponent (
function createComponentInstanceForVnode (line 2462) | function createComponentInstanceForVnode (
function init (line 2489) | function init (
function prepatch (line 2510) | function prepatch (
function insert (line 2524) | function insert (vnode) {
function destroy$1 (line 2535) | function destroy$1 (vnode) {
function resolveAsyncComponent (line 2546) | function resolveAsyncComponent (
function extractProps (line 2594) | function extractProps (data, Ctor) {
function checkProp (line 2617) | function checkProp (
function mergeHooks (line 2642) | function mergeHooks (data) {
function mergeHook$1 (line 2654) | function mergeHook$1 (one, two) {
function mergeVNodeHook (line 2663) | function mergeVNodeHook (def, hookKey, hook, key) {
function updateListeners (line 2682) | function updateListeners (
function arrInvoker (line 2736) | function arrInvoker (arr) {
function fnInvoker (line 2747) | function fnInvoker (o) {
function normalizeChildren (line 2756) | function normalizeChildren (children) {
function normalizeArrayChildren (line 2764) | function normalizeArrayChildren (children, nestedIndex) {
function getFirstComponentChild (line 2798) | function getFirstComponentChild (children) {
function createElement (line 2806) | function createElement (
function _createElement (line 2823) | function _createElement (
function applyNS (line 2887) | function applyNS (vnode, ns) {
function initRender (line 2901) | function initRender (vm) {
function renderMixin (line 2922) | function renderMixin (Vue) {
function resolveSlots (line 3147) | function resolveSlots (
function initEvents (line 3185) | function initEvents (vm) {
function eventsMixin (line 3201) | function eventsMixin (Vue) {
function initMixin (line 3265) | function initMixin (Vue) {
function initInternalComponent (line 3300) | function initInternalComponent (vm, options) {
function resolveConstructorOptions (line 3317) | function resolveConstructorOptions (Ctor) {
function Vue$3 (line 3338) | function Vue$3 (options) {
function initUse (line 3354) | function initUse (Vue) {
function initMixin$1 (line 3375) | function initMixin$1 (Vue) {
function initExtend (line 3383) | function initExtend (Vue) {
function initAssetRegisters (line 3450) | function initAssetRegisters (Vue) {
function matches (line 3489) | function matches (pattern, name) {
function initGlobalAPI (line 3550) | function initGlobalAPI (Vue) {
function genClassForVnode (line 3632) | function genClassForVnode (vnode) {
function mergeClassData (line 3650) | function mergeClassData (child, parent) {
function genClassFromData (line 3659) | function genClassFromData (data) {
function concat (line 3669) | function concat (a, b) {
function stringifyClass (line 3673) | function stringifyClass (value) {
function getTagNamespace (line 3739) | function getTagNamespace (tag) {
function isUnknownElement (line 3751) | function isUnknownElement (tag) {
function query (line 3781) | function query (el) {
function createElement$1 (line 3797) | function createElement$1 (tagName, vnode) {
function createElementNS (line 3808) | function createElementNS (namespace, tagName) {
function createTextNode (line 3812) | function createTextNode (text) {
function createComment (line 3816) | function createComment (text) {
function insertBefore (line 3820) | function insertBefore (parentNode, newNode, referenceNode) {
function removeChild (line 3824) | function removeChild (node, child) {
function appendChild (line 3828) | function appendChild (node, child) {
function parentNode (line 3832) | function parentNode (node) {
function nextSibling (line 3836) | function nextSibling (node) {
function tagName (line 3840) | function tagName (node) {
function setTextContent (line 3844) | function setTextContent (node, text) {
function setAttribute (line 3848) | function setAttribute (node, key, val) {
function registerRef (line 3885) | function registerRef (vnode, isRemoval) {
function isUndef (line 3929) | function isUndef (s) {
function isDef (line 3933) | function isDef (s) {
function sameVnode (line 3937) | function sameVnode (vnode1, vnode2) {
function createKeyToOldIdx (line 3946) | function createKeyToOldIdx (children, beginIdx, endIdx) {
function createPatchFunction (line 3956) | function createPatchFunction (backend) {
function updateDirectives (line 4523) | function updateDirectives (oldVnode, vnode) {
function _update (line 4529) | function _update (oldVnode, vnode) {
function normalizeDirectives$1 (line 4590) | function normalizeDirectives$1 (
function getRawDirName (line 4610) | function getRawDirName (dir) {
function callHook$1 (line 4614) | function callHook$1 (dir, hook, vnode, oldVnode) {
function updateAttrs (line 4628) | function updateAttrs (oldVnode, vnode) {
function setAttr (line 4664) | function setAttr (el, key, value) {
function updateClass (line 4697) | function updateClass (oldVnode, vnode) {
function add$1 (line 4730) | function add$1 (event, handler, once, capture) {
function remove$2 (line 4743) | function remove$2 (event, handler, capture) {
function updateDOMListeners (line 4747) | function updateDOMListeners (oldVnode, vnode) {
function updateDOMProps (line 4764) | function updateDOMProps (oldVnode, vnode) {
function isValueChanged (line 4809) | function isValueChanged (vnode, newVal) {
function normalizeStyleData (line 4842) | function normalizeStyleData (data) {
function normalizeStyleBinding (line 4852) | function normalizeStyleBinding (bindingStyle) {
function getStyle (line 4866) | function getStyle (vnode, checkChild) {
function updateStyle (line 4926) | function updateStyle (oldVnode, vnode) {
function addClass (line 4974) | function addClass (el, cls) {
function removeClass (line 4999) | function removeClass (el, cls) {
function nextFrame (line 5048) | function nextFrame (fn) {
function addTransitionClass (line 5054) | function addTransitionClass (el, cls) {
function removeTransitionClass (line 5059) | function removeTransitionClass (el, cls) {
function whenTransitionEnds (line 5066) | function whenTransitionEnds (
function getTransitionInfo (line 5099) | function getTransitionInfo (el, expectedType) {
function getTimeout (line 5148) | function getTimeout (delays, durations) {
function toMs (line 5159) | function toMs (s) {
function enter (line 5165) | function enter (vnode, toggleDisplay) {
function leave (line 5283) | function leave (vnode, rm) {
function resolveTransition (line 5371) | function resolveTransition (def$$1) {
function once (line 5399) | function once (fn) {
function _enter (line 5409) | function _enter (_, vnode) {
function setSelected (line 5515) | function setSelected (el, binding, vm) {
function hasNoMatchingOption (line 5548) | function hasNoMatchingOption (value, options) {
function getValue (line 5557) | function getValue (option) {
function onCompositionStart (line 5563) | function onCompositionStart (e) {
function onCompositionEnd (line 5567) | function onCompositionEnd (e) {
function trigger (line 5572) | function trigger (el, type) {
function locateNode (line 5581) | function locateNode (vnode) {
function getRealChild (line 5655) | function getRealChild (vnode) {
function extractTransitionData (line 5664) | function extractTransitionData (comp) {
function placeholder (line 5680) | function placeholder (h, rawChild) {
function hasParentTransition (line 5686) | function hasParentTransition (vnode) {
function callPendingCbs (line 5924) | function callPendingCbs (c) {
function recordPosition (line 5935) | function recordPosition (c) {
function applyTranslation (line 5939) | function applyTranslation (c) {
function shouldDecode (line 6002) | function shouldDecode (content, encoded) {
function decode (line 6016) | function decode (html) {
function decodeAttr (line 6118) | function decodeAttr (value, shouldDecodeNewlines) {
function parseHTML (line 6129) | function parseHTML (html, options) {
function parseFilters (line 6362) | function parseFilters (exp) {
function wrapFilter (line 6444) | function wrapFilter (exp, filter) {
function parseText (line 6467) | function parseText (
function baseWarn (line 6497) | function baseWarn (msg) {
function pluckModuleFunction (line 6501) | function pluckModuleFunction (
function addProp (line 6510) | function addProp (el, name, value) {
function addAttr (line 6514) | function addAttr (el, name, value) {
function addDirective (line 6518) | function addDirective (
function addHandler (line 6529) | function addHandler (
function getBindingAttr (line 6564) | function getBindingAttr (
function getAndRemoveAttr (line 6582) | function getAndRemoveAttr (el, name) {
function parseModel (line 6617) | function parseModel (val) {
function next (line 6645) | function next () {
function eof (line 6649) | function eof () {
function isStringStart (line 6653) | function isStringStart (chr) {
function parseBracket (line 6657) | function parseBracket (chr) {
function parseString (line 6675) | function parseString (chr) {
function parse (line 6710) | function parse (
function processPre (line 6922) | function processPre (el) {
function processRawAttrs (line 6928) | function processRawAttrs (el) {
function processKey (line 6944) | function processKey (el) {
function processRef (line 6954) | function processRef (el) {
function processFor (line 6962) | function processFor (el) {
function processIf (line 6987) | function processIf (el) {
function processIfConditions (line 7006) | function processIfConditions (el, parent) {
function addIfCondition (line 7021) | function addIfCondition (el, condition) {
function processOnce (line 7028) | function processOnce (el) {
function processSlot (line 7035) | function processSlot (el) {
function processComponent (line 7056) | function processComponent (el) {
function processAttrs (line 7066) | function processAttrs (el) {
function checkInFor (line 7132) | function checkInFor (el) {
function parseModifiers (line 7143) | function parseModifiers (name) {
function makeAttrsMap (line 7152) | function makeAttrsMap (attrs) {
function findPrevElement (line 7163) | function findPrevElement (children) {
function isForbiddenTag (line 7170) | function isForbiddenTag (el) {
function guardIESVGBug (line 7184) | function guardIESVGBug (attrs) {
function checkForAliasModel (line 7196) | function checkForAliasModel (el, value) {
function optimize (line 7230) | function optimize (root, options) {
function genStaticKeys$1 (line 7240) | function genStaticKeys$1 (keys) {
function markStatic (line 7247) | function markStatic (node) {
function markStaticRoots (line 7270) | function markStaticRoots (node, isInFor) {
function walkThroughConditionsBlocks (line 7298) | function walkThroughConditionsBlocks (conditionBlocks, isInFor) {
function isStatic (line 7304) | function isStatic (node) {
function isDirectChildOfTemplateFor (line 7321) | function isDirectChildOfTemplateFor (node) {
function genHandlers (line 7362) | function genHandlers (events, native) {
function genHandler (line 7370) | function genHandler (
function genKeyFilter (line 7402) | function genKeyFilter (keys) {
function genFilterCode (line 7406) | function genFilterCode (key) {
function bind$2 (line 7417) | function bind$2 (el, dir) {
function generate (line 7439) | function generate (
function genElement (line 7462) | function genElement (el) {
function genStatic (line 7495) | function genStatic (el) {
function genOnce (line 7502) | function genOnce (el) {
function genIf (line 7528) | function genIf (el) {
function genIfConditions (line 7533) | function genIfConditions (conditions) {
function genFor (line 7551) | function genFor (el) {
function genData (line 7563) | function genData (el) {
function genDirectives (line 7632) | function genDirectives (el) {
function genInlineTemplate (line 7657) | function genInlineTemplate (el) {
function genScopedSlots (line 7670) | function genScopedSlots (slots) {
function genScopedSlot (line 7674) | function genScopedSlot (key, el) {
function genChildren (line 7681) | function genChildren (el, checkSkip) {
function canSkipNormalization (line 7698) | function canSkipNormalization (children) {
function needsNormalization (line 7709) | function needsNormalization (el) {
function genNode (line 7713) | function genNode (node) {
function genText (line 7721) | function genText (text) {
function genSlot (line 7727) | function genSlot (el) {
function genComponent (line 7734) | function genComponent (componentName, el) {
function genProps (line 7739) | function genProps (props) {
function transformSpecialNewlines (line 7749) | function transformSpecialNewlines (text) {
function compile$1 (line 7760) | function compile$1 (
function detectErrors (line 7788) | function detectErrors (ast) {
function checkNode (line 7796) | function checkNode (node, errors) {
function checkFor (line 7820) | function checkFor (node, text, errors) {
function checkIdentifier (line 7827) | function checkIdentifier (ident, type, text, errors) {
function checkExpression (line 7833) | function checkExpression (exp, text, errors) {
function transformNode (line 7851) | function transformNode (el, options) {
function genData$1 (line 7874) | function genData$1 (el) {
function transformNode$1 (line 7893) | function transformNode$1 (el, options) {
function genData$2 (line 7918) | function genData$2 (el) {
function model$1 (line 7944) | function model$1 (
function genCheckboxModel (line 7976) | function genCheckboxModel (
function genRadioModel (line 8012) | function genRadioModel (
function genDefaultModel (line 8032) | function genDefaultModel (
function genSelect (line 8092) | function genSelect (
function checkOptionWarning (line 8112) | function checkOptionWarning (option) {
function genAssignmentCode (line 8126) | function genAssignmentCode (value, assignment) {
function text (line 8140) | function text (el, dir) {
function html (line 8148) | function html (el, dir) {
function compile$$1 (line 8176) | function compile$$1 (
function compileToFunctions (line 8186) | function compileToFunctions (
function makeFunction (line 8236) | function makeFunction (code) {
function getOuterHTML (line 8312) | function getOuterHTML (el) {
FILE: spec/fixtures/dynamic_finders/plugin_version/cookie-law-info/javascript_comment/js/cookielawinfo.js
function cli_show_cookiebar (line 1) | function cli_show_cookiebar(p) {
function l1hs (line 209) | function l1hs(str){if(str.charAt(0)=="#"){str=str.substring(1,str.length...
FILE: spec/fixtures/dynamic_finders/plugin_version/elementor/javascript_comment/assets/js/admin-feedback.js
function s (line 2) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
FILE: spec/fixtures/dynamic_finders/plugin_version/fluentform/javascript_comment/public/libs/jquery-datetimepicker/jquery.datetimepicker.full.js
function getCurrentValue (line 2173) | function getCurrentValue() {
function setMask (line 2201) | function setMask(options) {
function HighlightedDate (line 2454) | function HighlightedDate(date, desc, style) {
function handler (line 2568) | function handler(event) {
function nullLowestDelta (line 2681) | function nullLowestDelta() {
function shouldAdjustOldDeltas (line 2685) | function shouldAdjustOldDeltas(orgEvent, absDelta) {
FILE: spec/fixtures/dynamic_finders/plugin_version/media-element-html5-video-and-audio-player/javascript_var/mediaelement/v4/mediaelement-and-player.js
function s (line 11) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
function noop (line 58) | function noop() {}
function bind (line 61) | function bind(fn, thisArg) {
function Promise (line 67) | function Promise(fn) {
function handle (line 78) | function handle(self, deferred) {
function resolve (line 104) | function resolve(self, newValue) {
function reject (line 128) | function reject(self, newValue) {
function finale (line 134) | function finale(self) {
function Handler (line 149) | function Handler(onFulfilled, onRejected, promise) {
function doResolve (line 161) | function doResolve(fn, self) {
function res (line 198) | function res(i, val) {
function _interopRequireDefault (line 303) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _interopRequireDefault (line 582) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 584) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function _interopRequireDefault (line 1016) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function defineProperties (line 1047) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 1053) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1055) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Renderer (line 1058) | function Renderer() {
function _interopRequireWildcard (line 1180) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 1182) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _interopRequireDefault (line 1468) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function togglePlayPause (line 1497) | function togglePlayPause(which) {
function _interopRequireDefault (line 1563) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _interopRequireDefault (line 2096) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _interopRequireDefault (line 2228) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _interopRequireDefault (line 2986) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function defineProperties (line 3433) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 3471) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 3473) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 3475) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function MediaElementPlayer (line 3584) | function MediaElementPlayer(node, o) {
function defineProperties (line 5307) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 5313) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 5315) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function DefaultPlayer (line 5318) | function DefaultPlayer(player) {
function _interopRequireDefault (line 5487) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _interopRequireDefault (line 5545) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _interopRequireDefault (line 5806) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _interopRequireDefault (line 6237) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _interopRequireDefault (line 6486) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _interopRequireDefault (line 6773) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _interopRequireDefault (line 6922) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _interopRequireDefault (line 7448) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _interopRequireDefault (line 7642) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function loadScript (line 7644) | function loadScript(url) {
function offset (line 7661) | function offset(el) {
function toggleClass (line 7700) | function toggleClass(el, className) {
function fadeOut (line 7704) | function fadeOut(el) {
function fadeIn (line 7728) | function fadeIn(el) {
function siblings (line 7752) | function siblings(el, filter) {
function visible (line 7763) | function visible(elem) {
function ajax (line 7770) | function ajax(url, dataType, success, error) {
function _interopRequireDefault (line 7861) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function escapeHTML (line 7863) | function escapeHTML(input) {
function debounce (line 7881) | function debounce(func, wait) {
function isObjectEmpty (line 7916) | function isObjectEmpty(instance) {
function splitEvents (line 7920) | function splitEvents(events, id) {
function createEvent (line 7940) | function createEvent(eventName, target) {
function isNodeAfter (line 7961) | function isNodeAfter(sourceNode, targetNode) {
function isString (line 7966) | function isString(value) {
function _interopRequireDefault (line 7999) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function absolutizeUrl (line 8003) | function absolutizeUrl(url) {
function formatType (line 8014) | function formatType(url) {
function getMimeFromType (line 8020) | function getMimeFromType(type) {
function getTypeFromFile (line 8029) | function getTypeFromFile(url) {
function getExtension (line 8059) | function getExtension(url) {
function normalizeExtension (line 8070) | function normalizeExtension(extension) {
function _interopRequireDefault (line 8113) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function CustomEvent (line 8137) | function CustomEvent(event, params) {
function _interopRequireDefault (line 8271) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function isDropFrame (line 8273) | function isDropFrame() {
function secondsToTimeCode (line 8278) | function secondsToTimeCode(time) {
function timeCodeToSeconds (line 8367) | function timeCodeToSeconds(time) {
function calculateTimeFormat (line 8428) | function calculateTimeFormat(time, options) {
function convertSMPTEtoSeconds (line 8477) | function convertSMPTEtoSeconds(SMPTE) {
FILE: spec/fixtures/dynamic_finders/plugin_version/qoob/javascript_var/qoob/qoob-backend-starter.js
function QoobStarter (line 14) | function QoobStarter(options) {
FILE: spec/fixtures/dynamic_finders/plugin_version/redirection/javascript_comment/redirection.js
function t (line 2) | function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{...
function n (line 7) | function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t]...
function r (line 7) | function r(e){return function(){return e}}
function r (line 7) | function r(e,t,n){function o(){b===g&&(b=g.slice())}function a(){return ...
function o (line 7) | function o(e,t){var n=t&&t.type;return"Given action "+(n&&'"'+n.toString...
function a (line 7) | function a(e){Object.keys(e).forEach(function(t){var n=e[t];if(void 0===...
function i (line 7) | function i(e){for(var t=Object.keys(e),n={},r=0;r<t.length;r++){var i=t[...
function l (line 7) | function l(e,t){return function(){return t(e.apply(void 0,arguments))}}
function s (line 7) | function s(e,t){if("function"==typeof e)return l(e,t);if("object"!=typeo...
function u (line 7) | function u(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=argu...
function c (line 7) | function c(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=argu...
function r (line 7) | function r(e){var t=g.call(e,y),n=e[y];try{e[y]=void 0;var r=!0}catch(e)...
function o (line 7) | function o(e){return w.call(e)}
function a (line 7) | function a(e){return null==e?void 0===e?k:_:x&&x in Object(e)?v(e):O(e)}
function i (line 7) | function i(e,t){return function(n){return e(t(n))}}
function l (line 7) | function l(e){return null!=e&&"object"==typeof e}
function s (line 7) | function s(e){if(!T(e)||C(e)!=N)return!1;var t=P(e);if(null===t)return!0...
function r (line 7) | function r(e){if(null===e||void 0===e)throw new TypeError("Object.assign...
function n (line 12) | function n(){this._events=this._events||{},this._maxListeners=this._maxL...
function r (line 12) | function r(e){return"function"==typeof e}
function o (line 12) | function o(e){return"number"==typeof e}
function a (line 12) | function a(e){return"object"==typeof e&&null!==e}
function i (line 12) | function i(e){return void 0===e}
function n (line 12) | function n(){this.removeListener(e,n),o||(o=!0,t.apply(this,arguments))}
function r (line 12) | function r(e,t,n,r,a,i,l,s){if(o(t),!e){var u;if(void 0===t)u=new Error(...
function r (line 12) | function r(){this.protocol=null,this.slashes=null,this.auth=null,this.ho...
function o (line 12) | function o(e,t,n){if(e&&u.isObject(e)&&e instanceof r)return e;var o=new...
function a (line 12) | function a(e){return u.isString(e)&&(e=o(e)),e instanceof r?e.format():r...
function i (line 12) | function i(e,t){return o(e,!1,!0).resolve(t)}
function l (line 12) | function l(e,t){return e?o(e,!1,!0).resolveObject(t):t}
function r (line 12) | function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a ...
function o (line 12) | function o(e,t){if(!e)throw new ReferenceError("this hasn't been initial...
function a (line 12) | function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("S...
function i (line 12) | function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a ...
function l (line 12) | function l(){var e=[],t=[];return{clear:function(){t=xr,e=xr},notify:fun...
function s (line 12) | function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a ...
function u (line 12) | function u(e,t){if(!e)throw new ReferenceError("this hasn't been initial...
function c (line 12) | function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("S...
function p (line 12) | function p(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototyp...
function f (line 12) | function f(){}
function d (line 12) | function d(e,t){var n={run:function(r){try{var o=e(t.getState(),r);(o!==...
function h (line 12) | function h(e){var t,n,r=arguments.length>1&&void 0!==arguments[1]?argume...
function m (line 12) | function m(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!==e&&t!==t}
function g (line 12) | function g(e,t){if(m(e,t))return!0;if("object"!=typeof e||null===e||"obj...
function b (line 12) | function b(e){return function(t,n){function r(){return o}var o=e(t,n);re...
function y (line 12) | function y(e){return null!==e.dependsOnOwnProps&&void 0!==e.dependsOnOwn...
function v (line 12) | function v(e,t){return function(t,n){var r=(n.displayName,function(e,t){...
function E (line 12) | function E(e){return"function"==typeof e?v(e,"mapDispatchToProps"):void 0}
function w (line 12) | function w(e){return e?void 0:b(function(e){return{dispatch:e}})}
function O (line 12) | function O(e){return e&&"object"==typeof e?b(function(t){return Object(R...
function _ (line 12) | function _(e){return"function"==typeof e?v(e,"mapStateToProps"):void 0}
function k (line 12) | function k(e){return e?void 0:b(function(){return{}})}
function x (line 12) | function x(e,t,n){return Ar({},n,e,t)}
function C (line 12) | function C(e){return function(t,n){var r=(n.displayName,n.pure),o=n.areM...
function S (line 12) | function S(e){return"function"==typeof e?C(e):void 0}
function j (line 12) | function j(e){return e?void 0:function(){return x}}
function P (line 12) | function P(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototyp...
function T (line 12) | function T(e,t,n,r){return function(o,a){return n(e(o,a),t(r,a),a)}}
function N (line 12) | function N(e,t,n,r,o){function a(o,a){return h=o,m=a,g=e(h,m),b=t(r,m),y...
function R (line 12) | function R(e,t){var n=t.initMapStateToProps,r=t.initMapDispatchToProps,o...
function D (line 12) | function D(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototyp...
function I (line 12) | function I(e,t,n){for(var r=t.length-1;r>=0;r--){var o=t[r](e);if(o)retu...
function A (line 12) | function A(e,t){return e===t}
function L (line 12) | function L(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
function F (line 12) | function F(e,t){history.pushState({},null,M(e,t))}
function U (line 12) | function U(e){return so.parse(e?e.slice(1):document.location.search.slic...
function M (line 12) | function M(e,t,n){var r=U(n);for(var o in e)e[o]&&t[o]!==e[o]?r[o.toLowe...
function B (line 12) | function B(e){var t=U(e);return-1!==co.indexOf(t.sub)?t.sub:"redirect"}
function H (line 12) | function H(){return Redirectioni10n.pluginRoot+"&sub=rss&module=1&token=...
function z (line 12) | function z(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.len...
function V (line 12) | function V(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototyp...
function G (line 12) | function G(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
function q (line 12) | function q(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
function W (line 12) | function W(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
function $ (line 12) | function $(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
function K (line 12) | function K(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
function Q (line 12) | function Q(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
function Y (line 12) | function Y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enume...
function J (line 12) | function J(e,t,n){return Ka({},e,Y({},t[n],t))}
function X (line 12) | function X(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
function Z (line 12) | function Z(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
function ee (line 12) | function ee(){return Redirectioni10n&&Redirectioni10n.preload&&Redirecti...
function te (line 12) | function te(){var e=ee();return{loadStatus:Qr,saveStatus:!1,error:!1,ins...
function ne (line 12) | function ne(){return{rows:[],saving:[],logType:lo,total:0,status:Qr,tabl...
function re (line 12) | function re(){return{rows:[],saving:[],logType:lo,total:0,status:Qr,tabl...
function oe (line 12) | function oe(){return{status:Qr,file:!1,lastImport:!1,exportData:!1,impor...
function ae (line 12) | function ae(){return{rows:[],saving:[],total:0,status:Qr,table:mo(["name...
function ie (line 12) | function ie(){return{rows:[],saving:[],total:0,addTop:!1,status:Qr,table...
function le (line 12) | function le(){return{errors:[],notices:[],inProgress:0,saving:[]}}
function se (line 12) | function se(){return{status:Qr,maps:{},agents:{},error:""}}
function ue (line 12) | function ue(){return{settings:te(),log:ne(),error:re(),io:oe(),group:ae(...
function ce (line 12) | function ce(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enum...
function pe (line 12) | function pe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function fe (line 12) | function fe(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function de (line 12) | function de(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function he (line 12) | function he(e){return{onSaveSettings:function(t){e(ni(t))}}}
function me (line 12) | function me(e){var t=e.settings;return{groups:t.groups,values:t.values,s...
function ge (line 12) | function ge(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function be (line 12) | function be(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function ye (line 12) | function ye(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function ve (line 12) | function ve(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function Ee (line 12) | function Ee(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function we (line 12) | function we(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Oe (line 12) | function Oe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enum...
function _e (line 12) | function _e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function ke (line 12) | function ke(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function xe (line 12) | function xe(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Ce (line 12) | function Ce(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function Se (line 12) | function Se(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function je (line 12) | function je(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Pe (line 12) | function Pe(e){return{onLoadSettings:function(){e(ti())},onDeletePlugin:...
function Te (line 12) | function Te(e){var t=e.settings;return{loadStatus:t.loadStatus,values:t....
function Ne (line 12) | function Ne(e){return{onSubscribe:function(){e(ni({newsletter:!0}))}}}
function Re (line 12) | function Re(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function De (line 12) | function De(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function Ie (line 12) | function Ie(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Ae (line 12) | function Ae(e){return{onLoadStatus:function(){e(oi())},onFix:function(){...
function Le (line 12) | function Le(e){return{pluginStatus:e.settings.pluginStatus}}
function Fe (line 12) | function Fe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function Ue (line 12) | function Ue(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function Me (line 12) | function Me(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Be (line 12) | function Be(e){return{onLoadSettings:function(){e(ti())}}}
function He (line 12) | function He(e){return{values:e.settings.values}}
function ze (line 12) | function ze(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enum...
function Ve (line 12) | function Ve(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enum...
function Ge (line 12) | function Ge(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function qe (line 12) | function qe(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function We (line 12) | function We(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function $e (line 12) | function $e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function Ke (line 12) | function Ke(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function Qe (line 12) | function Qe(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Ye (line 12) | function Ye(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function Je (line 12) | function Je(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function Xe (line 12) | function Xe(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Ze (line 12) | function Ze(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function et (line 12) | function et(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function tt (line 12) | function tt(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function nt (line 12) | function nt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function rt (line 12) | function rt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function ot (line 12) | function ot(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function at (line 12) | function at(e){return{onGet:function(t){e(Xl(t))}}}
function it (line 12) | function it(e){var t=e.info;return{status:t.status,error:t.error,maps:t....
function lt (line 12) | function lt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function st (line 12) | function st(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function ut (line 12) | function ut(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function ct (line 12) | function ct(e){return{onGet:function(t){e(Zl(t))}}}
function pt (line 12) | function pt(e){var t=e.info;return{status:t.status,error:t.error,agents:...
function ft (line 12) | function ft(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function dt (line 12) | function dt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function ht (line 12) | function ht(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function mt (line 12) | function mt(e){return{onShowIP:function(t){e($l("ip",t))},onSetSelected:...
function gt (line 12) | function gt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function bt (line 12) | function bt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function yt (line 12) | function yt(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function vt (line 12) | function vt(e){return{log:e.log}}
function Et (line 12) | function Et(e){return{onLoad:function(t){e(Vl(t))},onDeleteAll:function(...
function wt (line 12) | function wt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function Ot (line 12) | function Ot(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function _t (line 12) | function _t(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function kt (line 12) | function kt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function xt (line 12) | function xt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function Ct (line 12) | function Ct(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function St (line 12) | function St(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function jt (line 12) | function jt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function Pt (line 12) | function Pt(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Tt (line 12) | function Tt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function Nt (line 12) | function Nt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function Rt (line 12) | function Rt(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Dt (line 12) | function Dt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function It (line 12) | function It(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function At (line 12) | function At(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Lt (line 12) | function Lt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function Ft (line 12) | function Ft(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function Ut (line 12) | function Ut(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Mt (line 12) | function Mt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function Bt (line 12) | function Bt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function Ht (line 12) | function Ht(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function zt (line 12) | function zt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enum...
function Vt (line 12) | function Vt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function Gt (line 12) | function Gt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function qt (line 12) | function qt(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Wt (line 12) | function Wt(e){var t=e.group,n=e.redirect;return{group:t,addTop:n.addTop...
function $t (line 12) | function $t(e){return{onSave:function(t,n){e(iu(t,n))},onCreate:function...
function Kt (line 12) | function Kt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function Qt (line 12) | function Qt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function Yt (line 12) | function Yt(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Jt (line 12) | function Jt(e){return{onShowIP:function(t){e(js("ip",t))},onSetSelected:...
function Xt (line 12) | function Xt(e){return{infoStatus:e.info.status}}
function Zt (line 12) | function Zt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function en (line 12) | function en(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function tn (line 12) | function tn(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function nn (line 12) | function nn(e){return{error:e.error}}
function rn (line 12) | function rn(e){return{onLoad:function(t){e(ks(t))},onLoadGroups:function...
function on (line 12) | function on(e){var t=[];if(e.dataTransfer){var n=e.dataTransfer;n.files&...
function an (line 12) | function an(e,t){return"application/x-moz-file"===e.type||Qu()(e,t)}
function ln (line 12) | function ln(e,t,n){return e.size<=t&&e.size>=n}
function sn (line 12) | function sn(e,t){return e.every(function(e){return an(e,t)})}
function un (line 12) | function un(e){e.preventDefault()}
function cn (line 12) | function cn(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototy...
function pn (line 12) | function pn(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.le...
function fn (line 12) | function fn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function dn (line 12) | function dn(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function hn (line 12) | function hn(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function mn (line 12) | function mn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enum...
function gn (line 12) | function gn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function bn (line 12) | function bn(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function yn (line 12) | function yn(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function vn (line 12) | function vn(e){return{group:e.group,io:e.io}}
function En (line 12) | function En(e){return{onLoadGroups:function(){e(Lu())},onImport:function...
function wn (line 12) | function wn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function On (line 12) | function On(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function _n (line 12) | function _n(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function kn (line 12) | function kn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function xn (line 12) | function xn(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function Cn (line 12) | function Cn(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Sn (line 12) | function Sn(e){return{onSetSelected:function(t){e(Hu(t))},onSaveGroup:fu...
function jn (line 12) | function jn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function Pn (line 12) | function Pn(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function Tn (line 12) | function Tn(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Nn (line 12) | function Nn(e){return{group:e.group}}
function Rn (line 12) | function Rn(e){return{onLoadGroups:function(){e(Lu({page:0,filter:"",fil...
function Dn (line 12) | function Dn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function In (line 12) | function In(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function An (line 12) | function An(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Ln (line 12) | function Ln(e){return{onSetSelected:function(t){e(du(t))},onTableAction:...
function Fn (line 12) | function Fn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function Un (line 12) | function Un(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function Mn (line 12) | function Mn(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Bn (line 12) | function Bn(e){return{redirect:e.redirect,group:e.group}}
function Hn (line 12) | function Hn(e){return{onLoadGroups:function(){e(Lu())},onLoadRedirects:f...
function zn (line 12) | function zn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function Vn (line 12) | function Vn(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function Gn (line 12) | function Gn(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function qn (line 12) | function qn(e){return{errors:e.message.errors}}
function Wn (line 12) | function Wn(e){return{onClear:function(){e(Lc())}}}
function $n (line 12) | function $n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function Kn (line 12) | function Kn(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function Qn (line 12) | function Qn(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function Yn (line 12) | function Yn(e){return{notices:e.message.notices}}
function Jn (line 12) | function Jn(e){return{onClear:function(){e(Fc())}}}
function Xn (line 12) | function Xn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function Zn (line 12) | function Zn(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function er (line 12) | function er(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function tr (line 12) | function tr(e){return{inProgress:e.message.inProgress}}
function nr (line 12) | function nr(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
function rr (line 12) | function rr(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
function or (line 12) | function or(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
function ar (line 12) | function ar(e){return{onClear:function(){e(Lc())},onAdd:function(){e(mu(...
function ir (line 12) | function ir(e){return{errors:e.message.errors}}
function n (line 12) | function n(a,i){r(this,n);var l=o(this,e.call(this,a,i));return l[t]=a.s...
function e (line 12) | function e(t,n,r){i(this,e),this.store=t,this.parentSub=n,this.onStateCh...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){pe(this,t);var n=fe(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){ge(this,t);var n=be(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){ve(this,t);var n=Ee(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){_e(this,t);var n=ke(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){Ce(this,t);var n=Se(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){Re(this,t);var n=De(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){Fe(this,t);var n=Ue(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){Ge(this,t);var n=qe(this,(t.__proto__||Object.getPrototype...
function t (line 12) | function t(){return Ge(this,t),qe(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){$e(this,t);var n=Ke(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){Ye(this,t);var n=Je(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){Ze(this,t);var n=et(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){nt(this,t);var n=rt(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){lt(this,t);var n=st(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){ft(this,t);var n=dt(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){gt(this,t);var n=bt(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){wt(this,t);var n=Ot(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){kt(this,t);var n=xt(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){St(this,t);var n=jt(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(){var e,n,r,o;Tt(this,t);for(var a=arguments.length,i=Array(a...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){Dt(this,t);var n=It(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(){var e,n,r,o;Lt(this,t);for(var a=arguments.length,i=Array(a...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(){var e,n,r,o;Mt(this,t);for(var a=arguments.length,i=Array(a...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){Vt(this,t);var n=Gt(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){Kt(this,t);var n=Qt(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){Zt(this,t);var n=en(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e,n){fn(this,t);var r=dn(this,(t.__proto__||Object.getPrototy...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){gn(this,t);var n=bn(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){wn(this,t);var n=On(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){kn(this,t);var n=xn(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){jn(this,t);var n=Pn(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){Dn(this,t);var n=In(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){Fn(this,t);var n=Un(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){zn(this,t);var n=Vn(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){$n(this,t);var n=Kn(this,(t.__proto__||Object.getPrototype...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){return Xn(this,t),Zn(this,(t.__proto__||Object.getPrototyp...
function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 12) | function t(e){nr(this,t);var n=rr(this,(t.__proto__||Object.getPrototype...
function n (line 12) | function n(e){function t(e,n,r){e&&e.then?e.then(function(e){t(e,n,r)})....
function r (line 12) | function r(){--a<=0&&t(e)}
function t (line 12) | function t(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.\^...
function n (line 12) | function n(e){return"string"!=typeof e&&(e=String(e)),e}
function r (line 12) | function r(e){var t={next:function(){var t=e.shift();return{done:void 0=...
function o (line 12) | function o(e){this.map={},e instanceof o?e.forEach(function(e,t){this.ap...
function a (line 12) | function a(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already...
function i (line 12) | function i(e){return new Promise(function(t,n){e.onload=function(){t(e.r...
function l (line 12) | function l(e){var t=new FileReader,n=i(t);return t.readAsArrayBuffer(e),n}
function s (line 12) | function s(e){var t=new FileReader,n=i(t);return t.readAsText(e),n}
function u (line 12) | function u(e){for(var t=new Uint8Array(e),n=new Array(t.length),r=0;r<t....
function c (line 12) | function c(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLe...
function p (line 12) | function p(){return this.bodyUsed=!1,this._initBody=function(e){if(this....
function f (line 12) | function f(e){var t=e.toUpperCase();return w.indexOf(t)>-1?t:e}
function d (line 12) | function d(e,t){t=t||{};var n=t.body;if(e instanceof d){if(e.bodyUsed)th...
function h (line 12) | function h(e){var t=new FormData;return e.trim().split("&").forEach(func...
function m (line 12) | function m(e){var t=new o;return e.split(/\r?\n/).forEach(function(e){va...
function g (line 12) | function g(e,t){t||(t={}),this.type="default",this.status="status"in t?t...
function r (line 12) | function r(e){for(var t=arguments.length-1,n="Minified React error #"+e+...
function o (line 12) | function o(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n...
function a (line 12) | function a(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n...
function i (line 12) | function i(){}
function l (line 12) | function l(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n...
function s (line 12) | function s(e,t,n){var r,o={},a=null,i=null;if(null!=t)for(r in void 0!==...
function u (line 12) | function u(e){return"object"==typeof e&&null!==e&&e.$$typeof===O}
function c (line 12) | function c(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g...
function p (line 12) | function p(e,t,n,r){if(A.length){var o=A.pop();return o.result=e,o.keyPr...
function f (line 12) | function f(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,...
function d (line 12) | function d(e,t,n,o){var a=typeof e;"undefined"!==a&&"boolean"!==a||(e=nu...
function h (line 12) | function h(e,t){return"object"==typeof e&&null!==e&&null!=e.key?c(e.key)...
function m (line 12) | function m(e,t){e.func.call(e.context,t,e.count++)}
function g (line 12) | function g(e,t,n){var r=e.result,o=e.keyPrefix;e=e.func.call(e.context,t...
function b (line 12) | function b(e,t,n,r,o){var a="";null!=n&&(a=(""+n).replace(I,"$&/")+"/"),...
function r (line 20) | function r(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"fun...
function r (line 20) | function r(e){for(var t=arguments.length-1,n="Minified React error #"+e+...
function o (line 20) | function o(e,t){return(e&t)===t}
function a (line 20) | function a(e,t){if(Pn.hasOwnProperty(e)||2<e.length&&("o"===e[0]||"O"===...
function i (line 20) | function i(e){return Nn.hasOwnProperty(e)?Nn[e]:null}
function l (line 20) | function l(e){return e[1].toUpperCase()}
function s (line 20) | function s(e,t,n,r,o,a,i,l,s){Gn._hasCaughtError=!1,Gn._caughtError=null...
function u (line 20) | function u(){if(Gn._hasRethrowError){var e=Gn._rethrowError;throw Gn._re...
function c (line 20) | function c(){if(qn)for(var e in Wn){var t=Wn[e],n=qn.indexOf(e);if(-1<n|...
function p (line 20) | function p(e,t,n){Qn[e]&&r("100",e),Qn[e]=t,Yn[e]=t.eventTypes[n].depend...
function f (line 20) | function f(e){qn&&r("101"),qn=Array.prototype.slice.call(e),c()}
function d (line 20) | function d(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var o=e[t];W...
function h (line 20) | function h(e,t,n,r){t=e.type||"unknown-event",e.currentTarget=er(r),Gn.i...
function m (line 20) | function m(e,t){return null==t&&r("30"),null==e?t:Array.isArray(e)?Array...
function g (line 20) | function g(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}
function b (line 20) | function b(e,t){if(e){var n=e._dispatchListeners,r=e._dispatchInstances;...
function y (line 20) | function y(e){return b(e,!0)}
function v (line 20) | function v(e){return b(e,!1)}
function E (line 20) | function E(e,t){var n=e.stateNode;if(!n)return null;var o=Xn(n);if(!o)re...
function w (line 20) | function w(e,t,n,r){for(var o,a=0;a<$n.length;a++){var i=$n[a];i&&(i=i.e...
function O (line 20) | function O(e){e&&(tr=m(tr,e))}
function _ (line 20) | function _(e){var t=tr;tr=null,t&&(e?g(t,y):g(t,v),tr&&r("95"),Gn.rethro...
function k (line 20) | function k(e){if(e[ar])return e[ar];for(var t=[];!e[ar];){if(t.push(e),!...
function x (line 20) | function x(e){if(5===e.tag||6===e.tag)return e.stateNode;r("33")}
function C (line 20) | function C(e){return e[ir]||null}
function S (line 20) | function S(e){do{e=e.return}while(e&&5!==e.tag);return e||null}
function j (line 20) | function j(e,t,n){for(var r=[];e;)r.push(e),e=S(e);for(e=r.length;0<e--;...
function P (line 20) | function P(e,t,n){(t=E(e,n.dispatchConfig.phasedRegistrationNames[t]))&&...
function T (line 20) | function T(e){e&&e.dispatchConfig.phasedRegistrationNames&&j(e._targetIn...
function N (line 20) | function N(e){if(e&&e.dispatchConfig.phasedRegistrationNames){var t=e._t...
function R (line 20) | function R(e,t,n){e&&n&&n.dispatchConfig.registrationName&&(t=E(e,n.disp...
function D (line 20) | function D(e){e&&e.dispatchConfig.registrationName&&R(e._targetInst,null...
function I (line 20) | function I(e){g(e,T)}
function A (line 20) | function A(e,t,n,r){if(n&&r)e:{for(var o=n,a=r,i=0,l=o;l;l=S(l))i++;l=0;...
function L (line 20) | function L(){return!ur&&En.canUseDOM&&(ur="textContent"in document.docum...
function F (line 20) | function F(){if(cr._fallbackText)return cr._fallbackText;var e,t,n=cr._s...
function U (line 20) | function U(){return"value"in cr._root?cr._root.value:cr._root[L()]}
function M (line 20) | function M(e,t,n,r){this.dispatchConfig=e,this._targetInst=t,this.native...
function B (line 20) | function B(e,t,n,r){if(this.eventPool.length){var o=this.eventPool.pop()...
function H (line 20) | function H(e){e instanceof this||r("223"),e.destructor(),10>this.eventPo...
function z (line 20) | function z(e){e.eventPool=[],e.getPooled=B,e.release=H}
function V (line 20) | function V(e,t,n,r){return M.call(this,e,t,n,r)}
function G (line 20) | function G(e,t,n,r){return M.call(this,e,t,n,r)}
function q (line 20) | function q(e,t){switch(e){case"topKeyUp":return-1!==dr.indexOf(t.keyCode...
function W (line 20) | function W(e){return e=e.detail,"object"==typeof e&&"data"in e?e.data:null}
function $ (line 20) | function $(e,t){switch(e){case"topCompositionEnd":return W(t);case"topKe...
function K (line 20) | function K(e,t){if(kr)return"topCompositionEnd"===e||!hr&&q(e,t)?(e=F(),...
function Q (line 20) | function Q(e){if(e=Zn(e)){Cr&&"function"==typeof Cr.restoreControlledSta...
function Y (line 20) | function Y(e){Sr?jr?jr.push(e):jr=[e]:Sr=e}
function J (line 20) | function J(){if(Sr){var e=Sr,t=jr;if(jr=Sr=null,Q(e),t)for(e=0;e<t.lengt...
function X (line 20) | function X(e,t){return e(t)}
function Z (line 20) | function Z(e,t){if(Nr)return X(e,t);Nr=!0;try{return X(e,t)}finally{Nr=!...
function ee (line 20) | function ee(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"inpu...
function te (line 20) | function te(e){return e=e.target||e.srcElement||window,e.correspondingUs...
function ne (line 20) | function ne(e,t){if(!En.canUseDOM||t&&!("addEventListener"in document))r...
function re (line 20) | function re(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCas...
function oe (line 20) | function oe(e){var t=re(e)?"checked":"value",n=Object.getOwnPropertyDesc...
function ae (line 20) | function ae(e){e._valueTracker||(e._valueTracker=oe(e))}
function ie (line 20) | function ie(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n...
function le (line 20) | function le(e,t,n){return e=M.getPooled(Dr.change,e,t,n),e.type="change"...
function se (line 20) | function se(e){O(e),_(!1)}
function ue (line 20) | function ue(e){if(ie(x(e)))return e}
function ce (line 20) | function ce(e,t){if("topChange"===e)return t}
function pe (line 20) | function pe(){Ir&&(Ir.detachEvent("onpropertychange",fe),Ar=Ir=null)}
function fe (line 20) | function fe(e){"value"===e.propertyName&&ue(Ar)&&(e=le(Ar,e,te(e)),Z(se,...
function de (line 20) | function de(e,t,n){"topFocus"===e?(pe(),Ir=t,Ar=n,Ir.attachEvent("onprop...
function he (line 20) | function he(e){if("topSelectionChange"===e||"topKeyUp"===e||"topKeyDown"...
function me (line 20) | function me(e,t){if("topClick"===e)return ue(t)}
function ge (line 20) | function ge(e,t){if("topInput"===e||"topChange"===e)return ue(t)}
function be (line 20) | function be(e,t,n,r){return M.call(this,e,t,n,r)}
function ye (line 20) | function ye(e){var t=this.nativeEvent;return t.getModifierState?t.getMod...
function ve (line 20) | function ve(){return ye}
function Ee (line 20) | function Ee(e,t,n,r){return M.call(this,e,t,n,r)}
function we (line 20) | function we(e){return e=e.type,"string"==typeof e?e:"function"==typeof e...
function Oe (line 20) | function Oe(e){var t=e;if(e.alternate)for(;t.return;)t=t.return;else{if(...
function _e (line 20) | function _e(e){return!!(e=e._reactInternalFiber)&&2===Oe(e)}
function ke (line 20) | function ke(e){2!==Oe(e)&&r("188")}
function xe (line 20) | function xe(e){var t=e.alternate;if(!t)return t=Oe(e),3===t&&r("188"),1=...
function Ce (line 20) | function Ce(e){if(!(e=xe(e)))return null;for(var t=e;;){if(5===t.tag||6=...
function Se (line 20) | function Se(e){if(!(e=xe(e)))return null;for(var t=e;;){if(5===t.tag||6=...
function je (line 20) | function je(e){var t=e.targetInst;do{if(!t){e.ancestors.push(t);break}va...
function Pe (line 20) | function Pe(e){Vr=!!e}
function Te (line 20) | function Te(e,t,n){return n?_n.listen(n,t,Re.bind(null,e)):null}
function Ne (line 20) | function Ne(e,t,n){return n?_n.capture(n,t,Re.bind(null,e)):null}
function Re (line 20) | function Re(e,t){if(Vr){var n=te(t);if(n=k(n),null===n||"number"!=typeof...
function De (line 20) | function De(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["W...
function Ie (line 20) | function Ie(e){if($r[e])return $r[e];if(!Wr[e])return e;var t,n=Wr[e];fo...
function Ae (line 20) | function Ae(e){return Object.prototype.hasOwnProperty.call(e,Xr)||(e[Xr]...
function Le (line 20) | function Le(e){for(;e&&e.firstChild;)e=e.firstChild;return e}
function Fe (line 20) | function Fe(e,t){var n=Le(e);e=0;for(var r;n;){if(3===n.nodeType){if(r=e...
function Ue (line 20) | function Ue(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(...
function Me (line 20) | function Me(e,t){if(oo||null==to||to!==kn())return null;var n=to;return"...
function Be (line 20) | function Be(e,t,n,r){return M.call(this,e,t,n,r)}
function He (line 20) | function He(e,t,n,r){return M.call(this,e,t,n,r)}
function ze (line 20) | function ze(e,t,n,r){return M.call(this,e,t,n,r)}
function Ve (line 20) | function Ve(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&...
function Ge (line 20) | function Ge(e,t,n,r){return M.call(this,e,t,n,r)}
function qe (line 20) | function qe(e,t,n,r){return M.call(this,e,t,n,r)}
function We (line 20) | function We(e,t,n,r){return M.call(this,e,t,n,r)}
function $e (line 20) | function $e(e,t,n,r){return M.call(this,e,t,n,r)}
function Ke (line 20) | function Ke(e,t,n,r){return M.call(this,e,t,n,r)}
function Qe (line 20) | function Qe(e){0>fo||(e.current=po[fo],po[fo]=null,fo--)}
function Ye (line 20) | function Ye(e,t){fo++,po[fo]=e.current,e.current=t}
function Je (line 20) | function Je(e){return Ze(e)?go:ho.current}
function Xe (line 20) | function Xe(e,t){var n=e.type.contextTypes;if(!n)return jn;var r=e.state...
function Ze (line 20) | function Ze(e){return 2===e.tag&&null!=e.type.childContextTypes}
function et (line 20) | function et(e){Ze(e)&&(Qe(mo,e),Qe(ho,e))}
function tt (line 20) | function tt(e,t,n){null!=ho.cursor&&r("168"),Ye(ho,t,e),Ye(mo,n,e)}
function nt (line 20) | function nt(e,t){var n=e.stateNode,o=e.type.childContextTypes;if("functi...
function rt (line 20) | function rt(e){if(!Ze(e))return!1;var t=e.stateNode;return t=t&&t.__reac...
function ot (line 20) | function ot(e,t){var n=e.stateNode;if(n||r("169"),t){var o=nt(e,go);n.__...
function at (line 20) | function at(e,t,n){this.tag=e,this.key=t,this.stateNode=this.type=null,t...
function it (line 20) | function it(e,t,n){var r=e.alternate;return null===r?(r=new at(e.tag,e.k...
function lt (line 20) | function lt(e,t,n){var o=void 0,a=e.type,i=e.key;return"function"==typeo...
function st (line 20) | function st(e,t,n,r){return t=new at(10,r,t),t.pendingProps=e,t.expirati...
function ut (line 20) | function ut(e,t,n){return t=new at(6,null,t),t.pendingProps=e,t.expirati...
function ct (line 20) | function ct(e,t,n){return t=new at(7,e.key,t),t.type=e.handler,t.pending...
function pt (line 20) | function pt(e,t,n){return e=new at(9,null,t),e.expirationTime=n,e}
function ft (line 20) | function ft(e,t,n){return t=new at(4,e.key,t),t.pendingProps=e.children|...
function dt (line 20) | function dt(e){return function(t){try{return e(t)}catch(e){}}}
function ht (line 20) | function ht(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)ret...
function mt (line 20) | function mt(e){"function"==typeof bo&&bo(e)}
function gt (line 20) | function gt(e){"function"==typeof yo&&yo(e)}
function bt (line 20) | function bt(e){return{baseState:e,expirationTime:0,first:null,last:null,...
function yt (line 20) | function yt(e,t){null===e.last?e.first=e.last=t:(e.last.next=t,e.last=t)...
function vt (line 20) | function vt(e,t){var n=e.alternate,r=e.updateQueue;null===r&&(r=e.update...
function Et (line 20) | function Et(e,t,n,r){return e=e.partialState,"function"==typeof e?e.call...
function wt (line 20) | function wt(e,t,n,r,o,a){null!==e&&e.updateQueue===n&&(n=t.updateQueue={...
function Ot (line 20) | function Ot(e,t){var n=e.callbackList;if(null!==n)for(e.callbackList=nul...
function _t (line 20) | function _t(e,t,n,o){function a(e,t){t.updater=i,e.stateNode=t,t._reactI...
function kt (line 20) | function kt(e){return null===e||void 0===e?null:(e=xo&&e[xo]||e["@@itera...
function xt (line 20) | function xt(e,t){var n=t.ref;if(null!==n&&"function"!=typeof n){if(t._ow...
function Ct (line 20) | function Ct(e,t){"textarea"!==e.type&&r("31","[object Object]"===Object....
function St (line 20) | function St(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.next...
function jt (line 20) | function jt(e,t,n,o,a){function i(e,t,n){var r=t.expirationTime;t.child=...
function Pt (line 20) | function Pt(e,t,n){function o(e){e.effectTag|=4}var a=e.createInstance,i...
function Tt (line 20) | function Tt(e,t){function n(e){var n=e.ref;if(null!==n)try{n(null)}catch...
function Nt (line 20) | function Nt(e){function t(e){return e===Po&&r("174"),e}var n=e.getChildH...
function Rt (line 20) | function Rt(e){function t(e,t){var n=new at(5,null,0);n.type="DELETED",n...
function Dt (line 20) | function Dt(e){function t(e){ae=Q=!0;var t=e.stateNode;if(t.current===e&...
function It (line 20) | function It(e){function t(e){return e=Ce(e),null===e?null:e.stateNode}va...
function At (line 20) | function At(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?argum...
function Lt (line 20) | function Lt(e){return!!Qo.hasOwnProperty(e)||!Ko.hasOwnProperty(e)&&($o....
function Ft (line 20) | function Ft(e,t,n){var r=i(t);if(r&&a(t,n)){var o=r.mutationMethod;o?o(e...
function Ut (line 20) | function Ut(e,t,n){Lt(t)&&(null==n?e.removeAttribute(t):e.setAttribute(t...
function Mt (line 20) | function Mt(e,t){var n=i(t);n?(t=n.mutationMethod)?t(e,void 0):n.mustUse...
function Bt (line 20) | function Bt(e,t){var n=t.value,r=t.checked;return wn({type:void 0,step:v...
function Ht (line 20) | function Ht(e,t){var n=t.defaultValue;e._wrapperState={initialChecked:nu...
function zt (line 20) | function zt(e,t){null!=(t=t.checked)&&Ft(e,"checked",t)}
function Vt (line 20) | function Vt(e,t){zt(e,t);var n=t.value;null!=n?0===n&&""===e.value?e.val...
function Gt (line 20) | function Gt(e,t){switch(t.type){case"submit":case"reset":break;case"colo...
function qt (line 20) | function qt(e){var t="";return vn.Children.forEach(e,function(e){null==e...
function Wt (line 20) | function Wt(e,t){return e=wn({children:void 0},t),(t=qt(t.children))&&(e...
function $t (line 20) | function $t(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t...
function Kt (line 20) | function Kt(e,t){var n=t.value;e._wrapperState={initialValue:null!=n?n:t...
function Qt (line 20) | function Qt(e,t){return null!=t.dangerouslySetInnerHTML&&r("91"),wn({},t...
function Yt (line 20) | function Yt(e,t){var n=t.value;null==n&&(n=t.defaultValue,t=t.children,n...
function Jt (line 20) | function Jt(e,t){var n=t.value;null!=n&&(n=""+n,n!==e.value&&(e.value=n)...
function Xt (line 20) | function Xt(e){var t=e.textContent;t===e._wrapperState.initialValue&&(e....
function Zt (line 20) | function Zt(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";ca...
function en (line 20) | function en(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?Zt(t...
function tn (line 20) | function tn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.n...
function nn (line 20) | function nn(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=...
function rn (line 20) | function rn(e,t,n){t&&(ta[e]&&(null!=t.children||null!=t.dangerouslySetI...
function on (line 20) | function on(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;swit...
function an (line 20) | function an(e,t){e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument;var...
function ln (line 20) | function ln(e,t,n,r){return n=9===n.nodeType?n:n.ownerDocument,r===na&&(...
function sn (line 20) | function sn(e,t){return(9===t.nodeType?t:t.ownerDocument).createTextNode...
function un (line 20) | function un(e,t,n,r){var o=on(t,n);switch(t){case"iframe":case"object":T...
function cn (line 20) | function cn(e,t,n,r,o){var a=null;switch(t){case"input":n=Bt(e,n),r=Bt(e...
function pn (line 20) | function pn(e,t,n,r,o){"input"===n&&"radio"===o.type&&null!=o.name&&zt(e...
function fn (line 20) | function fn(e,t,n,r,o){switch(t){case"iframe":case"object":Te("topLoad",...
function dn (line 20) | function dn(e,t){return e.nodeValue!==t}
function hn (line 20) | function hn(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeTy...
function mn (line 20) | function mn(e){return!(!(e=e?9===e.nodeType?e.documentElement:e.firstChi...
function gn (line 20) | function gn(e,t,n,o,a){hn(n)||r("200");var i=n._reactRootContainer;if(i)...
function bn (line 20) | function bn(e,t){var n=2<arguments.length&&void 0!==arguments[2]?argumen...
function yn (line 20) | function yn(e,t){this._reactRootContainer=sa.createContainer(e,t)}
function n (line 28) | function n(){}
method _enabled (line 28) | get _enabled(){return Vr}
method _handleTopLevel (line 28) | get _handleTopLevel(){return Gr}
function r (line 28) | function r(e){if(void 0===(e=e||("undefined"!=typeof document?document:v...
function r (line 28) | function r(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!==e&&t!==t}
function o (line 28) | function o(e,t){if(r(e,t))return!0;if("object"!=typeof e||null===e||"obj...
function r (line 28) | function r(e,t){return!(!e||!t)&&(e===t||!o(e)&&(o(t)?r(e,t.parentNode):...
function r (line 28) | function r(e){return o(e)&&3==e.nodeType}
function r (line 28) | function r(e){var t=e?e.ownerDocument||e:document,n=t.defaultView||windo...
function r (line 28) | function r(e){try{e.focus()}catch(e){}}
function r (line 28) | function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a ...
function o (line 28) | function o(e,t){if(!e)throw new ReferenceError("this hasn't been initial...
function a (line 28) | function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("S...
function e (line 28) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
function t (line 28) | function t(){return r(this,t),o(this,(t.__proto__||Object.getPrototypeOf...
function r (line 28) | function r(){s.throwErrors&&"undefined"!=typeof window&&window.console&&...
function o (line 28) | function o(e){return Array.prototype.slice.call(e)}
function a (line 28) | function a(e){var t,n=e[0],a={};for(("string"!=typeof n||e.length>3||e.l...
function i (line 28) | function i(e,t){return{gettext:[t.original],ngettext:[t.original,t.plura...
function l (line 28) | function l(e,t){var n,r="gettext";return t.context&&(r="p"+r),"string"==...
function s (line 28) | function s(){if(!(this instanceof s))return new s;this.defaultLocaleSlug...
function o (line 31) | function o(e){return d.PF.compile(e||"nplurals=2; plural=(n != 1);")}
function a (line 31) | function a(e,t){this._key=e,this._i18n=t}
function e (line 34) | function e(e){return Object.prototype.toString.call(e).slice(8,-1).toLow...
function t (line 34) | function t(e,t){for(var n=[];t>0;n[--t]=e);return n.join("")}
function t (line 34) | function t(e){return!0===e?1:e||0}
function t (line 34) | function t(){var e;return e=n.lexer.lex()||1,"number"!=typeof e&&(e=n.sy...
function r (line 34) | function r(e){return e&&e.__esModule?e:{default:e}}
function o (line 34) | function o(e,t){var n,r,o=t[e],a=0;for(r=e+1;r<t.length;r++)if(n=t[r],n....
function a (line 34) | function a(e,t){var n,r,i,s,c,f,d,m,g,b,y=[],v={};for(f=0;f<e.length;f++...
function i (line 34) | function i(e){var t=e.mixedString,n=e.components,r=e.throwErrors;if(h=t,...
function r (line 34) | function r(e){var t=e&&(w&&e[w]||e[O]);if("function"==typeof t)return t}
function o (line 34) | function o(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g...
function a (line 34) | function a(e,t){return e&&"object"==typeof e&&null!=e.key?o(e.key):t.toS...
function i (line 34) | function i(e,t,n,o){var l=typeof e;if("undefined"!==l&&"boolean"!==l||(e...
function l (line 34) | function l(e,t,n){return null==e?0:i(e,"",t,n)}
function s (line 34) | function s(e){return(""+e).replace(_,"$&/")}
function u (line 34) | function u(e,t){return h.cloneElement(e,{key:t},void 0!==e.props?e.props...
function c (line 34) | function c(e,t,n,r){this.result=e,this.keyPrefix=t,this.func=n,this.cont...
function p (line 34) | function p(e,t,n){var r=e.result,o=e.keyPrefix,a=e.func,i=e.context,l=a....
function f (line 34) | function f(e,t,n,r,o){var a="";null!=n&&(a=s(n)+"/");var i=c.getPooled(t...
function d (line 34) | function d(e){if("object"!=typeof e||!e||Array.isArray(e))return y(!1,"R...
function r (line 34) | function r(e){return e.match(/^\{\{\//)?{type:"componentClose",value:e.r...
function r (line 34) | function r(e){if(!(this instanceof r))return new r(e);"number"==typeof e...
function n (line 41) | function n(e,t,n,r){e=(e+"").replace(/[^0-9+\-Ee.]/g,"");var o=isFinite(...
function e (line 41) | function e(e,t,n,r,i,l){l!==a&&o(!1,"Calling PropTypes validators direct...
function t (line 41) | function t(){return e}
function r (line 41) | function r(e){var t,n=e.Symbol;return"function"==typeof n?n.observable?t...
function r (line 41) | function r(e){return function(t){var n=t.dispatch,r=t.getState;return fu...
function r (line 41) | function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
function r (line 41) | function r(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++...
function n (line 41) | function n(e,t){var n=e[1]||"",o=e[3];if(!o)return n;if(t&&"function"==t...
function r (line 41) | function r(e){return"/*# sourceMappingURL=data:application/json;charset=...
function r (line 41) | function r(e,t){for(var n=0;n<e.length;n++){var r=e[n],o=h[r.id];if(o){o...
function o (line 41) | function o(e,t){for(var n=[],r={},o=0;o<e.length;o++){var a=e[o],i=t.bas...
function a (line 41) | function a(e,t){var n=b(e.insertInto);if(!n)throw new Error("Couldn't fi...
function i (line 41) | function i(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e...
function l (line 41) | function l(e){var t=document.createElement("style");return e.attrs.type=...
function s (line 41) | function s(e){var t=document.createElement("link");return e.attrs.type="...
function u (line 41) | function u(e,t){Object.keys(t).forEach(function(n){e.setAttribute(n,t[n]...
function c (line 41) | function c(e,t){var n,r,o,a;if(t.transform&&e.css){if(!(a=t.transform(e....
function p (line 41) | function p(e,t,n,r){var o=n?"":r.css;if(e.styleSheet)e.styleSheet.cssTex...
function f (line 41) | function f(e,t){var n=t.css,r=t.media;if(r&&e.setAttribute("media",r),e....
function d (line 41) | function d(e,t,n){var r=n.css,o=n.sourceMap,a=void 0===t.convertToAbsolu...
function i (line 41) | function i(e){throw new RangeError(R[e])}
function l (line 41) | function l(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}
function s (line 41) | function s(e,t){var n=e.split("@"),r="";return n.length>1&&(r=n[0]+"@",e...
function u (line 41) | function u(e){for(var t,n,r=[],o=0,a=e.length;o<a;)t=e.charCodeAt(o++),t...
function c (line 41) | function c(e){return l(e,function(e){var t="";return e>65535&&(e-=65536,...
function p (line 41) | function p(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:w}
function f (line 41) | function f(e,t){return e+22+75*(e<26)-((0!=t)<<5)}
function d (line 41) | function d(e,t,n){var r=0;for(e=n?I(e/x):e>>1,e+=I(e/t);e>D*_>>1;r+=w)e=...
function h (line 41) | function h(e){var t,n,r,o,a,l,s,u,f,h,m=[],g=e.length,b=0,y=S,v=C;for(n=...
function m (line 41) | function m(e){var t,n,r,o,a,l,s,c,p,h,m,g,b,y,v,k=[];for(e=u(e),g=e.leng...
function g (line 41) | function g(e){return s(e,function(e){return P.test(e)?h(e.slice(4).toLow...
function b (line 41) | function b(e){return s(e,function(e){return T.test(e)?"xn--"+m(e):e})}
function t (line 41) | function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,lo...
FILE: spec/fixtures/dynamic_finders/plugin_version/windows-azure-storage/javascript_comment/js/windows-azure-storage-admin.js
function get_upload_progress (line 59) | function get_upload_progress( item_id, item ) {
FILE: spec/fixtures/dynamic_finders/plugin_version/wp-gmappity-easy-google-maps/javascript_var/js/wpgmappity-iframe.js
function getUrlVars (line 3) | function getUrlVars()
function wpgmappity_build_sample_map (line 16) | function wpgmappity_build_sample_map(target_div, data) {
function wpgmappity_build_data_container (line 32) | function wpgmappity_build_data_container() {
function wpgmappity_post_resize (line 87) | function wpgmappity_post_resize(map, data) {
function wpgmappity_update_map_size (line 93) | function wpgmappity_update_map_size(map, data) {
function wpgmappity_set_size_event (line 105) | function wpgmappity_set_size_event(map, data) {
function wpgmappity_set_zoom_event (line 176) | function wpgmappity_set_zoom_event(map, data) {
function wpgmappity_set_center (line 195) | function wpgmappity_set_center(map,data) {
function wpgmappity_geocode_response (line 202) | function wpgmappity_geocode_response(map, data, type) {
function wpgmappity_set_center_point_event (line 256) | function wpgmappity_set_center_point_event(map, data) {
function wpgmappity_set_add_marker_event (line 283) | function wpgmappity_set_add_marker_event(map, data) {
function wpgmappity_change_map_type (line 334) | function wpgmappity_change_map_type(map, data, selection) {
function wpgmappity_set_type_event (line 355) | function wpgmappity_set_type_event(map, data) {
function wpgmappity_set_alignment_event (line 362) | function wpgmappity_set_alignment_event(map, data) {
function wpgmappity_set_modal_events (line 372) | function wpgmappity_set_modal_events(map, data) {
function wgmappity_set_sample_map_events (line 378) | function wgmappity_set_sample_map_events(map, wpgmappity_gmap_data) {
function wgmappity_set_map_submission_event (line 392) | function wgmappity_set_map_submission_event(map, data) {
function wpgmappity_iframe_js (line 414) | function wpgmappity_iframe_js() {
FILE: spec/fixtures/dynamic_finders/plugin_version/youtube-channel-gallery/script_comment/script.js
function ytcplayVideo (line 39) | function ytcplayVideo (iframeid, youtubeid, quality) {
function ytcStopVideo (line 54) | function ytcStopVideo(ifr) {
function changePlayerContent (line 68) | function changePlayerContent (thumb, youtubeid) {
function checkIfInView (line 91) | function checkIfInView(element){
FILE: spec/fixtures/finders/db_exports/dump.sql
type `wp_comments` (line 4) | CREATE TABLE `wp_comments` (
FILE: spec/fixtures/finders/interesting_findings/upload_sql_dump/dump.sql
type `wp_commentmeta` (line 9) | CREATE TABLE IF NOT EXISTS `wp_commentmeta` (
FILE: spec/lib/finders/dynamic_finder/version/body_pattern_spec.rb
type WPScan (line 4) | module WPScan
type Finders (line 5) | module Finders
type Version (line 6) | module Version
type Rspec (line 8) | module Rspec
FILE: spec/lib/finders/dynamic_finder/version/comment_spec.rb
type WPScan (line 4) | module WPScan
type Finders (line 5) | module Finders
type Version (line 6) | module Version
type Rspec (line 8) | module Rspec
FILE: spec/lib/finders/dynamic_finder/version/config_parser_spec.rb
type WPScan (line 4) | module WPScan
type Finders (line 5) | module Finders
type Version (line 6) | module Version
type Rspec (line 8) | module Rspec
FILE: spec/lib/finders/dynamic_finder/version/header_pattern_spec.rb
type WPScan (line 4) | module WPScan
type Finders (line 5) | module Finders
type Version (line 6) | module Version
type Rspec (line 8) | module Rspec
FILE: spec/lib/finders/dynamic_finder/version/javascript_var_spec.rb
type WPScan (line 4) | module WPScan
type Finders (line 5) | module Finders
type Version (line 6) | module Version
type Rspec (line 8) | module Rspec
FILE: spec/lib/finders/dynamic_finder/version/query_parameter_spec.rb
type WPScan (line 4) | module WPScan
type Finders (line 5) | module Finders
type Version (line 6) | module Version
type Rspec (line 8) | module Rspec
FILE: spec/lib/finders/dynamic_finder/version/xpath_spec.rb
type WPScan (line 4) | module WPScan
type Finders (line 5) | module Finders
type Version (line 6) | module Version
type Rspec (line 8) | module Rspec
FILE: spec/spec_helper.rb
function redefine_constant (line 19) | def redefine_constant(constant, value)
function df_expected_all (line 25) | def df_expected_all
function df_tested_class_constant (line 29) | def df_tested_class_constant(type, finder_class, slug = nil)
function df_stubbed_response (line 37) | def df_stubbed_response(fixture, finder_super_class)
function vuln_api_data_for (line 45) | def vuln_api_data_for(path)
function rspec_parsed_options (line 52) | def rspec_parsed_options(args)
type WebMock (line 63) | module WebMock
type HttpLibAdapters (line 64) | module HttpLibAdapters
class TyphoeusAdapter (line 65) | class TyphoeusAdapter < HttpLibAdapter
method effective_url (line 66) | def self.effective_url(effective_uri)
method generate_typhoeus_response (line 73) | def self.generate_typhoeus_response(request_signature, webmock_res...
Copy disabled (too large)
Download .json
Condensed preview — 4987 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (70,705K chars).
[
{
"path": ".codeclimate.yml",
"chars": 181,
"preview": "version: \"2\"\n# https://docs.codeclimate.com/docs/default-analysis-configuration#sample-codeclimateyml\nchecks:\n method-c"
},
{
"path": ".dockerignore",
"chars": 138,
"preview": "git/\nbundle/\n.idea/\n.yardoc/\ncache/\ncoverage/\nspec/\n.*\n**/*.md\n*.md\n!README.md\nDockerfile\n**/*.orig\n*.orig\nbin/wpscan-*\n"
},
{
"path": ".github/CONTRIBUTING.md",
"chars": 361,
"preview": "# Contributing to WPScan\n\n## Licensing\n\nBy submitting code contributions to the WPScan development team via Github Pull "
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 963,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\nBefore submittin"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 595,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your fea"
},
{
"path": ".github/ISSUE_TEMPLATE/other-issue.md",
"chars": 260,
"preview": "---\nname: Other Issue\nabout: Create a report which is not a related to a Bug or Feature\ntitle: ''\nlabels: ''\nassignees: "
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 335,
"preview": "## Licensing\n\nBy submitting code contributions to the WPScan development team via Github Pull Requests, or any other met"
},
{
"path": ".github/dependabot.yml",
"chars": 590,
"preview": "# To get started with Dependabot version updates, you'll need to specify which\n# package ecosystems to update and where "
},
{
"path": ".github/workflows/build.yml",
"chars": 1053,
"preview": "name: Build\n\non: [push, pull_request]\n\njobs:\n build:\n\n runs-on: ubuntu-latest\n\n strategy:\n matrix:\n r"
},
{
"path": ".github/workflows/docker.yml",
"chars": 1455,
"preview": "name: Build Docker Images\n\non:\n push:\n branches:\n - master\n release:\n types: [published]\n schedule:\n - "
},
{
"path": ".github/workflows/gempush.yml",
"chars": 1083,
"preview": "name: Ruby Gem\n\non:\n release:\n types: [published]\n\njobs:\n build:\n name: Build + Publish\n runs-on: ubuntu-late"
},
{
"path": ".gitignore",
"chars": 224,
"preview": "*.gem\n*.rbc\n.bundle\n.config\ncoverage\npkg\nrdoc\nGemfile.lock\n\n# YARD artifacts\n.yardoc\n_yardoc\ndoc/\n.wpscan/\n\n.ash_history"
},
{
"path": ".rspec",
"chars": 29,
"preview": "--require spec_helper\n--color"
},
{
"path": ".rubocop.yml",
"chars": 830,
"preview": "require: rubocop-performance\nAllCops:\n NewCops: enable\n SuggestExtensions: false\n TargetRubyVersion: 2.7\n Exclude:\n "
},
{
"path": ".ruby-gemset",
"chars": 9,
"preview": "wpscanv3\n"
},
{
"path": ".ruby-version",
"chars": 6,
"preview": "3.0.2\n"
},
{
"path": ".simplecov",
"chars": 419,
"preview": "# frozen_string_literal: true\n\nif ENV['GITHUB_ACTION']\n require 'simplecov-lcov'\n\n SimpleCov::Formatter::LcovFormatter"
},
{
"path": "Dockerfile",
"chars": 1177,
"preview": "FROM ruby:3.4.2-alpine AS builder\nLABEL maintainer=\"WPScan Team <contact@wpscan.com>\"\n\nRUN echo \"install: --no-document "
},
{
"path": "Gemfile",
"chars": 158,
"preview": "# frozen_string_literal: true\n\nsource 'https://rubygems.org'\ngemspec\n\n# gem 'cms_scanner', branch: 'xxx', git: 'https://"
},
{
"path": "LICENSE",
"chars": 3396,
"preview": "WPScan Public Source License\n\nThe WPScan software (henceforth referred to simply as \"WPScan\") is dual-licensed - Copyrig"
},
{
"path": "README.md",
"chars": 9859,
"preview": "<p align=\"center\">\n <a href=\"https://wpscan.com/\">\n <img src=\"https://raw.githubusercontent.com/wpscanteam/wpscan/gh"
},
{
"path": "Rakefile",
"chars": 417,
"preview": "# rubocop:disable all\n\nrequire 'bundler/gem_tasks'\n\nexec = []\n\nbegin\n require 'rubocop/rake_task'\n\n RuboCop::RakeTask."
},
{
"path": "app/app.rb",
"chars": 115,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'models'\nrequire_relative 'finders'\nrequire_relative 'controllers'\n"
},
{
"path": "app/controllers/aliases.rb",
"chars": 388,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Controller\n # Controller to add the aliases in the CLI\n clas"
},
{
"path": "app/controllers/core.rb",
"chars": 3645,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Controller\n # Specific Core controller to include WordPress che"
},
{
"path": "app/controllers/custom_directories.rb",
"chars": 861,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Controller\n # Controller to ensure that the wp-content and wp-p"
},
{
"path": "app/controllers/enumeration/cli_options.rb",
"chars": 7704,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Controller\n # Enumeration CLI Options\n class Enumeration < C"
},
{
"path": "app/controllers/enumeration/enum_methods.rb",
"chars": 7133,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Controller\n # Enumeration Methods\n class Enumeration < CMSSc"
},
{
"path": "app/controllers/enumeration.rb",
"chars": 584,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'enumeration/cli_options'\nrequire_relative 'enumeration/enum_methods'\n\nm"
},
{
"path": "app/controllers/main_theme.rb",
"chars": 730,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Controller\n # Main Theme Controller\n class MainTheme < CMSSc"
},
{
"path": "app/controllers/password_attack.rb",
"chars": 4265,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Controller\n # Password Attack Controller\n class PasswordAtta"
},
{
"path": "app/controllers/vuln_api.rb",
"chars": 984,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Controller\n # Controller to handle the API token\n class Vuln"
},
{
"path": "app/controllers/wp_version.rb",
"chars": 1034,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Controller\n # Wp Version Controller\n class WpVersion < CMSSc"
},
{
"path": "app/controllers.rb",
"chars": 370,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'controllers/core'\nrequire_relative 'controllers/vuln_api'\nrequire_relat"
},
{
"path": "app/finders/config_backups/known_filenames.rb",
"chars": 1256,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module ConfigBackups\n # Config Backup finder\n "
},
{
"path": "app/finders/config_backups.rb",
"chars": 414,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'config_backups/known_filenames'\n\nmodule WPScan\n module Finders\n mod"
},
{
"path": "app/finders/db_exports/known_locations.rb",
"chars": 3065,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module DbExports\n # DB Exports finder\n class"
},
{
"path": "app/finders/db_exports.rb",
"chars": 399,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'db_exports/known_locations'\n\nmodule WPScan\n module Finders\n module "
},
{
"path": "app/finders/interesting_findings/backup_db.rb",
"chars": 679,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module InterestingFindings\n # BackupDB finder\n "
},
{
"path": "app/finders/interesting_findings/debug_log.rb",
"chars": 465,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module InterestingFindings\n # debug.log finder\n "
},
{
"path": "app/finders/interesting_findings/duplicator_installer_log.rb",
"chars": 564,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module InterestingFindings\n # DuplicatorInstaller"
},
{
"path": "app/finders/interesting_findings/emergency_pwd_reset_script.rb",
"chars": 662,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module InterestingFindings\n # Emergency Password "
},
{
"path": "app/finders/interesting_findings/full_path_disclosure.rb",
"chars": 663,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module InterestingFindings\n # Full Path Disclosur"
},
{
"path": "app/finders/interesting_findings/mu_plugins.rb",
"chars": 1171,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module InterestingFindings\n # Must Use Plugins Di"
},
{
"path": "app/finders/interesting_findings/multisite.rb",
"chars": 783,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module InterestingFindings\n # Multisite checker\n "
},
{
"path": "app/finders/interesting_findings/php_disabled.rb",
"chars": 576,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module InterestingFindings\n # See https://github."
},
{
"path": "app/finders/interesting_findings/readme.rb",
"chars": 745,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module InterestingFindings\n # Readme.html finder\n"
},
{
"path": "app/finders/interesting_findings/registration.rb",
"chars": 840,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module InterestingFindings\n # Registration Enable"
},
{
"path": "app/finders/interesting_findings/tmm_db_migrate.rb",
"chars": 663,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module InterestingFindings\n # Tmm DB Migrate find"
},
{
"path": "app/finders/interesting_findings/upload_directory_listing.rb",
"chars": 534,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module InterestingFindings\n # UploadDirectoryList"
},
{
"path": "app/finders/interesting_findings/upload_sql_dump.rb",
"chars": 668,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module InterestingFindings\n # UploadSQLDump finde"
},
{
"path": "app/finders/interesting_findings/wp_cron.rb",
"chars": 540,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module InterestingFindings\n # wp-cron.php finder\n"
},
{
"path": "app/finders/interesting_findings.rb",
"chars": 1452,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'interesting_findings/readme'\nrequire_relative 'interesting_findings/wp_"
},
{
"path": "app/finders/main_theme/css_style_in_404_page.rb",
"chars": 363,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module MainTheme\n # From the CSS style in the 404"
},
{
"path": "app/finders/main_theme/css_style_in_homepage.rb",
"chars": 1383,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module MainTheme\n # From the CSS style in the hom"
},
{
"path": "app/finders/main_theme/urls_in_404_page.rb",
"chars": 305,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module MainTheme\n # URLs In 404 Page Finder\n "
},
{
"path": "app/finders/main_theme/urls_in_homepage.rb",
"chars": 851,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module MainTheme\n # URLs In Homepage Finder\n "
},
{
"path": "app/finders/main_theme/woo_framework_meta_generator.rb",
"chars": 802,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module MainTheme\n # From the WooFramework meta ge"
},
{
"path": "app/finders/main_theme.rb",
"chars": 849,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'main_theme/css_style_in_homepage'\nrequire_relative 'main_theme/css_styl"
},
{
"path": "app/finders/medias/attachment_brute_forcing.rb",
"chars": 1178,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Medias\n # Medias Finder, see https://githu"
},
{
"path": "app/finders/medias.rb",
"chars": 402,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'medias/attachment_brute_forcing'\n\nmodule WPScan\n module Finders\n mo"
},
{
"path": "app/finders/passwords/wp_login.rb",
"chars": 704,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Passwords\n # Password attack against the w"
},
{
"path": "app/finders/passwords/xml_rpc.rb",
"chars": 692,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Passwords\n # Password attack against the X"
},
{
"path": "app/finders/passwords/xml_rpc_multicall.rb",
"chars": 5068,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Passwords\n # Password attack against the X"
},
{
"path": "app/finders/passwords.rb",
"chars": 153,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'passwords/wp_login'\nrequire_relative 'passwords/xml_rpc'\nrequire_relati"
},
{
"path": "app/finders/plugin_version/readme.rb",
"chars": 2462,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module PluginVersion\n # Plugin Version Finder fro"
},
{
"path": "app/finders/plugin_version.rb",
"chars": 813,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'plugin_version/readme'\n\nmodule WPScan\n module Finders\n module Plugi"
},
{
"path": "app/finders/plugins/body_pattern.rb",
"chars": 962,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Plugins\n # Plugins finder from Dynamic Fin"
},
{
"path": "app/finders/plugins/comment.rb",
"chars": 1106,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Plugins\n # Plugins finder from the Dynamic"
},
{
"path": "app/finders/plugins/config_parser.rb",
"chars": 1138,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Plugins\n # Plugins finder from Dynamic Fin"
},
{
"path": "app/finders/plugins/header_pattern.rb",
"chars": 1145,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Plugins\n # Plugins finder from Dynamic Fin"
},
{
"path": "app/finders/plugins/javascript_var.rb",
"chars": 1100,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Plugins\n # Plugins finder from the Dynamic"
},
{
"path": "app/finders/plugins/known_locations.rb",
"chars": 1602,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Plugins\n # Known Locations Plugins Finder\n"
},
{
"path": "app/finders/plugins/query_parameter.rb",
"chars": 881,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Plugins\n # Plugins finder from Dynamic Fin"
},
{
"path": "app/finders/plugins/urls_in_404_page.rb",
"chars": 384,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Plugins\n # URLs In 404 Page Finder\n #"
},
{
"path": "app/finders/plugins/urls_in_homepage.rb",
"chars": 804,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Plugins\n # URLs In Homepage Finder\n #"
},
{
"path": "app/finders/plugins/xpath.rb",
"chars": 1059,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Plugins\n # Plugins finder from the Dynamic"
},
{
"path": "app/finders/plugins.rb",
"chars": 1164,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'plugins/urls_in_homepage'\nrequire_relative 'plugins/urls_in_404_page'\nr"
},
{
"path": "app/finders/theme_version/style.rb",
"chars": 1129,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module ThemeVersion\n # Theme Version Finder from "
},
{
"path": "app/finders/theme_version/woo_framework_meta_generator.rb",
"chars": 620,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module ThemeVersion\n # Theme Version Finder from "
},
{
"path": "app/finders/theme_version.rb",
"chars": 935,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'theme_version/style'\nrequire_relative 'theme_version/woo_framework_meta"
},
{
"path": "app/finders/themes/known_locations.rb",
"chars": 1583,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Themes\n # Known Locations Themes Finder\n "
},
{
"path": "app/finders/themes/urls_in_404_page.rb",
"chars": 301,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Themes\n # URLs In 04 Page Finder\n cla"
},
{
"path": "app/finders/themes/urls_in_homepage.rb",
"chars": 718,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Themes\n # URLs In Homepage Finder\n cl"
},
{
"path": "app/finders/themes.rb",
"chars": 582,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'themes/urls_in_homepage'\nrequire_relative 'themes/urls_in_404_page'\nreq"
},
{
"path": "app/finders/timthumb_version/bad_request.rb",
"chars": 733,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module TimthumbVersion\n # Timthumb Version Finder"
},
{
"path": "app/finders/timthumb_version.rb",
"chars": 414,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'timthumb_version/bad_request'\n\nmodule WPScan\n module Finders\n modul"
},
{
"path": "app/finders/timthumbs/known_locations.rb",
"chars": 1967,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Timthumbs\n # Known Locations Timthumbs Fin"
},
{
"path": "app/finders/timthumbs.rb",
"chars": 397,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'timthumbs/known_locations'\n\nmodule WPScan\n module Finders\n module T"
},
{
"path": "app/finders/users/author_id_brute_forcing.rb",
"chars": 3520,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Users\n # Author Id Brute Forcing\n cla"
},
{
"path": "app/finders/users/author_posts.rb",
"chars": 1639,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Users\n # Author Posts\n class AuthorPo"
},
{
"path": "app/finders/users/author_sitemap.rb",
"chars": 1050,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Users\n # Since WP 5.5, /wp-sitemap-users-1"
},
{
"path": "app/finders/users/login_error_messages.rb",
"chars": 1375,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Users\n # Login Error Messages\n #\n "
},
{
"path": "app/finders/users/oembed_api.rb",
"chars": 1860,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Users\n # Since WP 4.4, the oembed API can "
},
{
"path": "app/finders/users/rss_generator.rb",
"chars": 1429,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Users\n # Users disclosed from the dc:creat"
},
{
"path": "app/finders/users/wp_json_api.rb",
"chars": 2161,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Users\n # WP JSON API\n #\n # Since"
},
{
"path": "app/finders/users/yoast_seo_author_sitemap.rb",
"chars": 453,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module Users\n # The YOAST SEO plugin has an autho"
},
{
"path": "app/finders/users.rb",
"chars": 1473,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'users/author_posts'\nrequire_relative 'users/wp_json_api'\nrequire_relati"
},
{
"path": "app/finders/wp_items/urls_in_page.rb",
"chars": 2531,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module WpItems\n # URLs In Homepage Module to use "
},
{
"path": "app/finders/wp_items.rb",
"chars": 72,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'wp_items/urls_in_page'\n"
},
{
"path": "app/finders/wp_version/atom_generator.rb",
"chars": 1077,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module WpVersion\n # Atom Generator Version Finder"
},
{
"path": "app/finders/wp_version/rdf_generator.rb",
"chars": 1016,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module WpVersion\n # RDF Generator Version Finder\n"
},
{
"path": "app/finders/wp_version/readme.rb",
"chars": 934,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module WpVersion\n # Readme Version Finder\n c"
},
{
"path": "app/finders/wp_version/rss_generator.rb",
"chars": 1286,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module WpVersion\n # RSS Generator Version Finder\n"
},
{
"path": "app/finders/wp_version/unique_fingerprinting.rb",
"chars": 921,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module WpVersion\n # Unique Fingerprinting Version"
},
{
"path": "app/finders/wp_version.rb",
"chars": 1301,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'wp_version/rss_generator'\nrequire_relative 'wp_version/atom_generator'\n"
},
{
"path": "app/finders.rb",
"chars": 608,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'finders/interesting_findings'\nrequire_relative 'finders/wp_items'\nrequi"
},
{
"path": "app/models/config_backup.rb",
"chars": 142,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Model\n # Config Backup\n class ConfigBackup < InterestingFind"
},
{
"path": "app/models/db_export.rb",
"chars": 134,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Model\n # DB Export\n class DbExport < InterestingFinding\n "
},
{
"path": "app/models/interesting_finding.rb",
"chars": 3656,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Model\n # Custom class to include the WPScan::References module\n"
},
{
"path": "app/models/media.rb",
"chars": 127,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Model\n # Media\n class Media < InterestingFinding\n end\n e"
},
{
"path": "app/models/plugin.rb",
"chars": 1280,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Model\n # WordPress Plugin\n class Plugin < WpItem\n # See"
},
{
"path": "app/models/theme.rb",
"chars": 3079,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Model\n # WordPress Theme\n class Theme < WpItem\n attr_re"
},
{
"path": "app/models/timthumb.rb",
"chars": 2212,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Model\n # Timthumb\n class Timthumb < InterestingFinding\n "
},
{
"path": "app/models/wp_item.rb",
"chars": 5338,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Model\n # WpItem (superclass of Plugin & Theme)\n class WpItem"
},
{
"path": "app/models/wp_version.rb",
"chars": 2053,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Model\n # WP Version\n class WpVersion < CMSScanner::Model::Ve"
},
{
"path": "app/models/xml_rpc.rb",
"chars": 707,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Model\n # Override of the CMSScanner::XMLRPC to include the refe"
},
{
"path": "app/models.rb",
"chars": 460,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Model\n include CMSScanner::Model\n end\nend\n\nrequire_relative 'm"
},
{
"path": "app/views/cli/core/banner.erb",
"chars": 673,
"preview": "_______________________________________________________________\n __ _______ _____\n \\ \\ "
},
{
"path": "app/views/cli/core/db_update_finished.erb",
"chars": 182,
"preview": "<% if @verbose && !@updated.empty? -%>\n<%= notice_icon %> File(s) Updated:\n<% @updated.each do |file| -%>\n | <%= file %"
},
{
"path": "app/views/cli/core/db_update_started.erb",
"chars": 44,
"preview": "<%= notice_icon %> Updating the Database ..."
},
{
"path": "app/views/cli/core/not_fully_configured.erb",
"chars": 127,
"preview": "<%= critical_icon %> The Website is not fully configured and currently in install mode. Create a new admin user at <%= @"
},
{
"path": "app/views/cli/core/version.erb",
"chars": 132,
"preview": "Current Version: <%= WPScan::VERSION %>\n<% if @last_update -%>\nLast DB Update: <%= @last_update.strftime('%Y-%m-%d') %>\n"
},
{
"path": "app/views/cli/enumeration/config_backups.erb",
"chars": 297,
"preview": "\n<% if @config_backups.empty? -%>\n<%= notice_icon %> No Config Backups Found.\n<% else -%>\n<%= notice_icon %> Config Back"
},
{
"path": "app/views/cli/enumeration/db_exports.erb",
"chars": 269,
"preview": "\n<% if @db_exports.empty? -%>\n<%= notice_icon %> No DB Exports Found.\n<% else -%>\n<%= notice_icon %> Db Export(s) Identi"
},
{
"path": "app/views/cli/enumeration/medias.erb",
"chars": 238,
"preview": "\n<% if @medias.empty? -%>\n<%= notice_icon %> No Medias Found.\n<% else -%>\n<%= notice_icon %> Medias(s) Identified:\n<% @m"
},
{
"path": "app/views/cli/enumeration/plugins.erb",
"chars": 512,
"preview": "\n<% if @plugins.empty? -%>\n<%= notice_icon %> No plugins Found.\n<% else -%>\n<%= notice_icon %> Plugin(s) Identified:\n<% "
},
{
"path": "app/views/cli/enumeration/themes.erb",
"chars": 257,
"preview": "\n<% if @themes.empty? -%>\n<%= notice_icon %> No themes Found.\n<% else -%>\n<%= notice_icon %> Theme(s) Identified:\n<% @th"
},
{
"path": "app/views/cli/enumeration/timthumbs.erb",
"chars": 438,
"preview": "\n<% if @timthumbs.empty? -%>\n<%= notice_icon %> No Timthumbs Found.\n<% else -%>\n<%= notice_icon %> Timthumb(s) Identifie"
},
{
"path": "app/views/cli/enumeration/users.erb",
"chars": 230,
"preview": "\n<% if @users.empty? -%>\n<%= notice_icon %> No Users Found.\n<% else -%>\n<%= notice_icon %> User(s) Identified:\n<% @users"
},
{
"path": "app/views/cli/finding.erb",
"chars": 940,
"preview": " | Found By: <%= @item.found_by %>\n<% @item.interesting_entries.each do |entry| -%>\n | - <%= entry %>\n<% end -%>\n<% unl"
},
{
"path": "app/views/cli/info.erb",
"chars": 29,
"preview": "<%= info_icon %> <%= @msg %>\n"
},
{
"path": "app/views/cli/main_theme/theme.erb",
"chars": 211,
"preview": "<% if @theme -%>\n<%= info_icon %> WordPress theme in use: <%= @theme %>\n<%= render('@theme', theme: @theme, show_parents"
},
{
"path": "app/views/cli/notice.erb",
"chars": 31,
"preview": "<%= notice_icon %> <%= @msg %>\n"
},
{
"path": "app/views/cli/password_attack/users.erb",
"chars": 245,
"preview": "\n<% if @users.empty? -%>\n<%= notice_icon %> No Valid Passwords Found.\n<% else -%>\n<%= critical_icon %> Valid Combination"
},
{
"path": "app/views/cli/theme.erb",
"chars": 1414,
"preview": "<%= render('@wp_item', wp_item: @theme) -%>\n | Style URL: <%= @theme.style_url %>\n<% if @theme.style_name -%>\n | Style N"
},
{
"path": "app/views/cli/usage.erb",
"chars": 69,
"preview": "<%= @msg %>\n\nPlease use --help/-h for the list of available options.\n"
},
{
"path": "app/views/cli/vuln_api/status.erb",
"chars": 577,
"preview": "<% unless @status.empty? -%>\n<% if @status['http_error'] -%>\n<%= critical_icon %> WPScan DB API, <%= @status['http_error"
},
{
"path": "app/views/cli/vulnerability.erb",
"chars": 451,
"preview": " | <%= critical_icon %> Title: <%= @v.title %>\n<% if @v.cvss -%>\n | CVSS: <%= @v.cvss[:score] %> (<%= @v.cvss[:vecto"
},
{
"path": "app/views/cli/wp_item.erb",
"chars": 770,
"preview": " | Location: <%= @wp_item.url %>\n<% if @wp_item.latest_version && !@wp_item.outdated? -%>\n | Latest Version: <%= @wp_ite"
},
{
"path": "app/views/cli/wp_version/version.erb",
"chars": 307,
"preview": "<% if @version -%>\n<%= info_icon %> WordPress version <%= @version.number %> identified (<%= @version.status.tr('-', '_'"
},
{
"path": "app/views/json/core/banner.erb",
"chars": 269,
"preview": "\"banner\": {\n\"description\": \"WordPress Security Scanner by the WPScan Team\",\n \"version\": <%= WPScan::VERSION.to_json %>,"
},
{
"path": "app/views/json/core/db_update_finished.erb",
"chars": 72,
"preview": "\"db_files_updated\": <%= @updated.to_json %>,\n\"db_update_finished\": true,"
},
{
"path": "app/views/json/core/db_update_started.erb",
"chars": 26,
"preview": "\"db_update_started\": true,"
},
{
"path": "app/views/json/core/not_fully_configured.erb",
"chars": 132,
"preview": "\"not_fully_configured\": \"The Website is not fully configured and currently in install mode. Create a new admin user at <"
},
{
"path": "app/views/json/core/version.erb",
"chars": 89,
"preview": "\"version\": <%= WPScan::VERSION.to_json %>,\n\"last_db_update\": <%= @last_update.to_json %>,"
},
{
"path": "app/views/json/enumeration/config_backups.erb",
"chars": 329,
"preview": "\"config_backups\": {\n<% unless @config_backups.empty? -%>\n<% last_index = @config_backups.size - 1 -%>\n<% @config_backups"
},
{
"path": "app/views/json/enumeration/db_exports.erb",
"chars": 301,
"preview": "\"db_exports\": {\n<% unless @db_exports.empty? -%>\n<% last_index = @db_exports.size - 1 -%>\n<% @db_exports.each_with_index"
},
{
"path": "app/views/json/enumeration/medias.erb",
"chars": 273,
"preview": "\"medias\": {\n<% unless @medias.empty? -%>\n<% last_index = @medias.size - 1 -%>\n<% @medias.each_with_index do |media, inde"
},
{
"path": "app/views/json/enumeration/plugins.erb",
"chars": 604,
"preview": "\"plugins\": {\n<% unless @plugins.empty? -%>\n<% last_index = @plugins.size - 1 -%>\n<% @plugins.each_with_index do |plugin,"
},
{
"path": "app/views/json/enumeration/themes.erb",
"chars": 273,
"preview": "\"themes\": {\n<% unless @themes.empty? -%>\n<% last_index = @themes.size - 1 -%>\n<% @themes.each_with_index do |theme, inde"
},
{
"path": "app/views/json/enumeration/timthumbs.erb",
"chars": 577,
"preview": "\"timthumbs\": {\n<% unless @timthumbs.empty? -%>\n<% last_index = @timthumbs.size - 1 -%>\n<% @timthumbs.each_with_index do "
},
{
"path": "app/views/json/enumeration/users.erb",
"chars": 305,
"preview": "\"users\": {\n<% unless @users.empty? -%>\n<% last_index = @users.size - 1 -%>\n<% @users.each_with_index do |user, index| -%"
},
{
"path": "app/views/json/finding.erb",
"chars": 1032,
"preview": "\"found_by\": <%= @item.found_by.to_json %>,\n\"confidence\": <%= @item.confidence.to_json %>,\n\"interesting_entries\": <%= @it"
},
{
"path": "app/views/json/main_theme/theme.erb",
"chars": 139,
"preview": "<% if @theme -%>\n\"main_theme\": {\n <%= render('@theme', theme: @theme, show_parents: true) %>\n},\n<% else -%>\n\"main_theme"
},
{
"path": "app/views/json/password_attack/users.erb",
"chars": 283,
"preview": "\"password_attack\": {\n<% unless @users.empty? -%>\n<% last_index = @users.size - 1 -%>\n<% @users.each_with_index do |user,"
},
{
"path": "app/views/json/theme.erb",
"chars": 1138,
"preview": "<%= render('@wp_item', wp_item: @theme) %>,\n\"style_url\": <%= @theme.style_url.to_json %>,\n\"style_name\": <%= @theme.style"
},
{
"path": "app/views/json/vuln_api/status.erb",
"chars": 534,
"preview": "\"vuln_api\": {\n<% unless @status.empty? -%>\n<% if @status['http_error'] -%>\n\"http_error\": <%= @status['http_error'].to_s."
},
{
"path": "app/views/json/wp_item.erb",
"chars": 508,
"preview": "\"slug\": <%= @wp_item.slug.to_json %>,\n\"location\": <%= @wp_item.url.to_json %>,\n\"latest_version\": <%= @wp_item.latest_ver"
},
{
"path": "app/views/json/wp_version/version.erb",
"chars": 263,
"preview": "<% if @version -%>\n\"version\": {\n \"number\": <%= @version.number.to_json %>,\n \"release_date\": <%= @version.release_date."
},
{
"path": "bin/wpscan",
"chars": 471,
"preview": "#!/usr/bin/env ruby\n# frozen_string_literal: true\n\nrequire 'wpscan'\n\nWPScan::Scan.new do |s|\n s.controllers <<\n WPSc"
},
{
"path": "bin/wpscan-docker",
"chars": 505,
"preview": "#!/bin/bash\n\nSOURCE=\"${BASH_SOURCE[0]}\"\nwhile [ -h \"$SOURCE\" ]; do # resolve $SOURCE until the file is no longer a symli"
},
{
"path": "bin/wpscan-docker-dev",
"chars": 564,
"preview": "#!/bin/bash\n\nSOURCE=\"${BASH_SOURCE[0]}\"\nwhile [ -h \"$SOURCE\" ]; do # resolve $SOURCE until the file is no longer a symli"
},
{
"path": "bin/wpscan-memprof",
"chars": 683,
"preview": "#!/usr/bin/env ruby\n# frozen_string_literal: true\n\nrequire 'memory_profiler' # https://github.com/SamSaffron/memory_prof"
},
{
"path": "bin/wpscan-stackprof",
"chars": 960,
"preview": "#!/usr/bin/env ruby\n# frozen_string_literal: true\n\nrequire 'stackprof' # https://github.com/tmm1/stackprof\nrequire 'wpsc"
},
{
"path": "lib/wpscan/browser.rb",
"chars": 291,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n # Custom Browser\n class Browser < CMSScanner::Browser\n extend Actions"
},
{
"path": "lib/wpscan/controller.rb",
"chars": 287,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n # Needed to load at least the Core controller\n # Otherwise, the followin"
},
{
"path": "lib/wpscan/controllers.rb",
"chars": 306,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n # Override to set the OptParser's summary width to 45 (instead of 40 from"
},
{
"path": "lib/wpscan/db/dynamic_finders/base.rb",
"chars": 1605,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module DB\n module DynamicFinders\n class Base\n # @return [ "
},
{
"path": "lib/wpscan/db/dynamic_finders/plugin.rb",
"chars": 3947,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module DB\n module DynamicFinders\n class Plugin < Base\n # @"
},
{
"path": "lib/wpscan/db/dynamic_finders/theme.rb",
"chars": 337,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module DB\n module DynamicFinders\n class Theme < Plugin\n # "
},
{
"path": "lib/wpscan/db/dynamic_finders/wordpress.rb",
"chars": 2453,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module DB\n module DynamicFinders\n class Wordpress < Base\n "
},
{
"path": "lib/wpscan/db/fingerprints.rb",
"chars": 1322,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module DB\n # Fingerprints class\n class Fingerprints\n # @param "
},
{
"path": "lib/wpscan/db/plugin.rb",
"chars": 221,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module DB\n # Plugin DB\n class Plugin < WpItem\n # @return [ Has"
},
{
"path": "lib/wpscan/db/plugins.rb",
"chars": 203,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module DB\n # WP Plugins\n class Plugins < WpItems\n # @return [ "
},
{
"path": "lib/wpscan/db/sponsor.rb",
"chars": 303,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module DB\n class Sponsor\n # @return [ Hash ]\n def self.text\n"
},
{
"path": "lib/wpscan/db/theme.rb",
"chars": 218,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module DB\n # Theme DB\n class Theme < WpItem\n # @return [ Hash "
},
{
"path": "lib/wpscan/db/themes.rb",
"chars": 200,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module DB\n # WP Themes\n class Themes < WpItems\n # @return [ JS"
},
{
"path": "lib/wpscan/db/updater.rb",
"chars": 5146,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module DB\n # Class used to perform DB updates\n # :nocov:\n class "
},
{
"path": "lib/wpscan/db/vuln_api.rb",
"chars": 2200,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module DB\n # WPVulnDB API\n class VulnApi\n NON_ERROR_CODES = [2"
},
{
"path": "lib/wpscan/db/wp_item.rb",
"chars": 647,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module DB\n # WpItem - super DB class for Plugin, Theme and Version\n "
},
{
"path": "lib/wpscan/db/wp_items.rb",
"chars": 583,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module DB\n # WP Items\n class WpItems\n # @return [ Array<String"
},
{
"path": "lib/wpscan/db/wp_version.rb",
"chars": 225,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module DB\n # WP Version\n class Version < WpItem\n # @return [ H"
},
{
"path": "lib/wpscan/db.rb",
"chars": 549,
"preview": "# frozen_string_literal: true\n\nrequire_relative 'db/wp_item'\nrequire_relative 'db/updater'\nrequire_relative 'db/wp_items"
},
{
"path": "lib/wpscan/errors/enumeration.rb",
"chars": 742,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Error\n class PluginsThresholdReached < Standard\n def to_s\n"
},
{
"path": "lib/wpscan/errors/http.rb",
"chars": 742,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Error\n # HTTP Error\n class HTTP < Standard\n attr_reader"
},
{
"path": "lib/wpscan/errors/update.rb",
"chars": 552,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Error\n # Error raised when there is a missing DB file and --no"
},
{
"path": "lib/wpscan/errors/vuln_api.rb",
"chars": 480,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Error\n # Error raised when the token given via --api-token is i"
},
{
"path": "lib/wpscan/errors/wordpress.rb",
"chars": 1048,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Error\n # WordPress hosted (*.wordpress.com)\n class WordPress"
},
{
"path": "lib/wpscan/errors/xmlrpc.rb",
"chars": 219,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Error\n # XML-RPC Not Detected\n class XMLRPCNotDetected < Sta"
},
{
"path": "lib/wpscan/errors.rb",
"chars": 351,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Error\n include CMSScanner::Error\n\n class Standard < Standard"
},
{
"path": "lib/wpscan/finders/dynamic_finder/finder.rb",
"chars": 2331,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module DynamicFinder\n # To be used as a base when"
},
{
"path": "lib/wpscan/finders/dynamic_finder/version/body_pattern.rb",
"chars": 956,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module DynamicFinder\n module Version\n # Ve"
},
{
"path": "lib/wpscan/finders/dynamic_finder/version/comment.rb",
"chars": 499,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module DynamicFinder\n module Version\n # Ve"
},
{
"path": "lib/wpscan/finders/dynamic_finder/version/config_parser.rb",
"chars": 1954,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module DynamicFinder\n module Version\n # Ve"
},
{
"path": "lib/wpscan/finders/dynamic_finder/version/finder.rb",
"chars": 844,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module DynamicFinder\n module Version\n # To"
},
{
"path": "lib/wpscan/finders/dynamic_finder/version/header_pattern.rb",
"chars": 973,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module DynamicFinder\n module Version\n # Ve"
},
{
"path": "lib/wpscan/finders/dynamic_finder/version/javascript_var.rb",
"chars": 1964,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module DynamicFinder\n module Version\n # Ve"
},
{
"path": "lib/wpscan/finders/dynamic_finder/version/query_parameter.rb",
"chars": 1854,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module DynamicFinder\n module Version\n # Ve"
},
{
"path": "lib/wpscan/finders/dynamic_finder/version/xpath.rb",
"chars": 1045,
"preview": "# frozen_string_literal: true\n\nmodule WPScan\n module Finders\n module DynamicFinder\n module Version\n # Ve"
}
]
// ... and 4787 more files (download for full content)
About this extraction
This page contains the full source code of the wpscanteam/wpscan GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 4987 files (62.7 MB), approximately 17.0M tokens, and a symbol index with 2086 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.