<?php

/**
 * Class wfJavascriptBridge
 * 
 * The purpose of this class is to provide a home for the various fixed or semi-fixed data sets that need to be provided
 * to the Javascript side of the plugin. It avoids cluttering up otherwise large source files and facilitates easier
 * updates.
 */
class wfJavascriptBridge {
	/**
	 * Returns a mapping of translation strings for the Javascript frontend to use, populated via the WordPress 
	 * translation system.
	 *
	 * It would be nice to be less redundant here, but the support for that is in WP 5.0 and unavailable in our
	 * current oldest supported version.
	 * 
	 * @return array
	 */
	public static function WordfenceI18nStrings() {
		return array(
			'(recommended)' => __('(recommended)', 'wordfence'),
			'+%d more' => /* translators: number of values not shown */ __('+%d more', 'wordfence'),
			'%d address in this network' => /* translators: quantity */ __('%d address in this network', 'wordfence'),
			'%d addresses in this network' => /* translators: quantity */ __('%d addresses in this network', 'wordfence'),
			'%s ago' => /* translators: Localized date. */ __('%s ago', 'wordfence'),
			'%d Country Selected' => /* translators: Selection count. */ __('%d Country Selected', 'wordfence'),
			'%d Countries Selected' => /* translators: Selection count. */ __('%d Countries Selected', 'wordfence'),
			'%d day' => /* translators: Time duration (singular). */ __('%d day', 'wordfence'),
			'%d days' => /* translators: Time duration (plural). */ __('%d days', 'wordfence'),
			'%d hit' => /* translators: Number of HTTP requests (singular). */ __('%d hit', 'wordfence'),
			'%d hits' => /* translators: Number of HTTP requests (plural). */ __('%d hits', 'wordfence'),
			'%d hour' => /* translators: Time duration (singular). */ __('%d hour', 'wordfence'),
			'%d hours' => /* translators: Time duration (plural). */ __('%d hours', 'wordfence'),
			'%s License Active' => /* translators: License type */ __('%s License Active', 'wordfence'),
			'%s License Expired' => /* translators: License type */ __('%s License Expired', 'wordfence'),
			'%1$s in POST body: %2$s' => /* translators: 1. Description of firewall action. 2. Description of input parameters. */ __('%1$s in POST body: %2$s', 'wordfence'),
			'%1$s in cookie: %2$s' => /* translators: 1. Description of firewall action. 2. Description of input parameters. */ __('%1$s in cookie: %2$s', 'wordfence'),
			'%1$s in file: %2$s' => /* translators: 1. Description of firewall action. 2. Description of input parameters. */ __('%1$s in file: %2$s', 'wordfence'),
			'%1$s in query string: %2$s' => /* translators: 1. Description of firewall action. 2. Description of input parameters. */ __('%1$s in query string: %2$s', 'wordfence'),
			'%s is not valid hostname' => /* translators: Domain name. */ __('%s is not valid hostname', 'wordfence'),
			'%d minute' => /* translators: Time duration (singular). */ __('%d minute', 'wordfence'),
			'%d minutes' => /* translators: Time duration (plural). */ __('%d minutes', 'wordfence'),
			'%d month' => /* translators: Time duration (singular). */ __('%d month', 'wordfence'),
			'%d months' => /* translators: Time duration (plural). */ __('%d months', 'wordfence'),
			'%d per minute' => /* translators: Number of HTTP requests. */ __('%d per minute', 'wordfence'),
			'%s AM' => /* translators: time */ __('%s AM', 'wordfence'),
			'%s Enabled' => /* translators: license type */ __('%s Enabled', 'wordfence'),
			'%s License Expiring' => /* translators: license type */ __('%s License Expiring', 'wordfence'),
			'%s PM' => /* translators: time */ __('%s PM', 'wordfence'),
			'%d second' => /* translators: Time duration (singular). */ __('%d second', 'wordfence'),
			'%d seconds' => /* translators: Time duration (plural). */ __('%d seconds', 'wordfence'),
			'.htaccess Updated' => __('.htaccess Updated', 'wordfence'),
			'.htaccess change' => __('.htaccess change', 'wordfence'),
			'/bypassurl/' => __('/bypassurl/', 'wordfence'),
			'/page-name/' => __('/page-name/', 'wordfence'),
			'/set-country-bypass/' => __('/set-country-bypass/', 'wordfence'),
			'(recommended based on our tests)' => __('(recommended based on our tests)', 'wordfence'),
			'0 for default. Must be %d or greater and 10-20 or higher is recommended for most servers' => /* translators: minimum value */ __('0 for default. Must be %d or greater and 10-20 or higher is recommended for most servers', 'wordfence'),
			'0 (Disabled)' => __('0 (Disabled)', 'wordfence'),
			'0 means unlimited alerts will be sent.' => __('0 means unlimited alerts will be sent.', 'wordfence'),
			'0 or empty means the default of %s will be used' => /* translators: default value */ __('0 or empty means the default of %s will be used', 'wordfence'),
			'0 or empty means unlimited issues will be sent' => __('0 or empty means unlimited issues will be sent', 'wordfence'),
			'24 Hours' => __('24 Hours', 'wordfence'),
			'2FA Mode: Legacy' => __('2FA Mode: Legacy', 'wordfence'),
			'2FA Mode: Normal' => __('2FA Mode: Normal', 'wordfence'),
			'30 Days' => __('30 Days', 'wordfence'),
			'404 Not Found' => __('404 Not Found', 'wordfence'),
			'7 Days' => __('7 Days', 'wordfence'),
			'A scan stage has failed to start. This is often because the site either cannot make outbound requests or is blocked from connecting to itself.' => __('A scan stage has failed to start. This is often because the site either cannot make outbound requests or is blocked from connecting to itself.', 'wordfence'),
			'A termination request has been sent to stop any running scans.' => __('A termination request has been sent to stop any running scans.', 'wordfence'),
			'A \'True\' result means WordPress thinks the mail was sent without errors. A \'False\' result means that WordPress encountered an error sending your mail. Note that it\'s possible to get a \'True\' response with an error elsewhere in your mail system that may cause emails to not be delivered.' => __('A \'True\' result means WordPress thinks the mail was sent without errors. A \'False\' result means that WordPress encountered an error sending your mail. Note that it\'s possible to get a \'True\' response with an error elsewhere in your mail system that may cause emails to not be delivered.', 'wordfence'),
			'a Wordfence Central user' => __('a Wordfence Central user', 'wordfence'),
			'A Wordfence scan examines all files, posts, pages, and comments on your WordPress website looking for malware, known malicious URLs, and known patterns of infections. It also does several other reputation and server checks.' => __('A Wordfence scan examines all files, posts, pages, and comments on your WordPress website looking for malware, known malicious URLs, and known patterns of infections. It also does several other reputation and server checks.', 'wordfence'),
			'A Wordfence scan looks for malware, malicious URLs, and patterns of infections by examining all of the files, posts, and comments on your WordPress website. It also checks your server and monitors your site\'s online reputation.' => __('A Wordfence scan looks for malware, malicious URLs, and patterns of infections by examining all of the files, posts, and comments on your WordPress website. It also checks your server and monitors your site\'s online reputation.', 'wordfence'),
			'Acknowledge User' => __('Acknowledge User', 'wordfence'),
			'Activate Premium' => __('Activate Premium', 'wordfence'),
			'Activity Detail' => __('Activity Detail', 'wordfence'),
			'Activity Log Sent' => __('Activity Log Sent', 'wordfence'),
			'Activity Report' => __('Activity Report', 'wordfence'),
			'Admin Panel' => __('Admin Panel', 'wordfence'),
			'AM' => __('AM', 'wordfence'),
			'Add' => __('Add', 'wordfence'),
			'Add action to allowlist' => __('Add action to allowlist', 'wordfence'),
			'Add Allowlisted URL/Param' => __('Add Allowlisted URL/Param', 'wordfence'),
			'Add code to .htaccess' => __('Add code to .htaccess', 'wordfence'),
			'Add Filter' => __('Add Filter', 'wordfence'),
			'Add Param to Firewall Allowlist' => __('Add Param to Firewall Allowlist', 'wordfence'),
			'Additional Options' => __('Additional Options', 'wordfence'),
			'Additional scan signatures (one per line)' => __('Additional scan signatures (one per line)', 'wordfence'),
			'Advanced Country Blocking Options' => __('Advanced Country Blocking Options', 'wordfence'),
			'Advanced Firewall Options' => __('Advanced Firewall Options', 'wordfence'),
			'Advanced Scan Options' => __('Advanced Scan Options', 'wordfence'),
			'Alert me when a non-admin user signs in' => __('Alert me when a non-admin user signs in', 'wordfence'),
			'Alert me when someone with administrator access signs in' => __('Alert me when someone with administrator access signs in', 'wordfence'),
			'Alert me when there\'s a large increase in attacks detected on my site' => __('Alert me when there\'s a large increase in attacks detected on my site', 'wordfence'),
			'Alert me with scan results of this severity level or greater:' => __('Alert me with scan results of this severity level or greater:', 'wordfence'),
			'Alert when an IP address is blocked' => __('Alert when an IP address is blocked', 'wordfence'),
			'Alert when someone is blocked from logging in for using a password found in a breach' => __('Alert when someone is blocked from logging in for using a password found in a breach', 'wordfence'),
			'Alert when someone is locked out from login' => __('Alert when someone is locked out from login', 'wordfence'),
			'Alert when the "lost password" form is used for a valid user' => __('Alert when the "lost password" form is used for a valid user', 'wordfence'),
			'All' => __('All', 'wordfence'),
			'All Events' => __('All Events', 'wordfence'),
			'All associated Wordfence Central connection data has been cleared.' => __('All associated Wordfence Central connection data has been cleared.', 'wordfence'),
			'All associated Wordfence Central connection data has been removed from the local database.' => __('All associated Wordfence Central connection data has been removed from the local database.', 'wordfence'),
			'All capabilities of admin user %s were successfully revoked.' => /* translators: WordPress username. */ __('All capabilities of admin user %s were successfully revoked.', 'wordfence'),
			'All Hits' => __('All Hits', 'wordfence'),
			'All of your blocking rules are in one central location. Choose the Block Type, then enter the details for the rule. Once it has been added, you\'ll see it saved as a rule for your site.' => __('All of your blocking rules are in one central location. Choose the Block Type, then enter the details for the rule. Once it has been added, you\'ll see it saved as a rule for your site.', 'wordfence'),
			'All of your scan options, including scheduling, are now located here.' => __('All of your scan options, including scheduling, are now located here.', 'wordfence'),
			'All PHP requests will be processed by the firewall prior to running.' => __('All PHP requests will be processed by the firewall prior to running.', 'wordfence'),
			'Allowlist Entry Exists' => __('Allowlist Entry Exists', 'wordfence'),
			'Allowlisted 404 URLs' => __('Allowlisted 404 URLs', 'wordfence'),
			'Allowlisted IP addresses that bypass all rules' => __('Allowlisted IP addresses that bypass all rules', 'wordfence'),
			'Allowlisted IPs must be separated by commas or placed on separate lines. You can specify ranges using the following formats: 127.0.0.1/24, 127.0.0.[1-100], or 127.0.0.1-127.0.1.100.' => __('Allowlisted IPs must be separated by commas or placed on separate lines. You can specify ranges using the following formats: 127.0.0.1/24, 127.0.0.[1-100], or 127.0.0.1-127.0.1.100.', 'wordfence'),
			'Allowlisted services' => __('Allowlisted services', 'wordfence'),
			'Allowlisted URLs' => __('Allowlisted URLs', 'wordfence'),
			'Allowlisted via Firewall Options page' => __('Allowlisted via Firewall Options page', 'wordfence'),
			'Always Ignore' => __('Always Ignore', 'wordfence'),
			'Always Ignore Version' => __('Always Ignore Version', 'wordfence'),
			'An error occurred while installing your license key.' => __('An error occurred while installing your license key.', 'wordfence'),
			'An unexpected error occurred during the request. Please try again or reload the page.' => __('An unexpected error occurred during the request. Please try again or reload the page.', 'wordfence'),
			'An unexpected error occurred while attempting to dismiss the notice. Please try again.' => __('An unexpected error occurred while attempting to dismiss the notice. Please try again.', 'wordfence'),
			'An unknown error occurred.' => __('An unknown error occurred.', 'wordfence'),
			'Automatic uninstallation cannot be completed, but you may still be able to <a href="%s" target="_blank" rel="noopener noreferrer">manually uninstall extended protection<span class="screen-reader-text"> (opens in new tab)</span></a>.' => /* translators: Support URL. */ __('Automatic uninstallation cannot be completed, but you may still be able to <a href="%s" target="_blank" rel="noopener noreferrer">manually uninstall extended protection<span class="screen-reader-text"> (opens in new tab)</span></a>.', 'wordfence'),
			'Automatically enable on' => __('Automatically enable on', 'wordfence'),
			'Automatically updates Wordfence to the newest version within 24 hours of a new release.' => __('Automatically updates Wordfence to the newest version within 24 hours of a new release.', 'wordfence'),
			'Amount of Live Traffic data to store (number of rows)' => __('Amount of Live Traffic data to store (number of rows)', 'wordfence'),
			'Amount of time a user is locked out' => __('Amount of time a user is locked out', 'wordfence'),
			'An allowlist entry for this URL and parameter already exists.' => __('An allowlist entry for this URL and parameter already exists.', 'wordfence'),
			'An error occurred' => __('An error occurred', 'wordfence'),
			'An error occurred when adding the request to the allowlist.' => __('An error occurred when adding the request to the allowlist.', 'wordfence'),
			'An unknown error occurred during the export. We received an undefined error from your web server.' => __('An unknown error occurred during the export. We received an undefined error from your web server.', 'wordfence'),
			'An unknown error occurred during the import.' => __('An unknown error occurred during the import.', 'wordfence'),
			'An unknown issue type was found:' => __('An unknown issue type was found:', 'wordfence'),
			'An unknown location at IP' => /* translators: immediately followed by an IP address link */ __('An unknown location at IP', 'wordfence'),
			'Any previous value for <code>auto_prepend_file</code> will need to be re-enabled manually if still needed.' => __('Any previous value for <code>auto_prepend_file</code> will need to be re-enabled manually if still needed.', 'wordfence'),
			'Anyone claiming to be Google will not be rate-limited' => __('Anyone claiming to be Google will not be rate-limited', 'wordfence'),
			'and attempted a <span class="wf-error-text">failed login</span> as "<strong>%s</strong>".' => /* translators: preceded by a location/arrival source, placeholder is WordPress username */ __('and attempted a <span class="wf-error-text">failed login</span> as "<strong>%s</strong>".', 'wordfence'),
			'and attempted a <span class="wf-error-text">failed login</span> using an invalid username "<strong>%s</strong>".' => /* translators: preceded by a location/arrival source, placeholder is WordPress username */ __('and attempted a <span class="wf-error-text">failed login</span> using an invalid username "<strong>%s</strong>".', 'wordfence'),
			'and attempted a <span class="wf-error-text">blocked username/password login</span> as "<strong>%s</strong>" because a passkey is required.' => /* translators: preceded by a location/arrival source, placeholder is WordPress username */ __('and attempted a <span class="wf-error-text">blocked username/password login</span> as "<strong>%s</strong>" because a passkey is required.', 'wordfence'),
			'and attempted a <span class="wf-error-text">failed passkey login</span>.' => /* translators: preceded by a location/arrival source */ __('and attempted a <span class="wf-error-text">failed passkey login</span>.', 'wordfence'),
			'and attempted a <span class="wf-error-text">failed passkey login</span> as "<strong>%s</strong>".' => /* translators: preceded by a location/arrival source, placeholder is WordPress username */ __('and attempted a <span class="wf-error-text">failed passkey login</span> as "<strong>%s</strong>".', 'wordfence'),
			'and changed their password.' => /* translators: preceded by a location/arrival source */ __('and changed their password.', 'wordfence'),
			'and logged in successfully as "<strong>%s</strong>".' => /* translators: preceded by a location/arrival source, placeholder is WordPress username */ __('and logged in successfully as "<strong>%s</strong>".', 'wordfence'),
			'and logged in successfully with a passkey as "<strong>%s</strong>".' => /* translators: preceded by a location/arrival source, placeholder is WordPress username */ __('and logged in successfully with a passkey as "<strong>%s</strong>".', 'wordfence'),
			'and logged out successfully.' => /* translators: preceded by a location/arrival source */ __('and logged out successfully.', 'wordfence'),
			'and requested a password reset.' => /* translators: preceded by a location/arrival source */ __('and requested a password reset.', 'wordfence'),
			'and set a cookie that will bypass all country blocking.' => __('and set a cookie that will bypass all country blocking.', 'wordfence'),
			'and tried to access a <span class="wf-error-text">non-existent page</span>' => /* translators: preceded by a location/arrival source */ __('and tried to access a <span class="wf-error-text">non-existent page</span>', 'wordfence'),
			'and visited' => /* translators: preceded by a location/arrival source, followed by a URL */ __('and visited', 'wordfence'),
			'and was' => /* translators: preceded by a location/arrival source, followed by a firewall action */ __('and was', 'wordfence'),
			'and was redirected when visiting' => /* translators: preceded by a location/arrival source, followed by a URL */__('and was redirected when visiting', 'wordfence'),
			'Are you sure you want to allowlist this action?' => __('Are you sure you want to allowlist this action?', 'wordfence'),
			'Are you sure you want to delete?' => __('Are you sure you want to delete?', 'wordfence'),
			'Are you sure you want to disconnect your site from Wordfence Central?' => __('Are you sure you want to disconnect your site from Wordfence Central?', 'wordfence'),
			'Are you sure you want to repair?' => __('Are you sure you want to repair?', 'wordfence'),
			'Are you sure you want to reset this site\'s Wordfence License? This will disable Premium features and return the site to the free version of Wordfence. Your settings will still be retained when reinstalling a license.' => __('Are you sure you want to reset this site\'s Wordfence License? This will disable Premium features and return the site to the free version of Wordfence. Your settings will still be retained when reinstalling a license.', 'wordfence'),
			'Are you sure you want to restore the default settings? This will undo any custom changes you have made to the options on this page.' => __('Are you sure you want to restore the default settings? This will undo any custom changes you have made to the options on this page.', 'wordfence'),
			'Are you sure you want to restore the default %s settings? This will undo any custom changes you have made to the options on this page.' => /* translators: section name. */ __('Are you sure you want to restore the default %s settings? This will undo any custom changes you have made to the options on this page.', 'wordfence'),
			'Are you sure you want to stop blocking the %d selected IPs, ranges, and countries?' => /* translators: number of blocks. */ __('Are you sure you want to stop blocking the %d selected IPs, ranges, and countries?', 'wordfence'),
			'Are you sure you want to stop blocking the selected IP, range, or country?' => __('Are you sure you want to stop blocking the selected IP, range, or country?', 'wordfence'),
			'As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by additional firewall rules and malware signatures as well as the Wordfence real-time IP blocklist. Upgrade to Premium today to improve your protection.' => __('As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by additional firewall rules and malware signatures as well as the Wordfence real-time IP blocklist. Upgrade to Premium today to improve your protection.', 'wordfence'),
			'As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by additional firewall rules and malware signatures. Upgrade to Premium today to improve your protection.' => __('As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by additional firewall rules and malware signatures. Upgrade to Premium today to improve your protection.', 'wordfence'),
			'arrived from' => /* translators: preceded by a user identifier and followed by a referrer URL. */ __('arrived from', 'wordfence'),
			'at' => /* translators: preceded by a firewlal action, followed by a URL */ __('at', 'wordfence'),
			'Audit Log' => __('Audit Log', 'wordfence'),
			'Audit Log Options' => __('Audit Log Options', 'wordfence'),
			'Audit Log logging mode' => __('Audit Log logging mode', 'wordfence'),
			'Authentication Code' => __('Authentication Code', 'wordfence'),
			'Authenticator' => __('Authenticator', 'wordfence'),
			'Author' => __('Author', 'wordfence'),
			'Auto-renew is disabled' => __('Auto-renew is disabled', 'wordfence'),
			'Background Request Blocked' => __('Background Request Blocked', 'wordfence'),
			'Bad URL' => __('Bad URL', 'wordfence'),
			'Back' => __('Back', 'wordfence'),
			'Back to Scan' => __('Back to Scan', 'wordfence'),
			'Basic Firewall Options' => __('Basic Firewall Options', 'wordfence'),
			'Basic Scan Type Options' => __('Basic Scan Type Options', 'wordfence'),
			'Basic WordPress Protection' => __('Basic WordPress Protection', 'wordfence'),
			'Before this file can be deleted, the configuration for the <code>auto_prepend_file</code> setting needs to be removed.' => __('Before this file can be deleted, the configuration for the <code>auto_prepend_file</code> setting needs to be removed.', 'wordfence'),
			'Block' => __('Block', 'wordfence'),
			'Block All' => __('Block All', 'wordfence'),
			'Block access to the rest of the site' => __('Block access to the rest of the site', 'wordfence'),
			'Block Count' => __('Block Count', 'wordfence'),
			'Block Duration' => __('Block Duration', 'wordfence'),
			'Block IP' => __('Block IP', 'wordfence'),
			'Block IPs who send POST requests with blank User-Agent and Referer' => __('Block IPs who send POST requests with blank User-Agent and Referer', 'wordfence'),
			'Block Pattern' => __('Block Pattern', 'wordfence'),
			'Block Reason' => __('Block Reason', 'wordfence'),
			'Block the Selected Countries' => __('Block the Selected Countries', 'wordfence'),
			'Block This Network' => __('Block This Network', 'wordfence'),
			'Block countries even if they are logged in' => __('Block countries even if they are logged in', 'wordfence'),
			'Block this IP Address' => __('Block this IP Address', 'wordfence'),
			'Block Type' => __('Block Type', 'wordfence'),
			'Block Visitors Matching this Pattern' => __('Block Visitors Matching this Pattern', 'wordfence'),
			'block it' => __('block it', 'wordfence'),
			'Blocked' => __('Blocked', 'wordfence'),
			'Blocked (Brute Force)' => __('Blocked (Brute Force)', 'wordfence'),
			'Blocked By Firewall' => __('Blocked By Firewall', 'wordfence'),
			'Blocked WAF' => __('Blocked WAF', 'wordfence'),
			'Blocked by Wordfence' => __('Blocked by Wordfence', 'wordfence'),
			'Blocked by Wordfence plugin settings' => __('Blocked by Wordfence plugin settings', 'wordfence'),
			'Blocked by the Wordfence Application Firewall and plugin settings' => __('Blocked by the Wordfence Application Firewall and plugin settings', 'wordfence'),
			'Blocked by the Wordfence Security Network' => __('Blocked by the Wordfence Security Network', 'wordfence'),
			'Blocked by the Wordfence Web Application Firewall' => __('Blocked by the Wordfence Web Application Firewall', 'wordfence'),
			'Blocking' => __('Blocking', 'wordfence'),
			'Blocking Builder' => __('Blocking Builder', 'wordfence'),
			'Blocking is disabled when the option "Enable Rate Limiting and Advanced Blocking" is off.' => __('Blocking is disabled when the option "Enable Rate Limiting and Advanced Blocking" is off.', 'wordfence'),
			'Blocking Options' => __('Blocking Options', 'wordfence'),
			'Blocklist Status' => __('Blocklist Status', 'wordfence'),
			'Blocklist Check' => __('Blocklist Check', 'wordfence'),
			'Blocks requests from known malicious IPs' => __('Blocks requests from known malicious IPs', 'wordfence'),
			'Blog Highlights' => __('Blog Highlights', 'wordfence'),
			'Bot' => __('Bot', 'wordfence'),
			'Browser User Agent' => __('Browser User Agent', 'wordfence'),
			'Browser user-agent to ignore' => __('Browser user-agent to ignore', 'wordfence'),
			'Brute Force Protection' => __('Brute Force Protection', 'wordfence'),
			'Brute Force Protection Status' => __('Brute Force Protection Status', 'wordfence'),
			'By default, Wordfence will scan your site daily. Start your first scan now to see if your site has any security issues that need to be addressed. From here you can run manual scans any time you like.' => __('By default, Wordfence will scan your site daily. Start your first scan now to see if your site has any security issues that need to be addressed. From here you can run manual scans any time you like.', 'wordfence'),
			'Bypass Cookie' => __('Bypass Cookie', 'wordfence'),
			'Bypass Redirect' => __('Bypass Redirect', 'wordfence'),
			'Bypass the LiteSpeed "noabort" check' => __('Bypass the LiteSpeed "noabort" check', 'wordfence'),
			'Cancel' => __('Cancel', 'wordfence'),
			'Cancel Changes' => __('Cancel Changes', 'wordfence'),
			'Cancel Scan' => __('Cancel Scan', 'wordfence'),
			'Care License Installed' => __('Care License Installed', 'wordfence'),
			'Category' => __('Category', 'wordfence'),
			'Cellphone Sign-In Recovery Codes' => __('Cellphone Sign-In Recovery Codes', 'wordfence'),
			'Cellphone Sign-in activated for user.' => __('Cellphone Sign-in activated for user.', 'wordfence'),
			'Cellphone Sign-in Enabled' => __('Cellphone Sign-in Enabled', 'wordfence'),
			'Change Filter' => __('Change Filter', 'wordfence'),
			'Changelog' => __('Changelog', 'wordfence'),
			'Check for a server outage.' => __('Check for a server outage.', 'wordfence'),
			'Check if this website IP is generating spam' => __('Check if this website IP is generating spam', 'wordfence'),
			'Check if this website is being "Spamvertised"' => __('Check if this website is being "Spamvertised"', 'wordfence'),
			'Check if this website is on a domain blocklist' => __('Check if this website is on a domain blocklist', 'wordfence'),
			'Check password strength on profile update' => __('Check password strength on profile update', 'wordfence'),
			'Check spam & spamvertising blocklists' => __('Check spam & spamvertising blocklists', 'wordfence'),
			'Check the strength of passwords' => __('Check the strength of passwords', 'wordfence'),
			'Clear All Connection Data' => __('Clear All Connection Data', 'wordfence'),
			'Clear all Wordfence Central connection data' => __('Clear all Wordfence Central connection data', 'wordfence'),
			'Click here for our help article' => __('Click here for our help article', 'wordfence'),
			'Click here for steps you can try.' => __('Click here for steps you can try.', 'wordfence'),
			'Click here to download a backup copy of this file now' => __('Click here to download a backup copy of this file now', 'wordfence'),
			'Click here to download a backup copy of your .htaccess file now' => __('Click here to download a backup copy of your .htaccess file now', 'wordfence'),
			'Clear' => __('Clear', 'wordfence'),
			'Clear Filter' => __('Clear Filter', 'wordfence'),
			'Clear Local Connection Data' => __('Clear Local Connection Data', 'wordfence'),
			'Click to fix .htaccess' => __('Click to fix .htaccess', 'wordfence'),
			'Click here to learn more' => __('Click here to learn more', 'wordfence'),
			'Click here to manage your Wordfence licenses' => __('Click here to manage your Wordfence licenses', 'wordfence'),
			'Click here to update now' => __('Click here to update now', 'wordfence'),
			'Click inside window to resume' => __('Click inside window to resume', 'wordfence'),
			'Close' => __('Close', 'wordfence'),
			'Confirm 2FA Switch' => __('Confirm 2FA Switch', 'wordfence'),
			'Confirm Disconnect' => __('Confirm Disconnect', 'wordfence'),
			'Confirm Reset' => __('Confirm Reset', 'wordfence'),
			'Confirm Restore Defaults' => __('Confirm Restore Defaults', 'wordfence'),
			'Congratulations! Wordfence Care is now active on your website. Please note that some Care features are not enabled by default.' => __('Congratulations! Wordfence Care is now active on your website. Please note that some Care features are not enabled by default.', 'wordfence'),
			'Congratulations! Wordfence Free is now active on your website.' => __('Congratulations! Wordfence Free is now active on your website.', 'wordfence'),
			'Congratulations! Wordfence Premium is now active on your website. Please note that some Premium features are not enabled by default.' => __('Congratulations! Wordfence Premium is now active on your website. Please note that some Premium features are not enabled by default.', 'wordfence'),
			'Congratulations! Wordfence Response is now active on your website. Please note that some Response features are not enabled by default.' => __('Congratulations! Wordfence Response is now active on your website. Please note that some Response features are not enabled by default.', 'wordfence'),
			'Connect This Site' => __('Connect This Site', 'wordfence'),
			'Connected by %1$s on %2$s' => /* translators: 1. Email address. 2. Localized date. */ __('Connected by %1$s on %2$s', 'wordfence'),
			'Connection' => __('Connection', 'wordfence'),
			'Connection not finished' => __('Connection not finished', 'wordfence'),
			'Congratulations!' => __('Congratulations!', 'wordfence'),
			'Continue' => __('Continue', 'wordfence'),
			'Count failures over what time period' => __('Count failures over what time period', 'wordfence'),
			'contains' => __('contains', 'wordfence'),
			'Content Safety' => __('Content Safety', 'wordfence'),
			'Countries' => __('Countries', 'wordfence'),
			'Countries to Block' => __('Countries to Block', 'wordfence'),
			'Country' => __('Country', 'wordfence'),
			'Country Blocking' => __('Country Blocking', 'wordfence'),
			'Crawlers' => __('Crawlers', 'wordfence'),
			'Create a Blocking Rule' => __('Create a Blocking Rule', 'wordfence'),
			'Critical' => __('Critical', 'wordfence'),
			'Custom' => __('Custom', 'wordfence'),
			'Custom Scan' => __('Custom Scan', 'wordfence'),
			'Custom Pattern' => __('Custom Pattern', 'wordfence'),
			'Current blocks' => __('Current blocks', 'wordfence'),
			'Current blocks for %s' => /* translators: site url */ __('Current blocks for %s', 'wordfence'),
			'Current Plugin Version' => __('Current Plugin Version', 'wordfence'),
			'Current Theme Version' => __('Current Theme Version', 'wordfence'),
			'Current WordPress Version' => __('Current WordPress Version', 'wordfence'),
			'Currently in Learning Mode' => __('Currently in Learning Mode', 'wordfence'),
			'Created' => __('Created', 'wordfence'),
			'Date' => __('Date', 'wordfence'),
			'Date Range' => __('Date Range', 'wordfence'),
			'day' => __('day', 'wordfence'),
			'days' => __('days', 'wordfence'),
			'Debug this Request' => __('Debug this Request', 'wordfence'),
			'Dashboard Notification Options' => __('Dashboard Notification Options', 'wordfence'),
			'Dashboard notifications will also be displayed for Security Alerts, Promotions, Blog Highlights, and Product Updates. These notifications can be disabled by upgrading to a premium license.' => __('Dashboard notifications will also be displayed for Security Alerts, Promotions, Blog Highlights, and Product Updates. These notifications can be disabled by upgrading to a premium license.', 'wordfence'),
			'Delete' => __('Delete', 'wordfence'),
			'Delay IP and Country blocking until after WordPress and plugins have loaded (only process firewall rules early)' => __('Delay IP and Country blocking until after WordPress and plugins have loaded (only process firewall rules early)', 'wordfence'),
			'Delete All Deletable Files' => __('Delete All Deletable Files', 'wordfence'),
			'Delete File' => __('Delete File', 'wordfence'),
			'Delete Files' => __('Delete Files', 'wordfence'),
			'Delete Option' => __('Delete Option', 'wordfence'),
			'Delete User' => __('Delete User', 'wordfence'),
			'Delete Wordfence tables and data on deactivation' => __('Delete Wordfence tables and data on deactivation', 'wordfence'),
			'Debugging Options' => __('Debugging Options', 'wordfence'),
			'Description' => __('Description', 'wordfence'),
			'Detail' => __('Detail', 'wordfence'),
			'Details' => __('Details', 'wordfence'),
			'Detection of security issues' => __('Detection of security issues', 'wordfence'),
			'Detected IP(s)' => __('Detected IP(s)', 'wordfence'),
			'Diagnostic report has been sent successfully.' => __('Diagnostic report has been sent successfully.', 'wordfence'),
			'Diagnostics' => __('Diagnostics', 'wordfence'),
			'Directory Listing Disabled' => __('Directory Listing Disabled', 'wordfence'),
			'Directory Listing Enabled' => __('Directory Listing Enabled', 'wordfence'),
			'Directory listing has been disabled on your server.' => __('Directory listing has been disabled on your server.', 'wordfence'),
			'Display "All Options" menu item' => __('Display "All Options" menu item', 'wordfence'),
			'Display Audit Log menu option' => __('Display Audit Log menu option', 'wordfence'),
			'Display "Audit Log" menu item' => __('Display "Audit Log" menu item', 'wordfence'),
			'Display "Blocking" menu item' => __('Display "Blocking" menu item', 'wordfence'),
			'Display "Live Traffic" menu item' => __('Display "Live Traffic" menu item', 'wordfence'),
			'Display Blocking menu option' => __('Display Blocking menu option', 'wordfence'),
			'Disable Code Execution for Uploads directory' => __('Disable Code Execution for Uploads directory', 'wordfence'),
			'Disable' => __('Disable', 'wordfence'),
			'Disable reading of php://input' => __('Disable reading of php://input', 'wordfence'),
			'Disable WordPress application passwords' => __('Disable WordPress application passwords', 'wordfence'),
			'Disabled' => __('Disabled', 'wordfence'),
			'Disabled (premium feature)' => __('Disabled (premium feature)', 'wordfence'),
			'Disconnect' => __('Disconnect', 'wordfence'),
			'Disconnect This Site' => __('Disconnect This Site', 'wordfence'),
			'Disconnected by %1$s on %2$s' => /* translators: 1. Email address or placeholder. 2. Localized date. */ __('Disconnected by %1$s on %2$s', 'wordfence'),
			'Disconnected on %1$s' => /* translators: 1. Localized date. */ __('Disconnected on %1$s', 'wordfence'),
			'Disk Space' => __('Disk Space', 'wordfence'),
			'Dismiss' => __('Dismiss', 'wordfence'),
			'Display Live Traffic menu option' => __('Display Live Traffic menu option', 'wordfence'),
			'Do not delete files on your system unless you\'re ABSOLUTELY sure you know what you\'re doing. If you delete the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you\'re unsure, Cancel and work with your hosting provider to clean your system of infected files.' => __('Do not delete files on your system unless you\'re ABSOLUTELY sure you know what you\'re doing. If you delete the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you\'re unsure, Cancel and work with your hosting provider to clean your system of infected files.', 'wordfence'),
			'Do not repair files on your system unless you\'re ABSOLUTELY sure you know what you\'re doing. If you repair the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you\'re unsure, Cancel and work with your hosting provider to clean your system of infected files.' => __('Do not repair files on your system unless you\'re ABSOLUTELY sure you know what you\'re doing. If you repair the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you\'re unsure, Cancel and work with your hosting provider to clean your system of infected files.', 'wordfence'),
			'Don\'t ask again' => __('Don\'t ask again', 'wordfence'),
			'Don\'t let WordPress reveal valid users in login errors' => __('Don\'t let WordPress reveal valid users in login errors', 'wordfence'),
			'Don\'t log signed-in users with publishing access' => __('Don\'t log signed-in users with publishing access', 'wordfence'),
			'Download' => __('Download', 'wordfence'),
			'Download %s' => /* translators: file name */ __('Download %s', 'wordfence'),
			'Download Backup File' => __('Download Backup File', 'wordfence'),
			'Download File' => __('Download File', 'wordfence'),
			'Duration' => __('Duration', 'wordfence'),
			'e.g., *.amazonaws.com or *.linode.com' => __('e.g., *.amazonaws.com or *.linode.com', 'wordfence'),
			'e.g., *badRobot*, *MSIE*, or *browserSuffix' => __('e.g., *badRobot*, *MSIE*, or *browserSuffix', 'wordfence'),
			'e.g., *badwebsite.example.com*' => __('e.g., *badwebsite.example.com*', 'wordfence'),
			'e.g., 192.168.200.200 - 192.168.200.220 or 192.168.200.0/24' => __('e.g., 192.168.200.200 - 192.168.200.220 or 192.168.200.0/24', 'wordfence'),
			'Each feature contains a status that reminds you what\'s enabled, disabled or needs attention. The Notifications section will highlight actions you need to take.' => __('Each feature contains a status that reminds you what\'s enabled, disabled or needs attention. The Notifications section will highlight actions you need to take.', 'wordfence'),
			'Each line of 16 letters and numbers is a single recovery code, with optional spaces for readability. When typing your password, enter "wf" followed by the entire code like "mypassword wf1234 5678 90AB CDEF". If your site shows a separate prompt for entering a code after entering only your username and password, enter only the code like "1234 5678 90AB CDEF". Your recovery codes are:' => __('Each line of 16 letters and numbers is a single recovery code, with optional spaces for readability. When typing your password, enter "wf" followed by the entire code like "mypassword wf1234 5678 90AB CDEF". If your site shows a separate prompt for entering a code after entering only your username and password, enter only the code like "1234 5678 90AB CDEF". Your recovery codes are:', 'wordfence'),
			'each Wordfence installation should have a unique key' => __('each Wordfence installation should have a unique key', 'wordfence'),
			'Easily Monitor Your Wordfence Protection' => __('Easily Monitor Your Wordfence Protection', 'wordfence'),
			'Edit' => __('Edit', 'wordfence'),
			'Edit Blocking Rule' => __('Edit Blocking Rule', 'wordfence'),
			'Edit trusted proxies' => __('Edit trusted proxies', 'wordfence'),
			'Email' => __('Email', 'wordfence'),
			'Email Alert Preferences' => __('Email Alert Preferences', 'wordfence'),
			'Email address' => __('Email address', 'wordfence'),
			'Email activity log' => __('Email activity log', 'wordfence'),
			'Email log' => __('Email log', 'wordfence'),
			'Email Diagnostic Report' => __('Email Diagnostic Report', 'wordfence'),
			'Email Wordfence Activity Log' => __('Email Wordfence Activity Log', 'wordfence'),
			'Email me if the Wordfence Web Application Firewall is turned off' => __('Email me if the Wordfence Web Application Firewall is turned off', 'wordfence'),
			'Email me if Wordfence is deactivated' => __('Email me if Wordfence is deactivated', 'wordfence'),
			'Email me when Wordfence is automatically updated' => __('Email me when Wordfence is automatically updated', 'wordfence'),
			'Enable activity report widget on the WordPress dashboard' => __('Enable activity report widget on the WordPress dashboard', 'wordfence'),
			'Enable Automatic Scans' => __('Enable Automatic Scans', 'wordfence'),
			'Enable brute force protection' => __('Enable brute force protection', 'wordfence'),
			'Enable country blocking by upgrading to Premium.' => __('Enable country blocking by upgrading to Premium.', 'wordfence'),
			'Enable debugging mode (increases database load)' => __('Enable debugging mode (increases database load)', 'wordfence'),
			'Enable' => __('Enable', 'wordfence'),
			'Enable email summary' => __('Enable email summary', 'wordfence'),
			'Enable Firewall' => __('Enable Firewall', 'wordfence'),
			'Enable Premium Scan Signatures.' => __('Enable Premium Scan Signatures.', 'wordfence'),
			'Enable Rate Limiting and Advanced Blocking' => __('Enable Rate Limiting and Advanced Blocking', 'wordfence'),
			'Enable Wordfence translations' => __('Enable Wordfence translations', 'wordfence'),
			'Enabled' => __('Enabled', 'wordfence'),
			'Enabled and Protecting' => __('Enabled and Protecting', 'wordfence'),
			'Enabled until...' => __('Enabled until...', 'wordfence'),
			'Enforce strong passwords' => __('Enforce strong passwords', 'wordfence'),
			'Enter a duration (default is forever)' => __('Enter a duration (default is forever)', 'wordfence'),
			'Enter a full URL (e.g., http://example.com/blocked/)' => __('Enter a full URL (e.g., http://example.com/blocked/)', 'wordfence'),
			'Enter a reason' => __('Enter a reason', 'wordfence'),
			'Enter a valid IP or domain' => __('Enter a valid IP or domain', 'wordfence'),
			'Enter an IP address' => __('Enter an IP address', 'wordfence'),
			'Enter Premium Key' => __('Enter Premium Key', 'wordfence'),
			'Enter the email address you would like to send the Wordfence activity log to. Note that the activity log may contain thousands of lines of data. This log is usually only sent to a member of the Wordfence support team. It also contains your PHP configuration from the phpinfo() function for diagnostic data.' => __('Enter the email address you would like to send the Wordfence activity log to. Note that the activity log may contain thousands of lines of data. This log is usually only sent to a member of the Wordfence support team. It also contains your PHP configuration from the phpinfo() function for diagnostic data.', 'wordfence'),
			'Enter your premium license key to enable real-time protection for your website.' => __('Enter your premium license key to enable real-time protection for your website.', 'wordfence'),
			'Error' => __('Error', 'wordfence'),
			'Error during Export' => __('Error during Export', 'wordfence'),
			'Error during Import' => __('Error during Import', 'wordfence'),
			'Error Enabling All Options Page' => __('Error Enabling All Options Page', 'wordfence'),
			'Error Installing License' => __('Error Installing License', 'wordfence'),
			'Error removing option: %s' => /* translators: error message */ __('Error removing option: %s', 'wordfence'),
			'Error Restoring Defaults' => __('Error Restoring Defaults', 'wordfence'),
			'Error Saving Block' => __('Error Saving Block', 'wordfence'),
			'Error Saving Option' => __('Error Saving Option', 'wordfence'),
			'Error Saving Options' => __('Error Saving Options', 'wordfence'),
			'Exclude files from scan that match these wildcard patterns (one per line)' => __('Exclude files from scan that match these wildcard patterns (one per line)', 'wordfence'),
			'Existing WAF Installation Detected' => __('Existing WAF Installation Detected', 'wordfence'),
			'Expand All' => __('Expand All', 'wordfence'),
			'Expand All Results' => __('Expand All Results', 'wordfence'),
			'Expiration' => __('Expiration', 'wordfence'),
			'Extended Protection' => __('Extended Protection', 'wordfence'),
			'Extended Protection Mode of the Wordfence Web Application Firewall uses the PHP ini setting called <code>auto_prepend_file</code> in order to ensure it runs before any potentially vulnerable code runs. This PHP setting currently refers to the Wordfence file at:' => __('Extended Protection Mode of the Wordfence Web Application Firewall uses the PHP ini setting called <code>auto_prepend_file</code> in order to ensure it runs before any potentially vulnerable code runs. This PHP setting currently refers to the Wordfence file at:', 'wordfence'),
			'Every Other Day' => __('Every Other Day', 'wordfence'),
			'Export' => __('Export', 'wordfence'),
			'Export All IPs' => __('Export All IPs', 'wordfence'),
			'Export Options' => __('Export Options', 'wordfence'),
			'Export Successful' => __('Export Successful', 'wordfence'),
			'Export this site\'s Wordfence options for import on another site' => __('Export this site\'s Wordfence options for import on another site', 'wordfence'),
			'Export Wordfence Options' => __('Export Wordfence Options', 'wordfence'),
			'Failed' => __('Failed', 'wordfence'),
			'Blocked Login' => __('Blocked Login', 'wordfence'),
			'Blocked Login: Passkey Required' => __('Blocked Login: Passkey Required', 'wordfence'),
			'Failed Login' => __('Failed Login', 'wordfence'),
			'Failed Login: Invalid Username' => __('Failed Login: Invalid Username', 'wordfence'),
			'Failed Login: Passkey' => __('Failed Login: Passkey', 'wordfence'),
			'Failed Login: Valid Username' => __('Failed Login: Valid Username', 'wordfence'),
			'File Changes' => __('File Changes', 'wordfence'),
			'File Name' => __('File Name', 'wordfence'),
			'File hidden successfully' => __('File hidden successfully', 'wordfence'),
			'File restored OK' => __('File restored OK', 'wordfence'),
			'File Type' => __('File Type', 'wordfence'),
			'Filename' => __('Filename', 'wordfence'),
			'Filesystem Credentials Required' => __('Filesystem Credentials Required', 'wordfence'),
			'Filesystem Permission Error' => __('Filesystem Permission Error', 'wordfence'),
			'Filter' => __('Filter', 'wordfence'),
			'Filter By' => __('Filter By', 'wordfence'),
			'Filter Value' => __('Filter Value', 'wordfence'),
			'Filter by Type, Detail, or Reason' => __('Filter by Type, Detail, or Reason', 'wordfence'),
			'Filter...' => __('Filter...', 'wordfence'),
			'Filter Traffic' => __('Filter Traffic', 'wordfence'),
			'Firewall' => __('Firewall', 'wordfence'),
			'Firewall Status' => __('Firewall Status', 'wordfence'),
			'Firewall optimization is not currently supported on NGINX Unit' => __('Firewall optimization is not currently supported on NGINX Unit', 'wordfence'),
			'Firewall Options' => __('Firewall Options', 'wordfence'),
			'Firewall Rules' => __('Firewall Rules', 'wordfence'),
			'Firewall Rules Status' => __('Firewall Rules Status', 'wordfence'),
			'Firewall Response' => __('Firewall Response', 'wordfence'),
			'Fix .htaccess' => __('Fix .htaccess', 'wordfence'),
			'For admins only' => __('For admins only', 'wordfence'),
			'For all users with "publish posts" capability' => __('For all users with "publish posts" capability', 'wordfence'),
			'For entry-level hosting plans. Provides limited detection capability with very low resource utilization.' => __('For entry-level hosting plans. Provides limited detection capability with very low resource utilization.', 'wordfence'),
			'For most sites, we recommend allowing access from the United States, where Google and other benign crawlers are generally located. Many well-known crawlers also have locations in Europe, so be careful when blocking other countries, especially if you have not seen significant attacks from them.' => __('For most sites, we recommend allowing access from the United States, where Google and other benign crawlers are generally located. Many well-known crawlers also have locations in Europe, so be careful when blocking other countries, especially if you have not seen significant attacks from them.', 'wordfence'),
			'For site owners who think they may have been hacked. More thorough but may produce false positives.' => __('For site owners who think they may have been hacked. More thorough but may produce false positives.', 'wordfence'),
			'Force admins and publishers to use strong passwords (recommended)' => __('Force admins and publishers to use strong passwords (recommended)', 'wordfence'),
			'Force all members to use strong passwords' => __('Force all members to use strong passwords', 'wordfence'),
			'Found' => __('Found', 'wordfence'),
			'Free License Installed' => __('Free License Installed', 'wordfence'),
			'Friday' => __('Friday', 'wordfence'),
			'Front-end Website' => __('Front-end Website', 'wordfence'),
			'From' => __('From', 'wordfence'),
			'Full Name' => __('Full Name', 'wordfence'),
			'Full Path Disclosure' => __('Full Path Disclosure', 'wordfence'),
			'General' => __('General', 'wordfence'),
			'General Options' => __('General Options', 'wordfence'),
			'General Wordfence Options' => __('General Wordfence Options', 'wordfence'),
			'Get a new license' => __('Get a new license', 'wordfence'),
			'Get Help' => __('Get Help', 'wordfence'),
			'Get Your Wordfence License' => __('Get Your Wordfence License', 'wordfence'),
			'Global Wordfence Options' => __('Global Wordfence Options', 'wordfence'),
			'Go To Dashboard' => __('Go To Dashboard', 'wordfence'),
			'Go To Option' => __('Go To Option', 'wordfence'),
			'Go to Login Security' => __('Go to Login Security', 'wordfence'),
			'Google Bot' => __('Google Bot', 'wordfence'),
			'Google Crawlers' => __('Google Crawlers', 'wordfence'),
			'Got it' => __('Got it', 'wordfence'),
			'Greetings! The default configuration for Wordfence Live Traffic has changed. The new default saves only logins and blocked requests, while this site is currently recording all traffic. Would you like to change to the new default?' => __('Greetings! The default configuration for Wordfence Live Traffic has changed. The new default saves only logins and blocked requests, while this site is currently recording all traffic. Would you like to change to the new default?', 'wordfence'),
			'Group By' => __('Group By', 'wordfence'),
			'Header' => __('Header', 'wordfence'),
			'Here\'s where you\'ll see all the blocking rules you\'ve created. You can also manage them as well as remove or modify them from this table.' => __('Here\'s where you\'ll see all the blocking rules you\'ve created. You can also manage them as well as remove or modify them from this table.', 'wordfence'),
			'Hide File' => __('Hide File', 'wordfence'),
			'Hide log' => __('Hide log', 'wordfence'),
			'Hide WordPress version' => __('Hide WordPress version', 'wordfence'),
			'High' => __('High', 'wordfence'),
			'High Sensitivity' => __('High Sensitivity', 'wordfence'),
			'Hit enter to add' => __('Hit enter to add', 'wordfence'),
			'Hit enter to add a username' => __('Hit enter to add a username', 'wordfence'),
			'host setting' => __('host setting', 'wordfence'),
			'Hostname' => __('Hostname', 'wordfence'),
			'hour' => __('hour', 'wordfence'),
			'hours' => __('hours', 'wordfence'),
			'How do I get to 100%?' => __('How do I get to 100%?', 'wordfence'),
			'How does Wordfence determine this?' => __('How does Wordfence determine this?', 'wordfence'),
			'How does Wordfence get IPs' => __('How does Wordfence get IPs', 'wordfence'),
			'How long is an IP address blocked when it breaks a rule' => __('How long is an IP address blocked when it breaks a rule', 'wordfence'),
			'How much memory should Wordfence request when scanning' => __('How much memory should Wordfence request when scanning', 'wordfence'),
			'How should we treat Google\'s crawlers' => __('How should we treat Google\'s crawlers', 'wordfence'),
			'How to block a network' => __('How to block a network', 'wordfence'),
			'HTML tags will be stripped prior to output and line breaks will be converted into the appropriate tags.' => __('HTML tags will be stripped prior to output and line breaks will be converted into the appropriate tags.', 'wordfence'),
			'HTTP Response Code' => __('HTTP Response Code', 'wordfence'),
			'Human' => __('Human', 'wordfence'),
			'Humans' => __('Humans', 'wordfence'),
			'Human/Bot' => __('Human/Bot', 'wordfence'),
			'If anyone\'s requests exceed' => __('If anyone\'s requests exceed', 'wordfence'),
			'If a crawler\'s page views exceed' => __('If a crawler\'s page views exceed', 'wordfence'),
			'If a crawler\'s pages not found (404s) exceed' => __('If a crawler\'s pages not found (404s) exceed', 'wordfence'),
			'If a human\'s page views exceed' => __('If a human\'s page views exceed', 'wordfence'),
			'If a human\'s pages not found (404s) exceed' => __('If a human\'s pages not found (404s) exceed', 'wordfence'),
			'If autorenew is enabled for the current license, the license will renew at the next expiration date. If you would like to turn renewal off or assign the license to another site, log into wordfence.com to change it.' => __('If autorenew is enabled for the current license, the license will renew at the next expiration date. If you would like to turn renewal off or assign the license to another site, log into wordfence.com to change it.', 'wordfence'),
			'If this is a false positive, you can exclude this parameter from being filtered by the firewall' => __('If this is a false positive, you can exclude this parameter from being filtered by the firewall', 'wordfence'),
			'If this is your first attempt, please try again.' => __('If this is your first attempt, please try again.', 'wordfence'),
			'If this option is disabled, Wordfence can look up countries for visitor IP addresses using a local database, but cannot look up regions or cities' => __('If this option is disabled, Wordfence can look up countries for visitor IP addresses using a local database, but cannot look up regions or cities', 'wordfence'),
			'If user hits the relative URL' => __('If user hits the relative URL', 'wordfence'),
			'If user who is allowed to access the site views the relative URL' => __('If user who is allowed to access the site views the relative URL', 'wordfence'),
			'If you are using a web server not listed in the dropdown or if file permissions prevent the installer from completing successfully, you will need to perform the change manually. Click Continue below to create the required file and view manual installation instructions.' => __('If you are using a web server not listed in the dropdown or if file permissions prevent the installer from completing successfully, you will need to perform the change manually. Click Continue below to create the required file and view manual installation instructions.', 'wordfence'),
			'If you cannot complete the setup process, <a href="%s" target="_blank" rel="noopener noreferrer">click here for help<span class="screen-reader-text"> (opens in new tab)</span></a>' => /* translators: support URL */ __('If you cannot complete the setup process, <a href="%s" target="_blank" rel="noopener noreferrer">click here for help<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'),
			'If you cannot complete the uninstall process, <a href="%s" target="_blank" rel="noopener noreferrer">click here for help<span class="screen-reader-text"> (opens in new tab)</span></a>' => /* translators: support URL */ __('If you cannot complete the uninstall process, <a href="%s" target="_blank" rel="noopener noreferrer">click here for help<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'),
			'If you delete the wrong file, it could cause your WordPress website to stop functioning, and you will probably have to restore from a backup.' => __('If you delete the wrong file, it could cause your WordPress website to stop functioning, and you will probably have to restore from a backup.', 'wordfence'),
			'If you don\'t have one, you can purchase one now.' => __('If you don\'t have one, you can purchase one now.', 'wordfence'),
			'If you don\'t recognize this file, please <a href="https://wordpress.org/support/plugin/wordfence" target="_blank" rel="noopener noreferrer">contact us on the WordPress support forums<span class="screen-reader-text"> (opens in new tab)</span></a> before proceeding.' => __('If you don\'t recognize this file, please <a href="https://wordpress.org/support/plugin/wordfence" target="_blank" rel="noopener noreferrer">contact us on the WordPress support forums<span class="screen-reader-text"> (opens in new tab)</span></a> before proceeding.', 'wordfence'),
			'If you have automatic updates enabled (see above), you\'ll get an email when an update occurs.' => __('If you have automatic updates enabled (see above), you\'ll get an email when an update occurs.', 'wordfence'),
			'If you have separate WordPress installations with Wordfence installed within a subdirectory of this site, it is recommended that you perform the Firewall installation procedure on those sites before this one.' => __('If you have separate WordPress installations with Wordfence installed within a subdirectory of this site, it is recommended that you perform the Firewall installation procedure on those sites before this one.', 'wordfence'),
			'If you know your web server\'s configuration, please select it from the list below.' => __('If you know your web server\'s configuration, please select it from the list below.', 'wordfence'),
			'If you need to continue using the legacy 2FA mode, you will need to downgrade to the 8.1.4 version of Wordfence temporarily. This feature will be discontinued around July 1, 2026, and legacy 2FA codes will no longer be required at that time, even when using an old plugin version.' => __('If you need to continue using the legacy 2FA mode, you will need to downgrade to the 8.1.4 version of Wordfence temporarily. This feature will be discontinued around July 1, 2026, and legacy 2FA codes will no longer be required at that time, even when using an old plugin version.', 'wordfence'),
			'If you\'re moving to a new host or a new installation location, you may need to temporarily disable extended protection to avoid any file not found errors. Use this action to remove the configuration changes that enable extended protection mode or you can <a href="%s" target="_blank" rel="noopener noreferrer">remove them manually<span class="screen-reader-text"> (opens in new tab)</span></a>.' => /* translators: configuration URL */ __('If you\'re moving to a new host or a new installation location, you may need to temporarily disable extended protection to avoid any file not found errors. Use this action to remove the configuration changes that enable extended protection mode or you can <a href="%s" target="_blank" rel="noopener noreferrer">remove them manually<span class="screen-reader-text"> (opens in new tab)</span></a>.', 'wordfence'),
			'If you use country blocking to block countries from accessing the entire site, it is important to review the allowed services setting to ensure that search engines and other desired services may continue to see the site regardless of a crawler\'s location. Additionally, ad services like Google Ads may penalize listings when a country is blocked from the entire site.' => __('If you use country blocking to block countries from accessing the entire site, it is important to review the allowed services setting to ensure that search engines and other desired services may continue to see the site regardless of a crawler\'s location. Additionally, ad services like Google Ads may penalize listings when a country is blocked from the entire site.', 'wordfence'),
			'If you use external services that may send POST requests without these headers, do not use this option, as they will be blocked.' => __('If you use external services that may send POST requests without these headers, do not use this option, as they will be blocked.', 'wordfence'),
			'Include' => __('Include', 'wordfence'),
			'Ignored IP addresses for Wordfence Web Application Firewall alerting' => __('Ignored IP addresses for Wordfence Web Application Firewall alerting', 'wordfence'),
			'Ignored IPs must be separated by commas or placed on separate lines. These addresses will be ignored from any alerts about increased attacks and can be used to ignore things like standalone website security scanners.' => __('Ignored IPs must be separated by commas or placed on separate lines. These addresses will be ignored from any alerts about increased attacks and can be used to ignore things like standalone website security scanners.', 'wordfence'),
			'Immediately block the IP of users who try to sign in as these usernames' => __('Immediately block the IP of users who try to sign in as these usernames', 'wordfence'),
			'Immediately block IPs that access these URLs' => __('Immediately block IPs that access these URLs', 'wordfence'),
			'Immediately lock out invalid usernames' => __('Immediately lock out invalid usernames', 'wordfence'),
			'Install' => __('Install', 'wordfence'),
			'Install an existing license' => __('Install an existing license', 'wordfence'),
			'Install License' => __('Install License', 'wordfence'),
			'Install your license to finish activating Wordfence.' => __('Install your license to finish activating Wordfence.', 'wordfence'),
			'License Key' => __('License Key', 'wordfence'),
			'Limit the number of issues sent in the scan results email' => __('Limit the number of issues sent in the scan results email', 'wordfence'),
			'Limited Scan' => __('Limited Scan', 'wordfence'),
			'Ignore' => __('Ignore', 'wordfence'),
			'Import Options' => __('Import Options', 'wordfence'),
			'Import Successful' => __('Import Successful', 'wordfence'),
			'Import Wordfence Options' => __('Import Wordfence Options', 'wordfence'),
			'Import Wordfence options from another site using a token' => __('Import Wordfence options from another site using a token', 'wordfence'),
			'Import/Export Options' => __('Import/Export Options', 'wordfence'),
			'Importing and exporting of options has moved to the Tools page' => __('Importing and exporting of options has moved to the Tools page', 'wordfence'),
			'Ignore All for User' => __('Ignore All for User', 'wordfence'),
			'Ignore Only this Password' => __('Ignore Only this Password', 'wordfence'),
			'Ignore Only this Title' => __('Ignore Only this Title', 'wordfence'),
			'Ignore Option' => __('Ignore Option', 'wordfence'),
			'Ignore this URL' => __('Ignore this URL', 'wordfence'),
			'Ignore Value' => __('Ignore Value', 'wordfence'),
			'Ignore Until File Changes' => __('Ignore Until File Changes', 'wordfence'),
			'Ignore Until Version Changes' => __('Ignore Until Version Changes', 'wordfence'),
			'Ignore Update' => __('Ignore Update', 'wordfence'),
			'Ignore URL' => __('Ignore URL', 'wordfence'),
			'Ignored' => __('Ignored', 'wordfence'),
			'Ignored Results' => __('Ignored Results', 'wordfence'),
			'In addition to the above list, the IPs (or CIDR ranges) in the selected preset will be ignored when determining the requesting IP via the X-Forwarded-For HTTP header.' => __('In addition to the above list, the IPs (or CIDR ranges) in the selected preset will be ignored when determining the requesting IP via the X-Forwarded-For HTTP header.', 'wordfence'),
			'In this mode, the Wordfence Web Application Firewall is actively blocking requests matching known attack patterns and is actively protecting your site from attackers.' => __('In this mode, the Wordfence Web Application Firewall is actively blocking requests matching known attack patterns and is actively protecting your site from attackers.', 'wordfence'),
			'In this mode, the Wordfence Web Application Firewall is functionally turned off and does not run any of its rules or analyze the request in any way.' => __('In this mode, the Wordfence Web Application Firewall is functionally turned off and does not run any of its rules or analyze the request in any way.', 'wordfence'),
			'Individual Allowlisting' => __('Individual Allowlisting', 'wordfence'),
			'Insecure Password' => __('Insecure Password', 'wordfence'),
			'Installation Failed' => __('Installation Failed', 'wordfence'),
			'Installation Successful' => __('Installation Successful', 'wordfence'),
			'Introducing the New Wordfence 2FA' => __('Introducing the New Wordfence 2FA', 'wordfence'),
			'IP' => __('IP', 'wordfence'),
			'IP Address' => __('IP Address', 'wordfence'),
			'IP Address Range' => __('IP Address Range', 'wordfence'),
			'IP Address to Block' => __('IP Address to Block', 'wordfence'),
			'IP Detection' => __('IP Detection', 'wordfence'),
			'IP Range' => __('IP Range', 'wordfence'),
			'Issue Found' => __('Issue Found', 'wordfence'),
			'It looks like you\'ve tried to connect this site to Wordfence Central, but the installation did not finish.' => __('It looks like you\'ve tried to connect this site to Wordfence Central, but the installation did not finish.', 'wordfence'),
			'just now' => __('just now', 'wordfence'),
			'Key' => __('Key', 'wordfence'),
			'Last Attempt' => __('Last Attempt', 'wordfence'),
			'Last Hit' => __('Last Hit', 'wordfence'),
			'Last Updated' => __('Last Updated', 'wordfence'),
			'Last Updated: %s' => /* translators: Localized date. */ __('Last Updated: %s', 'wordfence'),
			'Learn More' => __('Learn More', 'wordfence'),
			'Learn about Wordfence Care and Wordfence Response' => __('Learn about Wordfence Care and Wordfence Response', 'wordfence'),
			'Learn about Wordfence Response' => __('Learn about Wordfence Response', 'wordfence'),
			'Learn more about Blocking' => __('Learn more about Blocking', 'wordfence'),
			'Learn more about the Firewall' => __('Learn more about the Firewall', 'wordfence'),
			'Learn more about Global Options' => __('Learn more about Global Options', 'wordfence'),
			'Learn more about Live Traffic' => __('Learn more about Live Traffic', 'wordfence'),
			'Learn more about repairing modified files.' => __('Learn more about repairing modified files.', 'wordfence'),
			'Learn More About Wordfence Care' => __('Learn More About Wordfence Care', 'wordfence'),
			'Legacy support for SMS-based two-factor authentication has been phased out, as it is less secure than using a modern authenticator app.' => __('Legacy support for SMS-based two-factor authentication has been phased out, as it is less secure than using a modern authenticator app.', 'wordfence'),
			'Legacy Two-Factor Authentication Users' => __('Legacy Two-Factor Authentication Users', 'wordfence'),
			'Learning Mode' => __('Learning Mode', 'wordfence'),
			'Learning Mode Enabled' => __('Learning Mode Enabled', 'wordfence'),
			'Learning Mode Until' => __('Learning Mode Until', 'wordfence'),
			'left' => /* translators: preceded by a user identifier and followed by a referrer URL. */ __('left', 'wordfence'),
			'less than 1 second' => __('less than 1 second', 'wordfence'),
			'Let Wordfence choose when to scan my site (recommended)' => __('Let Wordfence choose when to scan my site (recommended)', 'wordfence'),
			'Let Wordfence use the most secure method to get visitor IP addresses. Prevents spoofing and works with most sites.' => __('Let Wordfence use the most secure method to get visitor IP addresses. Prevents spoofing and works with most sites.', 'wordfence'),
			'List of directories to exclude from recently modified file list' => __('List of directories to exclude from recently modified file list', 'wordfence'),
			'License already in use' => __('License already in use', 'wordfence'),
			'License is expired' => __('License is expired', 'wordfence'),
			'License renews in %d days' => /* translators: number of days */ __('License renews in %d days', 'wordfence'),
			'License renews today' => __('License renews today', 'wordfence'),
			'License renews tomorrow' => __('License renews tomorrow', 'wordfence'),
			'License Status' => __('License Status', 'wordfence'),
			'List of comma separated IP addresses to ignore' => __('List of comma separated IP addresses to ignore', 'wordfence'),
			'List of comma separated usernames to ignore' => __('List of comma separated usernames to ignore', 'wordfence'),
			'Live Traffic' => __('Live Traffic', 'wordfence'),
			'Live traffic defaults to a summary view of all security-related traffic. Details are viewable by clicking anywhere within the summary record. To switch to the expanded view, click the Expand All Records switch.' => __('Live traffic defaults to a summary view of all security-related traffic. Details are viewable by clicking anywhere within the summary record. To switch to the expanded view, click the Expand All Records switch.', 'wordfence'),
			'Live Traffic Options' => __('Live Traffic Options', 'wordfence'),
			'Live Updates Paused' => __('Live Updates Paused', 'wordfence'),
			'Loading...' => __('Loading...', 'wordfence'),
			'Location' => __('Location', 'wordfence'),
			'Lock out after how many forgot password attempts' => __('Lock out after how many forgot password attempts', 'wordfence'),
			'Lock out after how many login failures' => __('Lock out after how many login failures', 'wordfence'),
			'Locked Out' => __('Locked Out', 'wordfence'),
			'Locked out from logging in' => __('Locked out from logging in', 'wordfence'),
			'Logged In' => __('Logged In', 'wordfence'),
			'Logged In: Passkey' => __('Logged In: Passkey', 'wordfence'),
			'Login and firewall activity will appear below.' => __('Login and firewall activity will appear below.', 'wordfence'),
			'Login Attempts' => __('Login Attempts', 'wordfence'),
			'Login Form' => __('Login Form', 'wordfence'),
			'Login Name' => __('Login Name', 'wordfence'),
			'Logins' => __('Logins', 'wordfence'),
			'Logins and Logouts' => __('Logins and Logouts', 'wordfence'),
			'Look up IP or Domain' => __('Look up IP or Domain', 'wordfence'),
			'Look up visitor IP locations via Wordfence servers' => __('Look up visitor IP locations via Wordfence servers', 'wordfence'),
			'Low' => __('Low', 'wordfence'),
			'Make Permanent' => __('Make Permanent', 'wordfence'),
			'Malware Scan' => __('Malware Scan', 'wordfence'),
			'Malware Signatures' => __('Malware Signatures', 'wordfence'),
			'Malware Signatures Status' => __('Malware Signatures Status', 'wordfence'),
			'Manage' => __('Manage', 'wordfence'),
			'Manage 2FA' => __('Manage 2FA', 'wordfence'),
			'Manage Blocking Rules' => __('Manage Blocking Rules', 'wordfence'),
			'Manage Brute Force Protection' => __('Manage Brute Force Protection', 'wordfence'),
			'Manage Firewall' => __('Manage Firewall', 'wordfence'),
			'Manage Firewall Rules' => __('Manage Firewall Rules', 'wordfence'),
			'Manage global blocking options.' => __('Manage global blocking options.', 'wordfence'),
			'Manage Options' => __('Manage Options', 'wordfence'),
			'Manage Plugins' => __('Manage Plugins', 'wordfence'),
			'Manage Scan' => __('Manage Scan', 'wordfence'),
			'Manage Scan Settings' => __('Manage Scan Settings', 'wordfence'),
			'Manage WAF' => __('Manage WAF', 'wordfence'),
			'Management of legacy two-factor authentication using SMS-based codes is deprecated, and the old method of appending "wf" and a code will not be supported in the future. An improved interface and usage by non-administrators is available by activating the login security module. Users who have legacy 2FA enabled will still be required to enter a code while logging in currently, but legacy 2FA users can no longer be added or removed.' => __('Management of legacy two-factor authentication using SMS-based codes is deprecated, and the old method of appending "wf" and a code will not be supported in the future. An improved interface and usage by non-administrators is available by activating the login security module. Users who have legacy 2FA enabled will still be required to enter a code while logging in currently, but legacy 2FA users can no longer be added or removed.', 'wordfence'),
			'Manual block by administrator' => __('Manual block by administrator', 'wordfence'),
			'Manual Installation Instructions' => __('Manual Installation Instructions', 'wordfence'),
			'Manually Refresh Rules' => __('Manually Refresh Rules', 'wordfence'),
			'Manually schedule scans' => __('Manually schedule scans', 'wordfence'),
			'Mark as Fixed' => __('Mark as Fixed', 'wordfence'),
			'match' => __('match', 'wordfence'),
			'Maximum days to keep Live Traffic data (1-30 days)' => __('Maximum days to keep Live Traffic data (1-30 days)', 'wordfence'),
			'Maximum email alerts to send per hour' => __('Maximum email alerts to send per hour', 'wordfence'),
			'Maximum execution time for each scan stage' => __('Maximum execution time for each scan stage', 'wordfence'),
			'Maximum number of attempts to resume each scan stage' => __('Maximum number of attempts to resume each scan stage', 'wordfence'),
			'Medium' => __('Medium', 'wordfence'),
			'Memory size in megabytes' => __('Memory size in megabytes', 'wordfence'),
			'Mode' => __('Mode', 'wordfence'),
			'Monday' => __('Monday', 'wordfence'),
			'Monitor background requests from an administrator\'s web browser for false positives' => __('Monitor background requests from an administrator\'s web browser for false positives', 'wordfence'),
			'More Information' => __('More Information', 'wordfence'),
			'Monitor disk space' => __('Monitor disk space', 'wordfence'),
			'Monitor Web Application Firewall status' => __('Monitor Web Application Firewall status', 'wordfence'),
			'minute' => __('minute', 'wordfence'),
			'minutes' => __('minutes', 'wordfence'),
			'month' => __('month', 'wordfence'),
			'months' => __('months', 'wordfence'),
			'Multisite Blog Domain' => __('Multisite Blog Domain', 'wordfence'),
			'Multisite Blog ID' => __('Multisite Blog ID', 'wordfence'),
			'Multisite Blog Path' => __('Multisite Blog Path', 'wordfence'),
			'Need help with a security issue?' => __('Need help with a security issue?', 'wordfence'),
			'Never' => __('Never', 'wordfence'),
			'New Login Page Captcha Feature' => __('New Login Page Captcha Feature', 'wordfence'),
			'New Plugin Version' => __('New Plugin Version', 'wordfence'),
			'New Theme Version' => __('New Theme Version', 'wordfence'),
			'New WordPress Version' => __('New WordPress Version', 'wordfence'),
			'Next' => __('Next', 'wordfence'),
			'Next Update Check' => __('Next Update Check', 'wordfence'),
			'Next Update Check: %s' => /* translators: Localized date. */ __('Next Update Check: %s', 'wordfence'),
			'Nice work! The firewall is now optimized.' => __('Nice work! The firewall is now optimized.', 'wordfence'),
			'No' => __('No', 'wordfence'),
			'No activity to report yet. Please complete your first scan.' => __('No activity to report yet. Please complete your first scan.', 'wordfence'),
			'No blocks are currently active.' => __('No blocks are currently active.', 'wordfence'),
			'No blocks have been recorded.' => __('No blocks have been recorded.', 'wordfence'),
			'No blocks match the current filter.' => __('No blocks match the current filter.', 'wordfence'),
			'No Data Available During Learning Mode' => __('No Data Available During Learning Mode', 'wordfence'),
			'No failed logins have been recorded.' => __('No failed logins have been recorded.', 'wordfence'),
			'No issues have been ignored.' => __('No issues have been ignored.', 'wordfence'),
			'No new issues have been found.' => __('No new issues have been found.', 'wordfence'),
			'No notifications received' => __('No notifications received', 'wordfence'),
			'No allowlisted URLs currently set.' => __('No allowlisted URLs currently set.', 'wordfence'),
			'No requests to report yet.' => __('No requests to report yet.', 'wordfence'),
			'No rules currently set.' => __('No rules currently set.', 'wordfence'),
			'No rules were updated. Please verify you have permissions to write to the /wp-content/wflogs directory.' => __('No rules were updated. Please verify you have permissions to write to the /wp-content/wflogs directory.', 'wordfence'),
			'No rules were updated. Please verify your website can reach the Wordfence servers.' => __('No rules were updated. Please verify your website can reach the Wordfence servers.', 'wordfence'),
			'No rules were updated. Your website has reached the maximum number of rule update requests. Please try again later.' => __('No rules were updated. Your website has reached the maximum number of rule update requests. Please try again later.', 'wordfence'),
			'No successful logins have been recorded.' => __('No successful logins have been recorded.', 'wordfence'),
			'No Thanks' => __('No Thanks', 'wordfence'),
			'No users currently have legacy cellphone sign-in enabled.' => __('No users currently have legacy cellphone sign-in enabled.', 'wordfence'),
			'None' => __('None', 'wordfence'),
			'Normal request' => __('Normal request', 'wordfence'),
			'Not Active' => __('Not Active', 'wordfence'),
			'Not a core, theme, or plugin file from wordpress.org' => __('Not a core, theme, or plugin file from wordpress.org', 'wordfence'),
			'Not connected' => __('Not connected', 'wordfence'),
			'Not recording' => __('Not recording', 'wordfence'),
			'Not recording (Central disconnected)' => __('Not recording (Central disconnected)', 'wordfence'),
			'NOTE' => __('NOTE', 'wordfence'),
			'NOTE: This checkbox enables ALL blocking/throttling functions including IP, country and advanced blocking, and the "Rate Limiting Rules" below.' => __('NOTE: This checkbox enables ALL blocking/throttling functions including IP, country and advanced blocking, and the "Rate Limiting Rules" below.', 'wordfence'),
			'Note' => __('Note', 'wordfence'),
			'Note: Status will update when changes are saved' => __('Note: Status will update when changes are saved', 'wordfence'),
			'Note: This does not include Login Security settings and tables. An option to delete those must be selected separately on the Login Security settings page.' => __('Note: This does not include Login Security settings and tables. An option to delete those must be selected separately on the Login Security settings page.', 'wordfence'),
			'Notice Dismissed' => __('Notice Dismissed', 'wordfence'),
			'Notifications' => __('Notifications', 'wordfence'),
			'OK' => __('OK', 'wordfence'),
			'Odd Days & Weekends' => __('Odd Days & Weekends', 'wordfence'),
			'Off' => __('Off', 'wordfence'),
			'On' => __('On', 'wordfence'),
			'Only alert me when that administrator signs in from a new device' => __('Only alert me when that administrator signs in from a new device', 'wordfence'),
			'Only alert me when that user signs in from a new device' => __('Only alert me when that user signs in from a new device', 'wordfence'),
			'Once Daily' => __('Once Daily', 'wordfence'),
			'Once a day' => __('Once a day', 'wordfence'),
			'Once a month' => __('Once a month', 'wordfence'),
			'Once a week' => __('Once a week', 'wordfence'),
			'Once you have downloaded the files, click Continue to complete the setup.' => __('Once you have downloaded the files, click Continue to complete the setup.', 'wordfence'),
			'Once you have downloaded the files, click Continue to complete uninstallation.' => __('Once you have downloaded the files, click Continue to complete uninstallation.', 'wordfence'),
			'Once you have entered credentials, click Continue to complete the removal.' => __('Once you have entered credentials, click Continue to complete the removal.', 'wordfence'),
			'Once you have entered credentials, click Continue to complete the setup.' => __('Once you have entered credentials, click Continue to complete the setup.', 'wordfence'),
			'Optimize Wordfence Firewall' => __('Optimize Wordfence Firewall', 'wordfence'),
			'Optimize the Wordfence Firewall' => __('Optimize the Wordfence Firewall', 'wordfence'),
			'or' => __('or', 'wordfence'),
			'Our recommendation for all websites. Provides the best detection capability in the industry.' => __('Our recommendation for all websites. Provides the best detection capability in the industry.', 'wordfence'),
			'Override' => __('Override', 'wordfence'),
			'opens in new tab' => __('opens in new tab', 'wordfence'),
			'Option' => __('Option', 'wordfence'),
			'Options' => __('Options', 'wordfence'),
			'Option Name' => __('Option Name', 'wordfence'),
			'Param' => __('Param', 'wordfence'),
			'Param Name' => __('Param Name', 'wordfence'),
			'Param Type' => __('Param Type', 'wordfence'),
			'Page not found' => __('Page not found', 'wordfence'),
			'Page Visited' => __('Page Visited', 'wordfence'),
			'Pages Not Found' => __('Pages Not Found', 'wordfence'),
			'Paid Members Only' => __('Paid Members Only', 'wordfence'),
			'Password Strength' => __('Password Strength', 'wordfence'),
			'Payment Method Expired' => __('Payment Method Expired', 'wordfence'),
			'Payment Method Expiring' => __('Payment Method Expiring', 'wordfence'),
			'Payment Method Invalid' => __('Payment Method Invalid', 'wordfence'),
			'Payment Method Missing' => __('Payment Method Missing', 'wordfence'),
			'Part of the Firewall configuration procedure for NGINX depends on creating a <code>%1$s</code> file in the root of your WordPress installation. This file can contain sensitive information and public access to it should be restricted. We have <a href="%2$s" target="_blank" rel="noreferrer noopener">instructions on our documentation site<span class="screen-reader-text"> (opens in new tab)</span></a> on what directives to put in your nginx.conf to fix this.' => /* translators: 1. PHP ini setting. 2. Support URL. */ __('Part of the Firewall configuration procedure for NGINX depends on creating a <code>%1$s</code> file in the root of your WordPress installation. This file can contain sensitive information and public access to it should be restricted. We have <a href="%2$s" target="_blank" rel="noreferrer noopener">instructions on our documentation site<span class="screen-reader-text"> (opens in new tab)</span></a> on what directives to put in your nginx.conf to fix this.', 'wordfence'),
			'Participate in the Real-Time Wordfence Security Network' => __('Participate in the Real-Time Wordfence Security Network', 'wordfence'),
			'Pause live updates when window loses focus' => __('Pause live updates when window loses focus', 'wordfence'),
			'Performance Options' => __('Performance Options', 'wordfence'),
			'Permanent' => __('Permanent', 'wordfence'),
			'Phone (%s)' => /* translators: phone number */ __('Phone (%s)', 'wordfence'),
			'Please Complete Wordfence Installation' => __('Please Complete Wordfence Installation', 'wordfence'),
			'Please enter a valid email address' => __('Please enter a valid email address', 'wordfence'),
			'Please try again. If the problem persists, please <a href="https://www.wordfence.com/help/api-key" target="_blank" rel="noopener noreferrer">contact Wordfence Support<span class="screen-reader-text">(opens in new tab)</span></a>' => __('Please try again. If the problem persists, please <a href="https://www.wordfence.com/help/api-key" target="_blank" rel="noopener noreferrer">contact Wordfence Support<span class="screen-reader-text">(opens in new tab)</span></a>', 'wordfence'),
			'Premium License Installed' => __('Premium License Installed', 'wordfence'),
			'Prevent discovery of usernames through \'/?author=N\' scans, the oEmbed API, the WordPress REST API, and WordPress XML Sitemaps' => __('Prevent discovery of usernames through \'/?author=N\' scans, the oEmbed API, the WordPress REST API, and WordPress XML Sitemaps', 'wordfence'),
			'Prevent the use of passwords leaked in data breaches' => __('Prevent the use of passwords leaked in data breaches', 'wordfence'),
			'Prevent users registering \'admin\' username if it doesn\'t exist' => __('Prevent users registering \'admin\' username if it doesn\'t exist', 'wordfence'),
			'Preview' => __('Preview', 'wordfence'),
			'Pick' => __('Pick', 'wordfence'),
			'Pick from List' => __('Pick from List', 'wordfence'),
			'Please <a href="%s">click here</a> to configure the Firewall to run correctly on this site.' => /* translators: configuration URL */ __('Please <a href="%s">click here</a> to configure the Firewall to run correctly on this site.', 'wordfence'),
			'Please download a backup of the following files before we make the necessary changes:' => __('Please download a backup of the following files before we make the necessary changes:', 'wordfence'),
			'Please enter a valid IP address or domain name for your whois lookup.' => __('Please enter a valid IP address or domain name for your whois lookup.', 'wordfence'),
			'Please enter a valid email address.' => __('Please enter a valid email address.', 'wordfence'),
			'Please include your support ticket number or forum username.' => __('Please include your support ticket number or forum username.', 'wordfence'),
			'Please make a backup of this file before proceeding. If you need to restore this backup file, you can copy it to the following path from your site\'s root:' => __('Please make a backup of this file before proceeding. If you need to restore this backup file, you can copy it to the following path from your site\'s root:', 'wordfence'),
			'Please read this article in our FAQ to make an important change that will ensure your site stability during an update.' => __('Please read this article in our FAQ to make an important change that will ensure your site stability during an update.', 'wordfence'),
			'Please confirm the switch to the new 2FA mode. This change will be permanent.' => __('Please confirm the switch to the new 2FA mode. This change will be permanent.', 'wordfence'),
			'Please specify a reason' => __('Please specify a reason', 'wordfence'),
			'Please specify a valid IP address range in the form of "1.2.3.4 - 1.2.3.5" without quotes. Make sure the dash between the IP addresses in a normal dash (a minus sign on your keyboard) and not another character that looks like a dash.' => __('Please specify a valid IP address range in the form of "1.2.3.4 - 1.2.3.5" without quotes. Make sure the dash between the IP addresses in a normal dash (a minus sign on your keyboard) and not another character that looks like a dash.', 'wordfence'),
			'Please specify either an IP address range, Hostname or a web browser pattern to match.' => __('Please specify either an IP address range, Hostname or a web browser pattern to match.', 'wordfence'),
			'Please use the login security module.' => __('Please use the login security module.', 'wordfence'),
			'PM' => __('PM', 'wordfence'),
			'Plugin Abandoned' => __('Plugin Abandoned', 'wordfence'),
			'Plugin has unpatched security issues.' => __('Plugin has unpatched security issues.', 'wordfence'),
			'Plugin Removed' => __('Plugin Removed', 'wordfence'),
			'Plugin Upgrade' => __('Plugin Upgrade', 'wordfence'),
			'Plugin Name' => __('Plugin Name', 'wordfence'),
			'Plugin Vulnerable' => __('Plugin Vulnerable', 'wordfence'),
			'POST Body' => __('POST Body', 'wordfence'),
			'Post' => __('Post', 'wordfence'),
			'Posted on' => __('Posted on', 'wordfence'),
			'Posts, Comments, & Files' => __('Posts, Comments, & Files', 'wordfence'),
			'Premium Feature' => __('Premium Feature', 'wordfence'),
			'Premium License Conflict' => __('Premium License Conflict', 'wordfence'),
			'Premium License Deactivated' => __('Premium License Deactivated', 'wordfence'),
			'Premium Protection Disabled' => __('Premium Protection Disabled', 'wordfence'),
			'Premium Protection Enabled' => __('Premium Protection Enabled', 'wordfence'),
			'Previous' => __('Previous', 'wordfence'),
			'Product Updates' => __('Product Updates', 'wordfence'),
			'Promotions' => __('Promotions', 'wordfence'),
			'Protect More Sites' => __('Protect More Sites', 'wordfence'),
			'Protection Level' => __('Protection Level', 'wordfence'),
			'Protection from known and emerging threats' => __('Protection from known and emerging threats', 'wordfence'),
			'Public Files' => __('Public Files', 'wordfence'),
			'Put Geographic Protection In Place With Country Blocking' => __('Put Geographic Protection In Place With Country Blocking', 'wordfence'),
			'Query String' => __('Query String', 'wordfence'),
			'Quarantined File' => __('Quarantined File', 'wordfence'),
			'Rate Limiting' => __('Rate Limiting', 'wordfence'),
			'Rate limiting based on type of request (human vs crawler) may be less accurate because this prevents loading the extra JavaScript used for that identification.' => __('Rate limiting based on type of request (human vs crawler) may be less accurate because this prevents loading the extra JavaScript used for that identification.', 'wordfence'),
			'Real-Time IP Blocklist' => __('Real-Time IP Blocklist', 'wordfence'),
			'Reason' => __('Reason', 'wordfence'),
			'Recent' => __('Recent', 'wordfence'),
			'Recent Activity' => __('Recent Activity', 'wordfence'),
			'Recommended' => __('Recommended', 'wordfence'),
			'Recommended Settings Change' => __('Recommended Settings Change', 'wordfence'),
			'Register with Wordfence to secure your site with the latest threat intelligence.' => __('Register with Wordfence to secure your site with the latest threat intelligence.', 'wordfence'),
			'Reputation Check Status' => __('Reputation Check Status', 'wordfence'),
			'Reputation Checks' => __('Reputation Checks', 'wordfence'),
			'Reputation check' => __('Reputation check', 'wordfence'),
			'Reconnect This Site' => __('Reconnect This Site', 'wordfence'),
			'Recording (significant events only)' => __('Recording (significant events only)', 'wordfence'),
			'Recording (all events)' => __('Recording (all events)', 'wordfence'),
			'Recovery Codes' => __('Recovery Codes', 'wordfence'),
			'Redirect to the URL below' => __('Redirect to the URL below', 'wordfence'),
			'Redirected' => __('Redirected', 'wordfence'),
			'Redirected by Country Blocking bypass URL' => __('Redirected by Country Blocking bypass URL', 'wordfence'),
			'Referer' => __('Referer', 'wordfence'), //Matches the actual HTTP header name including the misspelling
			'Referrer' => __('Referrer', 'wordfence'),
			'Registered Users' => __('Registered Users', 'wordfence'),
			'Regular traffic and security-related traffic will appear below.' => __('Regular traffic and security-related traffic will appear below.', 'wordfence'),
			'Reload' => __('Reload', 'wordfence'),
			'Renew License' => __('Renew License', 'wordfence'),
			'Remove Extended Protection' => __('Remove Extended Protection', 'wordfence'),
			'Remove Invalid License' => __('Remove Invalid License', 'wordfence'),
			'Repair' => __('Repair', 'wordfence'),
			'Repair All Repairable Files' => __('Repair All Repairable Files', 'wordfence'),
			'Repository URL' => __('Repository URL', 'wordfence'),
			'Request Response' => __('Request Response', 'wordfence'),
			'Reset' => __('Reset', 'wordfence'),
			'Reset License' => __('Reset License', 'wordfence'),
			'Reset site to a free license' => __('Reset site to a free license', 'wordfence'),
			'Response License Installed' => __('Response License Installed', 'wordfence'),
			'Rest of site' => __('Rest of site', 'wordfence'),
			'Response' => __('Response', 'wordfence'),
			'Restore' => __('Restore', 'wordfence'),
			'Restore Defaults' => __('Restore Defaults', 'wordfence'),
			'Results' => __('Results', 'wordfence'),
			'Results Found' => __('Results Found', 'wordfence'),
			'Resume Installation' => __('Resume Installation', 'wordfence'),
			'Review' => __('Review', 'wordfence'),
			'Review Payment Method' => __('Review Payment Method', 'wordfence'),
			'Revoke Capabilities' => __('Revoke Capabilities', 'wordfence'),
			'Rule Added' => __('Rule Added', 'wordfence'),
			'Rule updates delayed by 30 days' => __('Rule updates delayed by 30 days', 'wordfence'),
			'Rule Update Failed' => __('Rule Update Failed', 'wordfence'),
			'Rules' => __('Rules', 'wordfence'),
			'Rules updated in real-time' => __('Rules updated in real-time', 'wordfence'),
			'Rules Updated' => __('Rules Updated', 'wordfence'),
			'Run Whois' => __('Run Whois', 'wordfence'),
			'Save' => __('Save', 'wordfence'),
			'Save Changes' => __('Save Changes', 'wordfence'),
			'Saturday' => __('Saturday', 'wordfence'),
			'Scan' => __('Scan', 'wordfence'),
			'Scan comments for known dangerous URLs and suspicious content' => __('Scan comments for known dangerous URLs and suspicious content', 'wordfence'),
			'Scan core files against repository versions for changes' => __('Scan core files against repository versions for changes', 'wordfence'),
			'Scan file contents for backdoors, trojans and suspicious code' => __('Scan file contents for backdoors, trojans and suspicious code', 'wordfence'),
			'Scan file contents for malicious URLs' => __('Scan file contents for malicious URLs', 'wordfence'),
			'Scan files outside your WordPress installation' => __('Scan files outside your WordPress installation', 'wordfence'),
			'Scan for misconfigured How does Wordfence get IPs' => __('Scan for misconfigured How does Wordfence get IPs', 'wordfence'),
			'Scan for out of date, abandoned, and vulnerable plugins, themes, and WordPress versions' => __('Scan for out of date, abandoned, and vulnerable plugins, themes, and WordPress versions', 'wordfence'),
			'Scan for publicly accessible configuration, backup, or log files' => __('Scan for publicly accessible configuration, backup, or log files', 'wordfence'),
			'Scan for publicly accessible quarantined files' => __('Scan for publicly accessible quarantined files', 'wordfence'),
			'Scan for signatures of known malicious files' => __('Scan for signatures of known malicious files', 'wordfence'),
			'Scan for suspicious admin users created outside of WordPress' => __('Scan for suspicious admin users created outside of WordPress', 'wordfence'),
			'Scan images, binary, and other files as if they were executable' => __('Scan images, binary, and other files as if they were executable', 'wordfence'),
			'Scan plugin files against repository versions for changes' => __('Scan plugin files against repository versions for changes', 'wordfence'),
			'Scan posts for known dangerous URLs and suspicious content' => __('Scan posts for known dangerous URLs and suspicious content', 'wordfence'),
			'Scan theme files against repository versions for changes' => __('Scan theme files against repository versions for changes', 'wordfence'),
			'Scan WordPress core, plugin, and theme options for known dangerous URLs and suspicious content' => __('Scan WordPress core, plugin, and theme options for known dangerous URLs and suspicious content', 'wordfence'),
			'Scan wp-admin and wp-includes for files not bundled with WordPress' => __('Scan wp-admin and wp-includes for files not bundled with WordPress', 'wordfence'),
			'Scan Complete.' => __('Scan Complete.', 'wordfence'),
			'Scan Failed' => __('Scan Failed', 'wordfence'),
			'Scan Options & Settings' => __('Scan Options & Settings', 'wordfence'),
			'Scan Scheduling' => __('Scan Scheduling', 'wordfence'),
			'Scan Stage Failed' => __('Scan Stage Failed', 'wordfence'),
			'Scan Status' => __('Scan Status', 'wordfence'),
			'Scan Stopping' => __('Scan Stopping', 'wordfence'),
			'Scan Type' => __('Scan Type', 'wordfence'),
			'Scan the code below with your authenticator app to add this account. Some authenticator apps also allow you to type in the text version instead.' => __('Scan the code below with your authenticator app to add this account. Some authenticator apps also allow you to type in the text version instead.', 'wordfence'),
			'Scans are not functional because SSL is unavailable.' => __('Scans are not functional because SSL is unavailable.', 'wordfence'),
			'Schedule Wordfence Scans' => __('Schedule Wordfence Scans', 'wordfence'),
			'Search All Options' => __('Search All Options', 'wordfence'),
			'second' => __('second', 'wordfence'),
			'seconds' => __('seconds', 'wordfence'),
			'Seconds since last hit' => __('Seconds since last hit', 'wordfence'),
			'Select/deselect all' => __('Select/deselect all', 'wordfence'),
			'Select Countries to Block from List' => __('Select Countries to Block from List', 'wordfence'),
			'Select row %d' => /* translators: row index */ __('Select row %d', 'wordfence'),
			'Selected automatically when General Options have been customized for this website.' => __('Selected automatically when General Options have been customized for this website.', 'wordfence'),
			'Security Alerts' => __('Security Alerts', 'wordfence'),
			'Security Event' => __('Security Event', 'wordfence'),
			'See recent traffic' => __('See recent traffic', 'wordfence'),
			'Send' => __('Send', 'wordfence'),
			'Send a test activity report email:' => __('Send a test activity report email:', 'wordfence'),
			'Send a test email from this WordPress server to an email address:' => __('Send a test email from this WordPress server to an email address:', 'wordfence'),
			'Send Report' => __('Send Report', 'wordfence'),
			'Send Report by Email' => __('Send Report by Email', 'wordfence'),
			'Send Test Activity Report' => __('Send Test Activity Report', 'wordfence'),
			'Send Test Email' => __('Send Test Email', 'wordfence'),
			'Separate multiple addresses with commas' => __('Separate multiple addresses with commas', 'wordfence'),
			'Separate multiple URLs with commas or place them on separate lines. Asterisks are wildcards, but use with care. If you see an attacker repeatedly probing your site for a known vulnerability you can use this to immediately block them. All URLs must start with a "/" without quotes and must be relative. e.g. /badURLone/, /bannedPage.html, /dont-access/this/URL/, /starts/with-*' => __('Separate multiple URLs with commas or place them on separate lines. Asterisks are wildcards, but use with care. If you see an attacker repeatedly probing your site for a known vulnerability you can use this to immediately block them. All URLs must start with a "/" without quotes and must be relative. e.g. /badURLone/, /bannedPage.html, /dont-access/this/URL/, /starts/with-*', 'wordfence'),
			'Server State' => __('Server State', 'wordfence'),
			'Server Update' => __('Server Update', 'wordfence'),
			'Set up the way you want the firewall to protect your site including the web application firewall, brute force protection, rate limiting, and blocking.' => __('Set up the way you want the firewall to protect your site including the web application firewall, brute force protection, rate limiting, and blocking.', 'wordfence'),
			'Set up the way you want the scan to monitor your site security including custom scan configurations and scheduling.' => __('Set up the way you want the scan to monitor your site security including custom scan configurations and scheduling.', 'wordfence'),
			'Setting higher will reduce browser traffic but slow scan starts, live traffic & status updates.' => __('Setting higher will reduce browser traffic but slow scan starts, live traffic & status updates.', 'wordfence'),
			'Shortcuts' => __('Shortcuts', 'wordfence'),
			'Show Advanced Filters' => __('Show Advanced Filters', 'wordfence'),
			'Show Automatic' => __('Show Automatic', 'wordfence'),
			'SHOW ALL RULES' => __('SHOW ALL RULES', 'wordfence'),
			'Show log' => __('Show log', 'wordfence'),
			'Show more' => __('Show more', 'wordfence'),
			'Show Wordfence Automatic Blocks' => __('Show Wordfence Automatic Blocks', 'wordfence'),
			'Show the standard Wordfence blocked message' => __('Show the standard Wordfence blocked message', 'wordfence'),
			'Sign up for Wordfence Care and we\'ll take care of it. Our security experts will clean your site, resolve the infection, and perform a security audit. Get hands-on support with any security issue including help installing, configuring and optimizing Wordfence.' => __('Sign up for Wordfence Care and we\'ll take care of it. Our security experts will clean your site, resolve the infection, and perform a security audit. Get hands-on support with any security issue including help installing, configuring and optimizing Wordfence.', 'wordfence'),
			'Signatures updated in real-time' => __('Signatures updated in real-time', 'wordfence'),
			'Since you have High Sensitivity scanning enabled, there is a very high likelihood that your results will include false positives. If you think you have indeed been hacked, our team of security experts can help.' => __('Since you have High Sensitivity scanning enabled, there is a very high likelihood that your results will include false positives. If you think you have indeed been hacked, our team of security experts can help.', 'wordfence'),
			'Since you have the beta threat defense feed enabled, there is a high likelihood that your results could include false positives. If you think you have indeed been hacked, our team of security experts can help.' => __('Since you have the beta threat defense feed enabled, there is a high likelihood that your results could include false positives. If you think you have indeed been hacked, our team of security experts can help.', 'wordfence'),
			'Skipped Paths' => __('Skipped Paths', 'wordfence'),
			'Sorry, but no data for that IP or domain was found.' => __('Sorry, but no data for that IP or domain was found.', 'wordfence'),
			'Source' => __('Source', 'wordfence'),
			'Space Remaining' => __('Space Remaining', 'wordfence'),
			'Spam' => __('Spam', 'wordfence'),
			'Spam Check' => __('Spam Check', 'wordfence'),
			'Specify a valid IP range' => __('Specify a valid IP range', 'wordfence'),
			'Specify a valid hostname' => __('Specify a valid hostname', 'wordfence'),
			'Specify an IP range, Hostname or Browser pattern' => __('Specify an IP range, Hostname or Browser pattern', 'wordfence'),
			'Standard Scan' => __('Standard Scan', 'wordfence'),
			'Start New Scan' => __('Start New Scan', 'wordfence'),
			'Start all scans remotely (Try this if your scans aren\'t starting and your site is publicly accessible)' => __('Start all scans remotely (Try this if your scans aren\'t starting and your site is publicly accessible)', 'wordfence'),
			'Start time' => __('Start time', 'wordfence'),
			'Start Your First Scan' => __('Start Your First Scan', 'wordfence'),
			'Status' => __('Status', 'wordfence'),
			'Stop Ignoring' => __('Stop Ignoring', 'wordfence'),
			'Significant' => __('Significant', 'wordfence'),
			'Significant Events' => __('Significant Events', 'wordfence'),
			'Stop Scan' => __('Stop Scan', 'wordfence'),
			'Stops Complex Attacks' => __('Stops Complex Attacks', 'wordfence'),
			'Stops Password Guessing Attacks' => __('Stops Password Guessing Attacks', 'wordfence'),
			'Success deleting file' => __('Success deleting file', 'wordfence'),
			'Success removing option' => __('Success removing option', 'wordfence'),
			'Success restoring file' => __('Success restoring file', 'wordfence'),
			'Success updating option' => __('Success updating option', 'wordfence'),
			'Successful' => __('Successful', 'wordfence'),
			'Successfully deleted admin' => __('Successfully deleted admin', 'wordfence'),
			'Successfully removed data' => __('Successfully removed data', 'wordfence'),
			'Successfully revoked admin' => __('Successfully revoked admin', 'wordfence'),
			'Sunday' => __('Sunday', 'wordfence'),
			'Switch to New 2FA' => __('Switch to New 2FA', 'wordfence'),
			'Thanks for sending your diagnostic page over email' => __('Thanks for sending your diagnostic page over email', 'wordfence'),
			'The <code>auto_prepend_file</code> setting has been successfully removed from <code>.htaccess</code> and <code>.user.ini</code>. Once this change takes effect, Extended Protection Mode will be disabled.' => __('The <code>auto_prepend_file</code> setting has been successfully removed from <code>.htaccess</code> and <code>.user.ini</code>. Once this change takes effect, Extended Protection Mode will be disabled.', 'wordfence'),
			'The admin user %s was successfully deleted.' => /* translators: WordPress username. */ __('The admin user %s was successfully deleted.', 'wordfence'),
			'The changes have not yet taken effect. If you are using LiteSpeed or IIS as your web server or CGI/FastCGI interface, you may need to wait a few minutes for the changes to take effect since the configuration files are sometimes cached. You also may need to select a different server configuration in order to complete this step, but wait for a few minutes before trying. You can try refreshing this page.' => __('The changes have not yet taken effect. If you are using LiteSpeed or IIS as your web server or CGI/FastCGI interface, you may need to wait a few minutes for the changes to take effect since the configuration files are sometimes cached. You also may need to select a different server configuration in order to complete this step, but wait for a few minutes before trying. You can try refreshing this page.', 'wordfence'),
			'These options let you choose which site events to record in the audit log. When enabled and your site is connected to Wordfence Central, these events are automatically sent to Central to prevent any tampering by an attacker. When <strong>Audit Log logging mode</strong> is set to "Significant Events", all events except content changes will be recorded. "All Events" will include content-related events and may be used to monitor for unauthorized post or page changes. "Preview" and "Disabled" modes do not send any events to Central.' => __('These options let you choose which site events to record in the audit log. When enabled and your site is connected to Wordfence Central, these events are automatically sent to Central to prevent any tampering by an attacker. When <strong>Audit Log logging mode</strong> is set to "Significant Events", all events except content changes will be recorded. "All Events" will include content-related events and may be used to monitor for unauthorized post or page changes. "Preview" and "Disabled" modes do not send any events to Central.', 'wordfence'),
			'These options let you choose which traffic to log and to ignore certain types of visitors, based on their level of access, usernames, IP address, or browser type. If you run a high-traffic website where it is not feasible to see your visitors in real-time, simply change the <strong>Traffic logging mode</strong> to "Security Only."' => __('These options let you choose which traffic to log and to ignore certain types of visitors, based on their level of access, usernames, IP address, or browser type. If you run a high-traffic website where it is not feasible to see your visitors in real-time, simply change the <strong>Traffic logging mode</strong> to "Security Only."', 'wordfence'),
			'Terms of Use and Privacy Policy' => __('Terms of Use and Privacy Policy', 'wordfence'),
			'Test Email Sent' => __('Test Email Sent', 'wordfence'),
			'The current scan looks like it has failed. Its last status update was more than %s ago. You may continue to wait in case it resumes or stop and restart the scan. Some sites may need adjustments to run scans reliably.' => /* translators: Localized date. */ __('The current scan looks like it has failed. Its last status update was more than %s ago. You may continue to wait in case it resumes or stop and restart the scan. Some sites may need adjustments to run scans reliably.', 'wordfence'),
			'The error returned was:' => __('The error returned was:', 'wordfence'),
			'The file %s was successfully deleted.' => /* translators: File path. */ __('The file %s was successfully deleted.', 'wordfence'),
			'The file was successfully hidden from public view.' => __('The file was successfully hidden from public view.', 'wordfence'),
			'The file %s was successfully restored.' => /* translators: File path. */ __('The file %s was successfully restored.', 'wordfence'),
			'The Full Path disclosure issue has been fixed' => __('The Full Path disclosure issue has been fixed', 'wordfence'),
			'The \'How does Wordfence get IPs\' option was successfully updated to the recommended value.' => __('The \'How does Wordfence get IPs\' option was successfully updated to the recommended value.', 'wordfence'),
			'The license you were using has been removed from your account. Please reach out to <a href="mailto:billing@wordfence.com">billing@wordfence.com</a> or create a Premium support case at <a href="https://support.wordfence.com/support/tickets" target="_blank">https://support.wordfence.com/support/tickets<span class="screen-reader-text"> (opens in new tab)</span></a> for more information. Our staff is happy to help.' => __('The license you were using has been removed from your account. Please reach out to <a href="mailto:billing@wordfence.com">billing@wordfence.com</a> or create a Premium support case at <a href="https://support.wordfence.com/support/tickets" target="_blank">https://support.wordfence.com/support/tickets<span class="screen-reader-text"> (opens in new tab)</span></a> for more information. Our staff is happy to help.', 'wordfence'),
			'The option %s was successfully removed.' => /* translators: WordPress option. */ __('The option %s was successfully removed.', 'wordfence'),
			'The plugin will load as a regular plugin after WordPress has been loaded, and while it can block many malicious requests, some vulnerable plugins or WordPress itself may run vulnerable code before all plugins are loaded.' => __('The plugin will load as a regular plugin after WordPress has been loaded, and while it can block many malicious requests, some vulnerable plugins or WordPress itself may run vulnerable code before all plugins are loaded.', 'wordfence'),
			'The previous scan has failed. Some sites may need adjustments to run scans reliably.' => __('The previous scan has failed. Some sites may need adjustments to run scans reliably.', 'wordfence'),
			'The previous scan has terminated because the time limit of %s was reached. This limit can be customized on the options page.' => /* translators: Time limit (duration string). */ __('The previous scan has terminated because the time limit of %s was reached. This limit can be customized on the options page.', 'wordfence'),
			'The previous scan has terminated because we detected an update occurring during the scan.' => __('The previous scan has terminated because we detected an update occurring during the scan.', 'wordfence'),
			'The request has been allowlisted. Please try it again.' => __('The request has been allowlisted. Please try it again.', 'wordfence'),
			'The required file has been created. You\'ll need to insert the following code into your <code>php.ini</code> to finish installation:' => __('The required file has been created. You\'ll need to insert the following code into your <code>php.ini</code> to finish installation:', 'wordfence'),
			'The results of your scan may indicate that you could benefit from Wordfence Site Cleaning' => __('The results of your scan may indicate that you could benefit from Wordfence Site Cleaning', 'wordfence'),
			'The scan has failed because we received an unexpected response from the Wordfence servers. This may be a temporary error, though some sites may need adjustments to run scans reliably.' => __('The scan has failed because we received an unexpected response from the Wordfence servers. This may be a temporary error, though some sites may need adjustments to run scans reliably.', 'wordfence'),
			'The scan has failed because we were unable to contact the Wordfence servers. Some sites may need adjustments to run scans reliably.' => __('The scan has failed because we were unable to contact the Wordfence servers. Some sites may need adjustments to run scans reliably.', 'wordfence'),
			'The Web Application Firewall is currently in Learning Mode.' => __('The Web Application Firewall is currently in Learning Mode.', 'wordfence'),
			'The URL/parameters in this table will not be tested by the firewall. They are typically added while the firewall is in Learning Mode or by an admin who identifies a particular action/request is a false positive.' => __('The URL/parameters in this table will not be tested by the firewall. They are typically added while the firewall is in Learning Mode or by an admin who identifies a particular action/request is a false positive.', 'wordfence'),
			'The Wordfence Audit Log is a premium feature that records a history of events on your site to assist in monitoring for unauthorized actions or signs of compromise. Events can include everything from user creation and editing to plugin/theme installation and updates. All data captured for relevant events is saved remotely to Wordfence Central to prevent any tampering that may interfere with post-incident analysis and response.' => __('The Wordfence Audit Log is a premium feature that records a history of events on your site to assist in monitoring for unauthorized actions or signs of compromise. Events can include everything from user creation and editing to plugin/theme installation and updates. All data captured for relevant events is saved remotely to Wordfence Central to prevent any tampering that may interfere with post-incident analysis and response.', 'wordfence'),
			'The Wordfence Dashboard provides valuable insights into the current state of your site\'s security. You\'ll find useful data summarized here as well as important status updates and notifications.' => __('The Wordfence Dashboard provides valuable insights into the current state of your site\'s security. You\'ll find useful data summarized here as well as important status updates and notifications.', 'wordfence'),
			'The Wordfence Web Application Firewall is a PHP-based, application-level firewall that filters out malicious requests to your site. It is designed to run at the beginning of WordPress\' initialization to filter any attacks before plugins or themes can run any potentially vulnerable code.' => __('The Wordfence Web Application Firewall is a PHP-based, application-level firewall that filters out malicious requests to your site. It is designed to run at the beginning of WordPress\' initialization to filter any attacks before plugins or themes can run any potentially vulnerable code.', 'wordfence'),
			'The Wordfence firewall protects your sites from attackers' => __('The Wordfence firewall protects your sites from attackers', 'wordfence'),
			'Theme Name' => __('Theme Name', 'wordfence'),
			'Theme URL' => __('Theme URL', 'wordfence'),
			'Themes & Plugins' => __('Themes & Plugins', 'wordfence'),
			'then' => __('then', 'wordfence'),
			'then redirect that user to' => __('then redirect that user to', 'wordfence'),
			'then set a cookie that will bypass country blocking in the future in case that user hits the site from a blocked country.' => __('then set a cookie that will bypass country blocking in the future in case that user hits the site from a blocked country.', 'wordfence'),
			'These URL patterns will be excluded from the throttling rules used to limit crawlers.' => __('These URL patterns will be excluded from the throttling rules used to limit crawlers.', 'wordfence'),
			'These IPs (or CIDR ranges) will be ignored when determining the requesting IP via the X-Forwarded-For HTTP header. Enter one IP or CIDR range per line.' => __('These IPs (or CIDR ranges) will be ignored when determining the requesting IP via the X-Forwarded-For HTTP header. Enter one IP or CIDR range per line.', 'wordfence'),
			'There was an error while downgrading to a free license.' => __('There was an error while downgrading to a free license.', 'wordfence'),
			'There was an error while sending the email.' => __('There was an error while sending the email.', 'wordfence'),
			'This feature blocks all traffic from IPs with a high volume of recent malicious activity using Wordfence\'s real-time blocklist.' => __('This feature blocks all traffic from IPs with a high volume of recent malicious activity using Wordfence\'s real-time blocklist.', 'wordfence'),
			'This is the severity of the vulnerability itself, which can differ from the scan result severity. Some lower-severity vulnerabilities may still be important to address depending on your site\'s configuration and user base, so they are still important for you to review.' => __('This is the severity of the vulnerability itself, which can differ from the scan result severity. Some lower-severity vulnerabilities may still be important to address depending on your site\'s configuration and user base, so they are still important for you to review.', 'wordfence'),
			'This is where future security alerts for your website will be sent. This can also be changed in Global Options.' => __('This is where future security alerts for your website will be sent. This can also be changed in Global Options.', 'wordfence'),
			'This is your Dashboard' => __('This is your Dashboard', 'wordfence'),
			'This is your main configuration file and cannot be deleted. It must be cleaned manually.' => __('This is your main configuration file and cannot be deleted. It must be cleaned manually.', 'wordfence'),
			'This is where you can monitor the work Wordfence is doing to protect your site and also where you can manage the options to optimize the firewall\'s configuration.' => __('This is where you can monitor the work Wordfence is doing to protect your site and also where you can manage the options to optimize the firewall\'s configuration.', 'wordfence'),
			'This key may already be used on several sites. To avoid scan scheduling issues and other problems, you should get a new key or remove it from the other sites.' => __('This key may already be used on several sites. To avoid scan scheduling issues and other problems, you should get a new key or remove it from the other sites.', 'wordfence'),
			'This PHP setting is currently in use, and is including this file:' => __('This PHP setting is currently in use, and is including this file:', 'wordfence'),
			'This option enables all "Brute Force Protection" options, including strong password enforcement and invalid login throttling. You can modify individual options below.' => __('This option enables all "Brute Force Protection" options, including strong password enforcement and invalid login throttling. You can modify individual options below.', 'wordfence'),
			'This option requires cURL. (This may have no effect on some old PHP or cURL versions.)' => __('This option requires cURL. (This may have no effect on some old PHP or cURL versions.)', 'wordfence'),
			'This page shows information that can be used for troubleshooting conflicts, configuration issues, or compatibility with other plugins, themes, or a host\'s environment. Failing tests are not always a sign of something that you need to fix, but can help the Wordfence team when troubleshooting a problem.' => __('This page shows information that can be used for troubleshooting conflicts, configuration issues, or compatibility with other plugins, themes, or a host\'s environment. Failing tests are not always a sign of something that you need to fix, but can help the Wordfence team when troubleshooting a problem.', 'wordfence'),
			'This was a premium license key, but it is no longer valid, so premium features are disabled. You can either remove the invalid key and continue using Wordfence\'s free features, or enter a new premium key to upgrade. If you have questions, contact <a href="mailto:billing@wordfence.com">billing@wordfence.com</a>.' => __('This was a premium license key, but it is no longer valid, so premium features are disabled. You can either remove the invalid key and continue using Wordfence\'s free features, or enter a new premium key to upgrade. If you have questions, contact <a href="mailto:billing@wordfence.com">billing@wordfence.com</a>.', 'wordfence'),
			'This will be shown only once. Keep these codes somewhere safe.' => __('This will be shown only once. Keep these codes somewhere safe.', 'wordfence'),
			'throttle it' => __('throttle it', 'wordfence'),
			'Throttled' => __('Throttled', 'wordfence'),
			'Thursday' => __('Thursday', 'wordfence'),
			'Ticket Number/Forum Username' => __('Ticket Number/Forum Username', 'wordfence'),
			'Tuesday' => __('Tuesday', 'wordfence'),
			'Time' => __('Time', 'wordfence'),
			'Time Limit' => __('Time Limit', 'wordfence'),
			'Time limit that a scan can run in seconds' => __('Time limit that a scan can run in seconds', 'wordfence'),
			'Title' => __('Title', 'wordfence'),
			'To' => __('To', 'wordfence'),
			'Toggle row %d' => /* translators: row index */ __('Toggle row %d', 'wordfence'),
			'To make your site as secure as possible, the Wordfence Web Application Firewall is designed to run via a PHP setting called <code>auto_prepend_file</code>, which ensures it runs before any potentially vulnerable code runs.' => __('To make your site as secure as possible, the Wordfence Web Application Firewall is designed to run via a PHP setting called <code>auto_prepend_file</code>, which ensures it runs before any potentially vulnerable code runs.', 'wordfence'),
			'Top IPs Blocked' => __('Top IPs Blocked', 'wordfence'),
			'Traffic logging mode' => __('Traffic logging mode', 'wordfence'),
			'Traffic logging mode: All traffic' => __('Traffic logging mode: All traffic', 'wordfence'),
			'Traffic logging mode: Security-related traffic only' => __('Traffic logging mode: Security-related traffic only', 'wordfence'),
			'Treat Google like any other Crawler' => __('Treat Google like any other Crawler', 'wordfence'),
			'Trusted Proxy Preset' => __('Trusted Proxy Preset', 'wordfence'),
			'Trusted Proxies' => __('Trusted Proxies', 'wordfence'),
			'Turn On' => __('Turn On', 'wordfence'),
			'Twice Daily' => __('Twice Daily', 'wordfence'),
			'Two Factor Status' => __('Two Factor Status', 'wordfence'),
			'Two-factor authentication now has its own IP allowlist. If necessary, you can allow specific IP addresses or ranges to skip 2FA when logging in.' => __('Two-factor authentication now has its own IP allowlist. If necessary, you can allow specific IP addresses or ranges to skip 2FA when logging in.', 'wordfence'),
			'Type' => __('Type', 'wordfence'),
			'Type: %s' => /* translators: HTTP client type. */ __('Type: %s', 'wordfence'),
			'Update Check Error' => __('Update Check Error', 'wordfence'),
			'Update Block' => __('Update Block', 'wordfence'),
			'Update Payment Method' => __('Update Payment Method', 'wordfence'),
			'Unable to automatically hide file' => __('Unable to automatically hide file', 'wordfence'),
			'Unable to Uninstall' => __('Unable to Uninstall', 'wordfence'),
			'Unable to Install' => __('Unable to Install', 'wordfence'),
			'Unblock' => __('Unblock', 'wordfence'),
			'Unblock IP' => __('Unblock IP', 'wordfence'),
			'Unblock range' => __('Unblock range', 'wordfence'),
			'Unblocking' => __('Unblocking', 'wordfence'),
			'Uninstall Wordfence Firewall' => __('Uninstall Wordfence Firewall', 'wordfence'),
			'Uninstallation from this site was successful! The Wordfence Firewall is still active because it is installed in another WordPress installation.' => __('Uninstallation from this site was successful! The Wordfence Firewall is still active because it is installed in another WordPress installation.', 'wordfence'),
			'Uninstallation was successful!' => __('Uninstallation was successful!', 'wordfence'),
			'Unknown Administrator' => __('Unknown Administrator', 'wordfence'),
			'Unknown Core File' => __('Unknown Core File', 'wordfence'),
			'Unlimited' => __('Unlimited', 'wordfence'),
			'Unspecified' => __('Unspecified', 'wordfence'),
			'Unblock All' => __('Unblock All', 'wordfence'),
			'U.S. Blocked' => __('U.S. Blocked', 'wordfence'),
			'Update includes security-related fixes.' => __('Update includes security-related fixes.', 'wordfence'),
			'Updates Needed (Plugin, Theme, or Core)' => __('Updates Needed (Plugin, Theme, or Core)', 'wordfence'),
			'Update interval in seconds' => __('Update interval in seconds', 'wordfence'),
			'Update Wordfence automatically when a new version is released?' => __('Update Wordfence automatically when a new version is released?', 'wordfence'),
			'Upgrade' => __('Upgrade', 'wordfence'),
			'Upgrade to Premium' => __('Upgrade to Premium', 'wordfence'),
			'URL' => __('URL', 'wordfence'),
			'URL to redirect blocked users to' => __('URL to redirect blocked users to', 'wordfence'),
			'URLs Checked' => __('URLs Checked', 'wordfence'),
			'Use low resource scanning (reduces server load by lengthening the scan duration)' => __('Use low resource scanning (reduces server load by lengthening the scan duration)', 'wordfence'),
			'Use New 2FA' => __('Use New 2FA', 'wordfence'),
			'Use one of these %s codes to log in if you are unable to access your phone. Codes are 16 characters long, plus optional spaces. Each one may be used only once.' => /* translators: 2FA backup codes. */ __('Use one of these %s codes to log in if you are unable to access your phone. Codes are 16 characters long, plus optional spaces. Each one may be used only once.', 'wordfence'),
			'Use one of these %s codes to log in if you lose access to your authenticator device. Codes are 16 characters long, plus optional spaces. Each one may be used only once.' => /* translators: 2FA backup codes. */ __('Use one of these %s codes to log in if you lose access to your authenticator device. Codes are 16 characters long, plus optional spaces. Each one may be used only once.', 'wordfence'),
			'Use only IPv4 to start scans' => __('Use only IPv4 to start scans', 'wordfence'),
			'Use PHP\'s built in REMOTE_ADDR and don\'t use anything else. Very secure if this is compatible with your site.' => __('Use PHP\'s built in REMOTE_ADDR and don\'t use anything else. Very secure if this is compatible with your site.', 'wordfence'),
			'Use preferred start time' => __('Use preferred start time', 'wordfence'),
			'Use Recommended Value' => __('Use Recommended Value', 'wordfence'),
			'Use the Cloudflare "CF-Connecting-IP" HTTP header to get a visitor IP. Only use if you\'re using Cloudflare.' => __('Use the Cloudflare "CF-Connecting-IP" HTTP header to get a visitor IP. Only use if you\'re using Cloudflare.', 'wordfence'),
			'Use the X-Forwarded-For HTTP header. Only use if you have a front-end proxy or spoofing may result.' => __('Use the X-Forwarded-For HTTP header. Only use if you have a front-end proxy or spoofing may result.', 'wordfence'),
			'Use the X-Real-IP HTTP header. Only use if you have a front-end proxy or spoofing may result.' => __('Use the X-Real-IP HTTP header. Only use if you have a front-end proxy or spoofing may result.', 'wordfence'),
			'User' => __('User', 'wordfence'),
			'User Agent' => __('User Agent', 'wordfence'),
			'User Email' => __('User Email', 'wordfence'),
			'User ID' => __('User ID', 'wordfence'),
			'User & Option Audit' => __('User & Option Audit', 'wordfence'),
			'Username' => __('Username', 'wordfence'),
			'Users Checked' => __('Users Checked', 'wordfence'),
			'Very strict. May cause false positives.' => __('Very strict. May cause false positives.', 'wordfence'),
			'Verified Google crawlers will not be rate-limited' => __('Verified Google crawlers will not be rate-limited', 'wordfence'),
			'View' => __('View', 'wordfence'),
			'View Additional Detail' => __('View Additional Detail', 'wordfence'),
			'View Differences' => __('View Differences', 'wordfence'),
			'View File' => __('View File', 'wordfence'),
			'View Customization' => __('View Customization', 'wordfence'),
			'View full log' => __('View full log', 'wordfence'),
			'View log' => __('View log', 'wordfence'),
			'View Option' => __('View Option', 'wordfence'),
			'View Updates' => __('View Updates', 'wordfence'),
			'Visit Wordfence Central' => __('Visit Wordfence Central', 'wordfence'),
			'Vulnerability Information' => __('Vulnerability Information', 'wordfence'),
			'Vulnerability Scan' => __('Vulnerability Scan', 'wordfence'),
			'Vulnerability Severity' => __('Vulnerability Severity', 'wordfence'),
			'WAF Status' => __('WAF Status', 'wordfence'),
			'WAF Currently in Learning Mode' => __('WAF Currently in Learning Mode', 'wordfence'),
			'Warning' => __('Warning', 'wordfence'),
			'WARNING' => __('WARNING', 'wordfence'),
			'Waiting for Changes' => __('Waiting for Changes', 'wordfence'),
			'Waiting for it to take effect. This may take up to %s.' => /* translators: Time duration. */ __('Waiting for it to take effect. This may take up to %s.', 'wordfence'),
			'Wednesday' => __('Wednesday', 'wordfence'),
			'Weekdays' => __('Weekdays', 'wordfence'),
			'Weekends' => __('Weekends', 'wordfence'),
			'When you first install the Wordfence Web Application Firewall, it will be in learning mode. This allows Wordfence to learn about your site so that we can understand how to protect it and how to allow normal visitors through the firewall. We recommend you let Wordfence learn for a week before you enable the firewall.' => __('When you first install the Wordfence Web Application Firewall, it will be in learning mode. This allows Wordfence to learn about your site so that we can understand how to protect it and how to allow normal visitors through the firewall. We recommend you let Wordfence learn for a week before you enable the firewall.', 'wordfence'),
			'What to do when we block someone' => __('What to do when we block someone', 'wordfence'),
			'What to Block' => __('What to Block', 'wordfence'),
			'WHOIS LOOKUP' => __('WHOIS LOOKUP', 'wordfence'),
			'We are about to change your <em>.htaccess</em> file. Please make a backup of this file before proceeding.' => __('We are about to change your <em>.htaccess</em> file. Please make a backup of this file before proceeding.', 'wordfence'),
			'We are excited to announce the release of a completely rebuilt two-factor authentication (2FA) feature within Wordfence. 2FA is an important layer of security that protects you from password guessing and credential stuffing attacks. Previously a Premium-only feature, it is now available for sites running the free version of Wordfence. You are now able to enable 2FA for any role, we’ve added a number of important security features, and we’ve significantly improved the admin interface.' => __('We are excited to announce the release of a completely rebuilt two-factor authentication (2FA) feature within Wordfence. 2FA is an important layer of security that protects you from password guessing and credential stuffing attacks. Previously a Premium-only feature, it is now available for sites running the free version of Wordfence. You are now able to enable 2FA for any role, we’ve added a number of important security features, and we’ve significantly improved the admin interface.', 'wordfence'),
			'We can\'t modify your .htaccess file for you because: %s' => /* translators: Error message. */ __('We can\'t modify your .htaccess file for you because: %s', 'wordfence'),
			'We encountered a problem' => __('We encountered a problem', 'wordfence'),
			'We encountered an error trying load more data.' => __('We encountered an error trying load more data.', 'wordfence'),
			'We failed to send a termination request.' => __('We failed to send a termination request.', 'wordfence'),
			'We have updated our policies. To continue using Wordfence, you will need to read and agree to the Wordfence License Terms and Conditions, the Services Subscription Agreement, and Terms of Service, and read and acknowledge the Wordfence Privacy Policy by clicking Review.' => __('We have updated our policies. To continue using Wordfence, you will need to read and agree to the Wordfence License Terms and Conditions, the Services Subscription Agreement, and Terms of Service, and read and acknowledge the Wordfence Privacy Policy by clicking Review.', 'wordfence'),
			'We have updated our policies. To continue using Wordfence, you will need to read and agree to the <a href="%1$s" target="_blank" rel="noopener noreferrer">Wordfence License Terms and Conditions<span class="screen-reader-text"> (opens in new tab)</span></a>, the <a href="%2$s" rel="noopener noreferrer" target="_blank">Services Subscription Agreement<span class="screen-reader-text"> (opens in new tab)</span></a>, and <a href="%3$s" target="_blank" rel="noopener noreferrer">Terms of Service<span class="screen-reader-text"> (opens in new tab)</span></a>, and read and acknowledge the <a href="%4$s" target="_blank" rel="noopener noreferrer">Wordfence Privacy Policy<span class="screen-reader-text"> (opens in new tab)</span></a>.' => /* translators: 1. License Terms and Conditions URL; 2. Services Subscription Agreement URL; 3. Terms of Service URL; 4. Privacy Policy URL */__('We have updated our policies. To continue using Wordfence, you will need to read and agree to the <a href="%1$s" target="_blank" rel="noopener noreferrer">Wordfence License Terms and Conditions<span class="screen-reader-text"> (opens in new tab)</span></a>, the <a href="%2$s" rel="noopener noreferrer" target="_blank">Services Subscription Agreement<span class="screen-reader-text"> (opens in new tab)</span></a>, and <a href="%3$s" target="_blank" rel="noopener noreferrer">Terms of Service<span class="screen-reader-text"> (opens in new tab)</span></a>, and read and acknowledge the <a href="%4$s" target="_blank" rel="noopener noreferrer">Wordfence Privacy Policy<span class="screen-reader-text"> (opens in new tab)</span></a>.', 'wordfence'),
			'We\'ve preselected your server configuration based on our tests, but if you know your web server\'s configuration, please select it now.' => __('We\'ve preselected your server configuration based on our tests, but if you know your web server\'s configuration, please select it now.', 'wordfence'),
			'We\'ve preselected your server configuration based on our tests, but if you know your web server\'s configuration, please select it now. You can also choose "Manual Configuration" for alternate installation details.' => __('We\'ve preselected your server configuration based on our tests, but if you know your web server\'s configuration, please select it now. You can also choose "Manual Configuration" for alternate installation details.', 'wordfence'),
			'We successfully exported your site options. To import your site options on another site, copy and paste the token below into the import text box on the destination site. Keep this token secret – it is like a password. If anyone else discovers the token it will allow them to import your options excluding your license.' => __('We successfully exported your site options. To import your site options on another site, copy and paste the token below into the import text box on the destination site. Keep this token secret – it is like a password. If anyone else discovers the token it will allow them to import your options excluding your license.', 'wordfence'),
			'We successfully imported the site options.' => __('We successfully imported the site options.', 'wordfence'),
			'Web Application Firewall (WAF)' => __('Web Application Firewall (WAF)', 'wordfence'),
			'Web Application Firewall' => __('Web Application Firewall', 'wordfence'),
			'Web Application Firewall Status' => __('Web Application Firewall Status', 'wordfence'),
			'Where to email alerts' => __('Where to email alerts', 'wordfence'),
			'Whois Lookup' => __('Whois Lookup', 'wordfence'),
			'Wordfence Assistant' => __('Wordfence Assistant', 'wordfence'),
			'Wordfence Assistant Present' => __('Wordfence Assistant Present', 'wordfence'),
			'Wordfence Login Security' => __('Wordfence Login Security', 'wordfence'),
			'Wordfence Login Security Present' => __('Wordfence Login Security Present', 'wordfence'),
			'Wordfence automatically allowlists <a href="%s" target="_blank" rel="noopener noreferrer">private networks<span class="screen-reader-text"> (opens in new tab)</span></a> because these are not routable on the public Internet.' => /* translators: support URL */ __('Wordfence automatically allowlists <a href="%s" target="_blank" rel="noopener noreferrer">private networks<span class="screen-reader-text"> (opens in new tab)</span></a> because these are not routable on the public Internet.', 'wordfence'),
			'Wordfence Central' => __('Wordfence Central', 'wordfence'),
			'Wordfence Central allows you to manage Wordfence on multiple sites from one location. It makes security monitoring and configuring Wordfence easier.' => __('Wordfence Central allows you to manage Wordfence on multiple sites from one location. It makes security monitoring and configuring Wordfence easier.', 'wordfence'),
			'Wordfence Central Status' => __('Wordfence Central Status', 'wordfence'),
			'Wordfence country blocking is designed to stop an attack, prevent content theft, or end malicious activity that originates from a geographic region in less than 1/300,000th of a second. Blocking countries who are regularly creating failed logins, a large number of page not found errors, and are clearly engaged in malicious activity is an effective way to protect your site during an attack.' => __('Wordfence country blocking is designed to stop an attack, prevent content theft, or end malicious activity that originates from a geographic region in less than 1/300,000th of a second. Blocking countries who are regularly creating failed logins, a large number of page not found errors, and are clearly engaged in malicious activity is an effective way to protect your site during an attack.', 'wordfence'),
			'Wordfence Firewall & Care License Enabled' => __('Wordfence Firewall & Care License Enabled', 'wordfence'),
			'Wordfence Firewall & Premium Enabled' => __('Wordfence Firewall & Premium Enabled', 'wordfence'),
			'Wordfence Firewall & Response License Enabled' => __('Wordfence Firewall & Response License Enabled', 'wordfence'),
			'Wordfence Firewall Activated' => __('Wordfence Firewall Activated', 'wordfence'),
			'Wordfence Firewall Deactivated' => __('Wordfence Firewall Deactivated', 'wordfence'),
			'Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future.' => /* translators: URL. */ __('Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future.', 'wordfence'),
			'Wordfence Global Options' => __('Wordfence Global Options', 'wordfence'),
			'Wordfence is working...' => __('Wordfence is working...', 'wordfence'),
			'Wordfence lets you take control of protecting your site with powerful blocking features. Block traffic based on IP, IP range, hostname, browser, or referrer. Country blocking is available for Premium customers.' => __('Wordfence lets you take control of protecting your site with powerful blocking features. Block traffic based on IP, IP range, hostname, browser, or referrer. Country blocking is available for Premium customers.', 'wordfence'),
			'Wordfence License' => __('Wordfence License', 'wordfence'),
			'Wordfence Live Traffic shows you what is happening on your site in real-time, including user logins, hack attempts, and requests that were blocked by the Wordfence Firewall. You can choose to log security-related traffic only or all traffic. Traffic is logged directly on the server, which means it includes visits that don\'t execute JavaScript. Google and other JavaScript-based analytics packages typically only show visits from browsers that are operated by a human, while Live Traffic can show visits from crawlers like Google and Bing.' => __('Wordfence Live Traffic shows you what is happening on your site in real-time, including user logins, hack attempts, and requests that were blocked by the Wordfence Firewall. You can choose to log security-related traffic only or all traffic. Traffic is logged directly on the server, which means it includes visits that don\'t execute JavaScript. Google and other JavaScript-based analytics packages typically only show visits from browsers that are operated by a human, while Live Traffic can show visits from crawlers like Google and Bing.', 'wordfence'),
			'Wordfence Protection Activated' => __('Wordfence Protection Activated', 'wordfence'),
			'Wordfence protects your site from password-guessing attacks by locking out attackers and helping you avoid weak passwords.' => __('Wordfence protects your site from password-guessing attacks by locking out attackers and helping you avoid weak passwords.', 'wordfence'),
			'Wordfence Scan & Care License Enabled' => __('Wordfence Scan & Care License Enabled', 'wordfence'),
			'Wordfence Scan & Premium Enabled' => __('Wordfence Scan & Premium Enabled', 'wordfence'),
			'Wordfence Scan & Response License Enabled' => __('Wordfence Scan & Response License Enabled', 'wordfence'),
			'Wordfence Scan Deactivated' => __('Wordfence Scan Deactivated', 'wordfence'),
			'Wordfence Scan Enabled' => __('Wordfence Scan Enabled', 'wordfence'),
			'Wordfence will make one attempt to resume each failed scan stage. This scan may recover if this attempt is successful.' => __('Wordfence will make one attempt to resume each failed scan stage. This scan may recover if this attempt is successful.', 'wordfence'),
			'Wordfence will make up to %d attempts to resume each failed scan stage. This scan may recover if one of these attempts is successful.' => /* translators: quantity. */ __('Wordfence will make up to %d attempts to resume each failed scan stage. This scan may recover if one of these attempts is successful.', 'wordfence'),
			'Wordfence\'s terms of service and privacy policy have changed' => __('Wordfence\'s terms of service and privacy policy have changed', 'wordfence'),
			'WordPress Configuration File' => __('WordPress Configuration File', 'wordfence'),
			'Would you like WordPress security and vulnerability alerts sent to you via email?' => __('Would you like WordPress security and vulnerability alerts sent to you via email?', 'wordfence'),
			'Yes' => __('Yes', 'wordfence'),
			'Yes Please' => __('Yes Please', 'wordfence'),
			'You can <a class="wf-onboarding-link" href="%s" target="_blank">get a new free license<span class="screen-reader-text">(opens in new tab)</span></a> for this site directly, or click the "Get a free license" button at the top of the Licenses page when logged in to wordfence.com if you need more than one.' => /* translators: registration URL */ __('You can <a class="wf-onboarding-link" href="%s" target="_blank">get a new free license<span class="screen-reader-text">(opens in new tab)</span></a> for this site directly, or click the "Get a free license" button at the top of the Licenses page when logged in to wordfence.com if you need more than one.', 'wordfence'),
			'You have successfully installed a free license.' => __('You have successfully installed a free license.', 'wordfence'),
			'You must select either "Yes" or "No"' => __('You must select either "Yes" or "No"', 'wordfence'),
			'You will be reminded again in 12 hours.' => __('You will be reminded again in 12 hours.', 'wordfence'),
			'Your IP with this setting' => __('Your IP with this setting', 'wordfence'),
			'You are currently running the WAF from another WordPress installation. This option can be changed once you configure the firewall to run correctly on this site.' => __('You are currently running the WAF from another WordPress installation. This option can be changed once you configure the firewall to run correctly on this site.', 'wordfence'),
			'You are currently running the WAF from another WordPress installation. These rules can be disabled or enabled once you configure the firewall to run correctly on this site.' => __('You are currently running the WAF from another WordPress installation. These rules can be disabled or enabled once you configure the firewall to run correctly on this site.', 'wordfence'),
			'You are currently running the Wordfence Web Application Firewall from another WordPress installation.' => __('You are currently running the Wordfence Web Application Firewall from another WordPress installation.', 'wordfence'),
			'You\'ve optimized configurations for this feature! If you want to learn more about how this score is determined, click the link below.' => __('You\'ve optimized configurations for this feature! If you want to learn more about how this score is determined, click the link below.', 'wordfence'),
			'You are currently running the Wordfence Web Application Firewall from another WordPress installation. Please configure the firewall to run correctly on this site.' => __('You are currently running the Wordfence Web Application Firewall from another WordPress installation. Please configure the firewall to run correctly on this site.', 'wordfence'),
			'You are currently running the Wordfence Web Application Firewall from another WordPress installation. Please <a href="%s">click here</a> to configure the Firewall to run correctly on this site.' => /* translators: configuration URL */ __('You are currently running the Wordfence Web Application Firewall from another WordPress installation. Please <a href="%s">click here</a> to configure the Firewall to run correctly on this site.', 'wordfence'),
			'You are running the LiteSpeed web server and Wordfence can\'t determine whether "noabort" is set. Please verify that the environmental variable "noabort" is set for the local site, or the server\'s global External Application Abort is set to "No Abort".' => __('You are running the LiteSpeed web server and Wordfence can\'t determine whether "noabort" is set. Please verify that the environmental variable "noabort" is set for the local site, or the server\'s global External Application Abort is set to "No Abort".', 'wordfence'),
			'You are using Nginx as your web server. You\'ll need to disable autoindexing in your nginx.conf. See the <a target=\'_blank\'  rel=\'noopener noreferrer\' href=\'https://nginx.org/en/docs/http/ngx_http_autoindex_module.html\'>Nginx docs for more info</a> on how to do this.' => __('You are using Nginx as your web server. You\'ll need to disable autoindexing in your nginx.conf. See the <a target=\'_blank\'  rel=\'noopener noreferrer\' href=\'https://nginx.org/en/docs/http/ngx_http_autoindex_module.html\'>Nginx docs for more info</a> on how to do this.', 'wordfence'),
			'You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually delete or hide those files.' => __('You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually delete or hide those files.', 'wordfence'),
			'You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually modify your php.ini to disable <em>display_error</em>' => __('You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually modify your php.ini to disable <em>display_error</em>', 'wordfence'),
			'You can find more details on alternative setup steps, including installation on SiteGround or for multiple sites sharing a single php.ini, <a href="%s" target="_blank" rel="noopener noreferrer">in our documentation<span class="screen-reader-text"> (opens in new tab)</span></a>.' => /* translators: support URL */ __('You can find more details on alternative setup steps, including installation on SiteGround or for multiple sites sharing a single php.ini, <a href="%s" target="_blank" rel="noopener noreferrer">in our documentation<span class="screen-reader-text"> (opens in new tab)</span></a>.', 'wordfence'),
			'You can log in to <a href="%s" target="_blank" rel="noopener noreferrer">wordfence.com<span class="screen-reader-text"> (opens in new tab)</span></a> to accept the updated terms and privacy policy for all of your license keys at once.' => /* translators: wordfence.com URL */ __('You can log in to <a href="%s" target="_blank" rel="noopener noreferrer">wordfence.com<span class="screen-reader-text"> (opens in new tab)</span></a> to accept the updated terms and privacy policy for all of your license keys at once.', 'wordfence'),
			'You can proceed with the installation and we will include this from within our <code>wordfence-waf.php</code> file which should maintain compatibility with your site, or you can opt to override the existing PHP setting.' => __('You can proceed with the installation and we will include this from within our <code>wordfence-waf.php</code> file which should maintain compatibility with your site, or you can opt to override the existing PHP setting.', 'wordfence'),
			'You forgot to include a reason you\'re blocking this IP range. We ask you to include this for your own record keeping.' => __('You forgot to include a reason you\'re blocking this IP range. We ask you to include this for your own record keeping.', 'wordfence'),
			'You have unsaved changes to your options. If you leave this page, those changes will be lost.' => __('You have unsaved changes to your options. If you leave this page, those changes will be lost.', 'wordfence'),
			'You may close this alert and try again later, or click the button below to register for a new free Wordfence license.' => __('You may close this alert and try again later, or click the button below to register for a new free Wordfence license.', 'wordfence'),
			'You\'ll find this icon throughout the plugin. Clicking it will show you the options and features for each section of Wordfence. From the dashboard, you can find the Global Options for Wordfence such as alerts, automatic updates, and managing your site\'s Premium License.' => __('You\'ll find this icon throughout the plugin. Clicking it will show you the options and features for each section of Wordfence. From the dashboard, you can find the Global Options for Wordfence such as alerts, automatic updates, and managing your site\'s Premium License.', 'wordfence'),
			'Your .htaccess has been updated successfully. Please verify your site is functioning normally.' => __('Your .htaccess has been updated successfully. Please verify your site is functioning normally.', 'wordfence'),
			'Your Wordfence activity log was sent to %s' => /* translators: Email address. */ __('Your Wordfence activity log was sent to %s', 'wordfence'),
			'Your Wordfence License' => __('Your Wordfence License', 'wordfence'),
			'Your rules have been updated successfully.' => __('Your rules have been updated successfully.', 'wordfence'),
			'Your rules have been updated successfully. You are currently using the free version of Wordfence. Upgrade to Wordfence premium to have your rules updated automatically as new threats emerge. <a href="https://www.wordfence.com/wafUpdateRules1/wordfence-signup/">Click here to purchase a premium license</a>. <em>Note: Your rules will still update every 30 days as a free user.</em>' => __('Your rules have been updated successfully. You are currently using the free version of Wordfence. Upgrade to Wordfence premium to have your rules updated automatically as new threats emerge. <a href="https://www.wordfence.com/wafUpdateRules1/wordfence-signup/">Click here to purchase a premium license</a>. <em>Note: Your rules will still update every 30 days as a free user.</em>', 'wordfence'),
			'Your test email was sent to the requested email address. The result we received from the WordPress wp_mail() function was:' => __('Your test email was sent to the requested email address. The result we received from the WordPress wp_mail() function was:', 'wordfence'),
			'blocked by firewall' => __('blocked by firewall', 'wordfence'),
			'blocked by firewall for %s' => /* translators: Reason for firewall action. */ __('blocked by firewall for %s', 'wordfence'),
			'blocked by real-time IP blocklist' => __('blocked by real-time IP blocklist', 'wordfence'),
			'blocked by the Wordfence Security Network' => __('blocked by the Wordfence Security Network', 'wordfence'),
			'blocked for %s' => /* translators: Reason for firewall action. */ __('blocked for %s', 'wordfence'),
			'locked out from logging in' => __('locked out from logging in', 'wordfence'),
		);
	}
	
	/**
	 * Returns an array of constants/initial state values for use on the Javascript frontend to avoid hardcoding values.
	 * 
	 * @return array
	 */
	public static function WordfenceJSConstants() {
		$response = array();
		$response['assets'] = array(
			'images' => array(
				'central_logo' => wfUtils::getBaseURL() . 'images/wf-central-logo.svg',
				'country_blocking_map' => wfUtils::getBaseURL() . 'images/country-map.svg',
				'loading' => wfUtils::getBaseURL() . 'images/loading_large.gif',
			),
		);
		
		require(__DIR__ . '/wfVersionSupport.php'); /** @var $wfFeatureWPVersionAuditLog */
		require(ABSPATH . WPINC . '/version.php'); /** @var string $wp_version */
		$wpTooOld = version_compare($wp_version, $wfFeatureWPVersionAuditLog, '<');
		$response['auditlog'] = array(
			'modes' => array(
				'disabled' => wfAuditLog::AUDIT_LOG_MODE_DISABLED,
				'preview' => wfAuditLog::AUDIT_LOG_MODE_PREVIEW,
				'significant' => wfAuditLog::AUDIT_LOG_MODE_SIGNIFICANT,
				'all' => wfAuditLog::AUDIT_LOG_MODE_ALL,
			),
			'url' => array(
				'manage' => (function_exists('network_admin_url') && is_multisite()) ? network_admin_url('admin.php?page=WordfenceAuditLog') : admin_url('admin.php?page=WordfenceAuditLog'),
			),
			'wpTooOld' => $wpTooOld,
		);
		
		$response['blocking'] = array(
			'limit' => array(
				'per_page' => WORDFENCE_BLOCKED_IPS_PER_PAGE,
			),
		);
		
		$response['central'] = array(
			'flag' => array(
				'marker_user' => wfRESTConfigController::WF_CENTRAL_USER_MARKER,
				'marker_central' => wfRESTConfigController::WF_CENTRAL_FAILURE_MARKER,
			),
			'state' => array(
				'partial_connection' => wfCentral::isPartialConnection(),
				'supported' => wfCentral::isSupported(),
				'show_ui' => wfConfig::get('showWfCentralUI', false),
			),
			'url' => array(
				'connect' => WORDFENCE_CENTRAL_URL_SEC . '?newsite=' . esc_url(home_url()),
				'main' => WORDFENCE_CENTRAL_URL_SEC,
				'resume' => WORDFENCE_CENTRAL_URL_SEC . '/sites/connection-issues?complete-setup=' . esc_url(wfConfig::get('wordfenceCentralSiteID')),
			),
		);
		
		require(WORDFENCE_PATH . 'lib/wfBulkCountries.php'); /** @var array $wfBulkCountries */
		asort($wfBulkCountries);
		$response['countries'] = $wfBulkCountries;
		
		$response['debug'] = wfConfig::getBool('debugOn', false);
		
		$firewall = new wfFirewall();
		$wafData = array(
			'learningMode' => false,
			'rules' => array(),
			'whitelistedURLParams' => array(),
			'disabledRules' => array(),
			'isPaid' => (bool) wfConfig::get('isPaid', 0),
		);
		$nextUpdate = PHP_INT_MAX;
		$learningModeGracePeriodEnabled = false;
		$learningModeGracePeriod = 0;
		$disableWAFBlacklistBlocking = false;
		$avoidPHPInput = false;
		try {
			$wafData = wordfence::_getWAFData();
			
			$cron = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('cron', null, 'livewaf');
			foreach ($cron as $index => $event) { /** @var wfWAFCronEvent $event */
				if ($event instanceof wfWAFCronFetchRulesEvent) {
					$event->setWaf(wfWAF::getInstance());
					if (!$event->isInPast()) {
						$nextUpdate = min($nextUpdate, $event->getFireTime());
					}
				}
			}
			
			$learningModeGracePeriodEnabled = wfUtils::truthyToBoolean(wfWAF::getInstance()->getStorageEngine()->getConfig('learningModeGracePeriodEnabled', false));
			$learningModeGracePeriod = (int) wfWAF::getInstance()->getStorageEngine()->getConfig('learningModeGracePeriod', 0);
			$disableWAFBlacklistBlocking = wfUtils::truthyToBoolean(wfWAF::getInstance()->getStorageEngine()->getConfig('disableWAFBlacklistBlocking', false));
			$avoidPHPInput = wfUtils::truthyToBoolean(wfWAF::getInstance()->getStorageEngine()->getConfig('avoid_php_input', false));
			
			if ($learningModeGracePeriod < time()) {
				$learningModeGracePeriod = time() + (86400 * 7);
			}
		}
		catch (wfWAFStorageFileConfigException $e) { // We don't have anywhere to write files in this scenario. Let's notify the user to update the permissions.
			$storageExceptionMessage = $e->getMessage() . ' ' . sprintf(/* translators: WordPress admin panel URL. */ __('<a href="%s">Click here</a> to rebuild the configuration file.', 'wordfence'), esc_url(wfUtils::maybeNetworkAdminURL('admin.php?page=WordfenceWAF&wafconfigrebuild=1' . '&waf-nonce=' . wp_create_nonce('wafconfigrebuild'))));
		}
		catch (wfWAFStorageFileException $e) { // We don't have anywhere to write files in this scenario. Let's notify the user to update the permissions.
			$logPath = str_replace(ABSPATH, '~/', WFWAF_LOG_PATH);
			$storageExceptionMessage = sprintf(/* translators: File path. */ __('We were unable to write to %s which the WAF uses for storage. Please update permissions on the parent directory so the web server can write to it.', 'wordfence'), $logPath);
		}
		catch (wfWAFStorageEngineMySQLiException $e) {
			$storageExceptionMessage = __('An error occurred when fetching the WAF configuration from the database.', 'wordfence') . ' <pre>' . esc_html($e->getMessage()) . '</pre>';
		}
		
		if (WF_IS_WP_ENGINE || WF_IS_PRESSABLE || WF_IS_FLYWHEEL) {
			$currentAutoPrependFile = wordfence::getWAFBootstrapPath();
		}
		else {
			$currentAutoPrependFile = ini_get('auto_prepend_file');
		}
		
		if ($currentAutoPrependFile && file_exists($currentAutoPrependFile)) {
			$contents = file_get_contents($currentAutoPrependFile);
			$refersToWAF = preg_match('/define\s*\(\s*(["\'])WFWAF_LOG_PATH\1\s*,\s*(__DIR__\s*\.\s*)?(["\']).+?\3\s*\)\s*/', $contents);
		}

		$response['waf'] = array(
			'modes' => array(
				'disabled' => wfFirewall::FIREWALL_MODE_DISABLED,
				'learning_mode' => wfFirewall::FIREWALL_MODE_LEARNING,
				'enabled' => wfFirewall::FIREWALL_MODE_ENABLED,
			),
			'mode' => $firewall->firewallMode(),
			'ruleModes' => array(
				'community' => wfFirewall::RULE_MODE_COMMUNITY,
				'premium' => wfFirewall::RULE_MODE_PREMIUM,
			),
			'ruleMode' => $firewall->ruleMode(),
			'blacklistModes' => array(
				'disabled' => wfFirewall::BLACKLIST_MODE_DISABLED,
				'enabled' => wfFirewall::BLACKLIST_MODE_ENABLED,
			),
			'blacklistMode' => $firewall->blacklistMode(),
			'is_extended' => $firewall->protectionMode() == wfFirewall::PROTECTION_MODE_EXTENDED,
			'is_premium_rules' => $firewall->ruleMode() === wfFirewall::RULE_MODE_PREMIUM,
			'learning_mode' => $firewall->learningModeStatus(),
			'debug' => WFWAF_DEBUG,
			'enabled' => WFWAF_ENABLED,
			'is_subdirectory' => $firewall->isSubDirectoryInstallation(),
			'wafData' => $wafData,
			'storageExceptionMessage' => $storageExceptionMessage ?? null,
			'nextUpdate' => (int) $nextUpdate,
			'bootstrapPath' => wordfence::getWAFBootstrapPath(),
			'autoPrependRefersToWAF' => $refersToWAF ?? false,
			'overallPercentage' => $firewall->overallStatus(),
			'overallStatusList' => $firewall->statusList(),
			'statusPercentage' => $firewall->wafStatus(),
			'statusList' => $firewall->wafStatusList(),
			'ruleStatusPercentage' => $firewall->ruleStatus(),
			'rulesStatusList' => $firewall->wafStatusList('rules'),
			'blacklistStatusPercentage' => $firewall->blacklistStatus(),
			'blacklistStatusList' => $firewall->wafStatusList('blacklist'),
			'bruteForceStatusPercentage' => $firewall->bruteForceStatus(),
			'bruteForceStatusList' => $firewall->bruteForceStatusList(),
		);
		
		$response['license'] = array(
			'current' => array(
				'type' => wfLicense::current()->getType(),
				'minimum_premium' => wfLicense::current()->isAtLeastPremium(),
				'below_response' => wfLicense::current()->isBelowResponse(),
				'below_care' => wfLicense::current()->isBelowCare(),
				'exp_days' => wfConfig::get('keyExpDays'),
				'autorenew_enabled' => wfConfig::getBool('premiumAutoRenew'),
				'next_renew' => floor(((int) wfConfig::get('premiumNextRenew') - time()) / 86400),
				'payment_method_expiring' => wfConfig::getBool('premiumPaymentExpiring'),
				'payment_method_expired' => wfConfig::getBool('premiumPaymentExpired'),
				'payment_method_missing' => wfConfig::getBool('premiumPaymentMissing'),
				'payment_method_hold' => wfConfig::getBool('premiumPaymentHold'),
			),
			'has_conflict' => wfLicense::current()->hasConflict(),
			'is_deactivated' => wfLicense::current()->getKeyType() === wfLicense::KEY_TYPE_PAID_DELETED,
			'is_expired' => wfLicense::current()->isExpired(),
			'labels' => array(
				'free' => __('Free', 'wordfence'),
				'premium' => __('Premium', 'wordfence'),
				'care' => __('Care', 'wordfence'),
				'response' => __('Response', 'wordfence'),
			),
			'types' => array(
				'free' => wfLicense::TYPE_FREE,
				'premium' => wfLicense::TYPE_PREMIUM,
				'care' => wfLicense::TYPE_CARE,
				'response' => wfLicense::TYPE_RESPONSE,
			),
		);
		
		$hostSetting = false;
		$recordAll = wfConfig::liveTrafficEnabled($hostSetting);
		$response['livetraffic'] = array(
			'limit' => array(
				'identical' => wfRateLimit::identicalHumanBotRateLimits(),
			),
			'recording' => array(
				'host_setting' => $hostSetting,
				'record_all' => $recordAll,
			),
		);
		
		$response['marketing'] = array(
			'url' => array(
				'scanGetHelp' => wfLicense::current()->getSupportUrl('scanGetHelp'),
				'scanGetHelpWordfenceCare' => 'https://www.wordfence.com/gnl1scanGetHelp/products/wordfence-care/',
			),
		);
		
		$response['plugin'] = array(
			'mode' => array(
				'livetraffic' => array(
					'active' => 'liveTraffic',
					'paused' => 'liveTraffic_paused',
				),
			),
			'nonce' => array_merge(wordfence::ajaxNonces(), array(
				'waf_nonce' => array('nonce' => wp_create_nonce('wafconfigrebuild'), 'actions' => array()),
				'install_waf_auto_prepend' => array('nonce' => wp_create_nonce('wfWAFAutoPrepend'), 'actions' => array()),
				'uninstall_waf_auto_prepend' => array('nonce' => wp_create_nonce('wfWAFRemoveAutoPrepend'), 'actions' => array()),
			)),
			'url' => array( //Where needed, these gain their nonce from `$dataStore.$wordfence.nonce['wp-ajax']`
				'scan_activity_log' => wfUtils::getSiteBaseURL() . '?_wfsf=viewActivityLog',
				'waf_debug_base' => wfUtils::getSiteBaseURL() . '?_wfsf=debugWAF',
				'export_blocked_ips' => wfUtils::getSiteBaseURL() . '?_wfsf=blockedIPs',
				'ip_traffic' => wfUtils::getSiteBaseURL() . '?_wfsf=IPTraf',
				'diff_file' => wfUtils::getSiteBaseURL() . '?_wfsf=diff',
				'view_file' => wfUtils::getSiteBaseURL() . '?_wfsf=view',
				'view_option' => wfUtils::getSiteBaseURL() . '?_wfsf=viewOption',
				'download_file' => wfUtils::getSiteBaseURL() . '?_wfsf=download',
				'admin_ajax' => admin_url('admin-ajax.php'),
				'download_htaccess_file' => admin_url('admin-ajax.php') . '?action=wordfence_downloadHtaccess',
				'export_diagnostics' => admin_url('admin-ajax.php') . '?action=wordfence_exportDiagnostics',
				'configure_waf' => wfUtils::maybeNetworkAdminURL('admin.php?page=WordfenceWAF&subpage=waf_options#configureAutoPrepend'), //Starts prompts to optimize
				'install_waf_download_backup_base' => wfUtils::maybeNetworkAdminURL('admin.php?page=WordfenceWAF&subpage=waf_options&action=configureAutoPrepend'), //Base URL for backup downloads on WAF install
				'uninstall_waf_download_backup_base' => wfUtils::maybeNetworkAdminURL('admin.php?page=WordfenceWAF&subpage=waf_options&action=removeAutoPrepend'), //Base URL for backup downloads on WAF uninstall
				'deactivate' => wfUtils::maybeNetworkAdminURL('plugins.php?wf_deactivate=true'),
				'waf_options' => wfUtils::maybeNetworkAdminURL('admin.php?page=WordfenceWAF&subpage=waf_options'),
				'waf_options_from_dashboard' => wfPage::pageURL(wfPage::PAGE_FIREWALL_OPTIONS, wfPage::PAGE_DASHBOARD),
				'waf_options_from_dashboard_options' => wfPage::pageURL(wfPage::PAGE_FIREWALL_OPTIONS, wfPage::PAGE_DASHBOARD_OPTIONS),
				'basic_waf_options' => wfUtils::maybeNetworkAdminURL('admin.php?page=WordfenceWAF&subpage=waf_options#waf-options-basic'),
				'advanced_waf_options' => wfUtils::maybeNetworkAdminURL('admin.php?page=WordfenceWAF&subpage=waf_options#waf-options-advanced'),
				'bruteforce_options' => wfUtils::maybeNetworkAdminURL('admin.php?page=WordfenceWAF&subpage=waf_options#waf-options-bruteforce'),
				'scan_options' => wfUtils::maybeNetworkAdminURL('admin.php?page=WordfenceScan&subpage=scan_options'),
				'scan_options_from_dashboard' => wfPage::pageURL(wfPage::PAGE_SCAN_OPTIONS, wfPage::PAGE_DASHBOARD),
				'scan_options_from_dashboard_options' => wfPage::pageURL(wfPage::PAGE_SCAN_OPTIONS, wfPage::PAGE_DASHBOARD_OPTIONS),
				'general_scan_options' => wfUtils::maybeNetworkAdminURL('admin.php?page=WordfenceScan&subpage=scan_options#wf-scanner-options-general'),
				'import_export_redirect' => wfUtils::maybeNetworkAdminURL('admin.php?page=WordfenceTools&subpage=importexport'),
				'login_security' => wfUtils::maybeNetworkAdminURL('admin.php?page=WFLS'),
				'dashboard' => wfPage::pageURL(wfPage::PAGE_DASHBOARD),
			),
			'active_disclosure_state' => wfPersistenceController::shared()->activeKeys(),
			'update_interval' => max(absint(wfConfig::getInt('actUpdateInterval', 2)), 2) * 1000, //ms
			'has_country_block' => wfBlock::hasCountryBlock(),
			'site_url' => wfUtils::wpSiteURL(),
			'ip' => array(
				'current' => wfUtils::getIP(),
				'preview' => wfUtils::getIPPreview(),
				'proxy_presets' => wfConfig::getJSON('ipResolutionList', new stdClass() /* ensure JSON object response */),
			),
			'user' => array(
				'id' => wp_get_current_user()->ID,
				'username' => wp_get_current_user()->user_login,
			),
			'server' => array(
				'env' => array(
					'noabort' => getenv('noabort'),
				),
				'software' => $_SERVER['SERVER_SOFTWARE'],
				'curl' => array(
					'supported' => wfUtils::isCurlSupported(),
				),
				'php' => array(
					'version' => wfUtils::cleanPHPVersion(),
					'auto_prepend_file' => ini_get('auto_prepend_file'),
					'user_ini' => ini_get('user_ini.filename') ? ini_get('user_ini.filename') : '.user.ini'
				),
				'host' => array(
					'is_wp_engine' => WF_IS_WP_ENGINE,
					'is_pressable' => WF_IS_PRESSABLE,
					'is_flywheel' => WF_IS_FLYWHEEL,
				),
			),
			'onboarding' => array(
				'stages' => array(
					'emails' => wfOnboardingController::ONBOARDING_EMAILS,
					'license' => wfOnboardingController::ONBOARDING_LICENSE,
					'skipped' => wfOnboardingController::ONBOARDING_SKIPPED,
				),
				'attempts' => array( //These keys are deliberately strings to avoid anything thinking we want numeric indexes
					'1' => wfConfig::get('onboardingAttempt1'),
					'2' => wfConfig::get('onboardingAttempt2'),
					'3' => wfConfig::get('onboardingAttempt3'),
				),
				'should_show' => array(
					'1' => wfOnboardingController::shouldShowAttempt1(),
					'2' => wfOnboardingController::shouldShowAttempt2(),
					'3' => wfOnboardingController::shouldShowAttempt3(),
				),
				'registration_link' => wfOnboardingController::shouldShowAnyAttempt() ? wfLicense::generateRegistrationLink() : null,
			),
		);
		
		$response['scanner'] = array(
			'current' => array(
				'display_type' => wfScanner::displayScanType(wfScanner::shared()->scanType()),
				'display_detail' => wfScanner::displayScanTypeDetail(wfScanner::shared()->scanType()),
			),
			'overallPercentage' => wfScanner::shared()->scanTypeStatus(),
			'overallStatusList' => wfScanner::shared()->scanTypeStatusList(),
			'scanTypePercentage' => wfScanner::shared()->scanTypeStatus(),
			'scanTypeStatusList' => wfScanner::shared()->scanTypeStatusList(),
			'reputationPercentage' => wfScanner::shared()->reputationStatus(),
			'reputationStatusList' => wfScanner::shared()->reputationStatusList(),
			'enabled' => wfScanner::shared()->isEnabled(),
			'signatureMode' => wfScanner::shared()->signatureMode(),
			'signatureModes' => array(
				'premium' => wfScanner::SIGNATURE_MODE_PREMIUM,
				'community' => wfScanner::SIGNATURE_MODE_COMMUNITY,
			),
			'failure' => array(
				'general' => wfIssues::SCAN_FAILED_GENERAL,
				'timeout' => wfIssues::SCAN_FAILED_TIMEOUT,
				'duration' => wfIssues::SCAN_FAILED_DURATION_REACHED,
				'versionchange' => wfIssues::SCAN_FAILED_VERSION_CHANGE,
				'forkfailed' => wfIssues::SCAN_FAILED_FORK_FAILED,
				'callbackfailed' => wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED,
				'starttimeout' => wfIssues::SCAN_FAILED_START_TIMEOUT,
				'sslunavailable' => wfIssues::SCAN_FAILED_API_SSL_UNAVAILABLE,
				'apifailed' => wfIssues::SCAN_FAILED_API_CALL_FAILED,
				'apiinvalid' => wfIssues::SCAN_FAILED_API_INVALID_RESPONSE,
				'apierror' => wfIssues::SCAN_FAILED_API_ERROR_RESPONSE,
			),
			'limit' => array(
				'duration' => wfConfig::getInt('scan_maxDuration') < 1 ? WORDFENCE_DEFAULT_MAX_SCAN_TIME : wfConfig::getInt('scan_maxDuration'),
				'resume_attempts' => wfScanMonitor::getConfiguredResumeAttempts(),
				'max_resume_attempts' => wfScanMonitor::MAX_RESUME_ATTEMPTS,
				'issues_per_page' => WORDFENCE_SCAN_ISSUES_PER_PAGE,
				'default_max_scan_time' => WORDFENCE_DEFAULT_MAX_SCAN_TIME,
				'min_execution_time' => WORDFENCE_SCAN_MIN_EXECUTION_TIME,
			),
			'schedule' => array(
				'mode' => array(
					'automatic' => wfScanner::SCAN_SCHEDULING_MODE_AUTOMATIC,
					'manual' => wfScanner::SCAN_SCHEDULING_MODE_MANUAL,
				),
				'manual' => array(
					'onceDaily' => wfScanner::MANUAL_SCHEDULING_ONCE_DAILY,
					'twiceDaily' => wfScanner::MANUAL_SCHEDULING_TWICE_DAILY,
					'everyOtherDay' => wfScanner::MANUAL_SCHEDULING_EVERY_OTHER_DAY,
					'weekdays' => wfScanner::MANUAL_SCHEDULING_WEEKDAYS,
					'weekends' => wfScanner::MANUAL_SCHEDULING_WEEKENDS,
					'oddDaysWE' => wfScanner::MANUAL_SCHEDULING_ODD_DAYS_WEEKENDS,
					'custom' => wfScanner::MANUAL_SCHEDULING_CUSTOM,
				),
			),
			'severity' => array(
				'critical' => wfIssues::SEVERITY_CRITICAL,
				'high' => wfIssues::SEVERITY_HIGH,
				'medium' => wfIssues::SEVERITY_MEDIUM,
				'low' => wfIssues::SEVERITY_LOW,
				'none' => wfIssues::SEVERITY_NONE,
			),
			'site_cleaning_issue_types' => array('file', 'checkGSB', 'checkSpamIP', 'commentBadURL', 'knownfile', 'optionBadURL', 'postBadTitle', 'postBadURL', 'spamvertizeCheck', 'suspiciousAdminUsers'),
			'stage' => array(
				'spamvertising' => wfScanner::STAGE_SPAMVERTISING_CHECKS,
				'spam'          => wfScanner::STAGE_SPAM_CHECK,
				'blacklist'     => wfScanner::STAGE_BLACKLIST_CHECK,
				'server'        => wfScanner::STAGE_SERVER_STATE,
				'changes'       => wfScanner::STAGE_FILE_CHANGES,
				'public'        => wfScanner::STAGE_PUBLIC_FILES,
				'malware'       => wfScanner::STAGE_MALWARE_SCAN,
				'content'       => wfScanner::STAGE_CONTENT_SAFETY,
				'password'      => wfScanner::STAGE_PASSWORD_STRENGTH,
				'vulnerability' => wfScanner::STAGE_VULNERABILITY_SCAN,
				'options'       => wfScanner::STAGE_OPTIONS_AUDIT,
			),
			'stage_status' => array(
				'pending' => wfScanner::STATUS_PENDING,
				'running' => wfScanner::STATUS_RUNNING,
				'running_warning' => wfScanner::STATUS_RUNNING_WARNING,
				'complete_success' => wfScanner::STATUS_COMPLETE_SUCCESS,
				'complete_warning' => wfScanner::STATUS_COMPLETE_WARNING,
				'premium' => wfScanner::STATUS_PREMIUM,
				'disabled' => wfScanner::STATUS_DISABLED,
			),
			'status' => array(
				'new' => wfIssues::STATUS_NEW,
				'ignorep' => wfIssues::STATUS_IGNOREP,
				'ignorec' => wfIssues::STATUS_IGNOREC,
			),
			'summary' => array(
				'total_users' => wfScanner::SUMMARY_TOTAL_USERS,
				'total_pages' => wfScanner::SUMMARY_TOTAL_PAGES,
				'total_posts' => wfScanner::SUMMARY_TOTAL_POSTS,
				'total_comments' => wfScanner::SUMMARY_TOTAL_COMMENTS,
				'total_categories' => wfScanner::SUMMARY_TOTAL_CATEGORIES,
				'total_tables' => wfScanner::SUMMARY_TOTAL_TABLES,
				'total_rows' => wfScanner::SUMMARY_TOTAL_ROWS,
				'scanned_posts' => wfScanner::SUMMARY_SCANNED_POSTS,
				'scanned_comments' => wfScanner::SUMMARY_SCANNED_COMMENTS,
				'scanned_files' => wfScanner::SUMMARY_SCANNED_FILES,
				'scanned_plugins' => wfScanner::SUMMARY_SCANNED_PLUGINS,
				'scanned_themes' => wfScanner::SUMMARY_SCANNED_THEMES,
				'scanned_users' => wfScanner::SUMMARY_SCANNED_USERS,
				'scanned_urls' => wfScanner::SUMMARY_SCANNED_URLS,
			),
			'type' => array(
				'quick' => wfScanner::SCAN_TYPE_QUICK,
				'limited' => wfScanner::SCAN_TYPE_LIMITED,
				'standard' => wfScanner::SCAN_TYPE_STANDARD,
				'highsensitivity' => wfScanner::SCAN_TYPE_HIGH_SENSITIVITY,
				'custom' => wfScanner::SCAN_TYPE_CUSTOM,
			),
			'type_preset_options' => array(
				'limited' => array_filter(wfScanner::limitedScanTypeOptions(), function($value) { return ($value === false || $value === true); }),
				'standard' => array_filter(wfScanner::standardScanTypeOptions(), function($value) { return ($value === false || $value === true); }),
				'highsensitivity' => array_filter(wfScanner::highSensitivityScanTypeOptions(), function($value) { return ($value === false || $value === true); }),
			),
		);
		
		$response['support'] = array(
			'url' => wfSupportController::supportURLs(),
		);
		
		$response['tour'] = array(
			'new' => array(
				wfOnboardingController::TOUR_DASHBOARD => wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_DASHBOARD),
				wfOnboardingController::TOUR_FIREWALL => wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_FIREWALL),
				wfOnboardingController::TOUR_SCAN => wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_SCAN),
				wfOnboardingController::TOUR_BLOCKING => wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_BLOCKING),
				wfOnboardingController::TOUR_LIVE_TRAFFIC => wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_LIVE_TRAFFIC),
				wfOnboardingController::TOUR_AUDIT_LOG => wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_AUDIT_LOG),
				wfOnboardingController::TOUR_LOGIN_SECURITY => wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_LOGIN_SECURITY),
			),
			'upgrade' => array(
				wfOnboardingController::TOUR_DASHBOARD => wfOnboardingController::shouldShowUpgradeTour(wfOnboardingController::TOUR_DASHBOARD),
				wfOnboardingController::TOUR_FIREWALL => wfOnboardingController::shouldShowUpgradeTour(wfOnboardingController::TOUR_FIREWALL),
				wfOnboardingController::TOUR_SCAN => wfOnboardingController::shouldShowUpgradeTour(wfOnboardingController::TOUR_SCAN),
				wfOnboardingController::TOUR_BLOCKING => wfOnboardingController::shouldShowUpgradeTour(wfOnboardingController::TOUR_BLOCKING),
				wfOnboardingController::TOUR_LIVE_TRAFFIC => wfOnboardingController::shouldShowUpgradeTour(wfOnboardingController::TOUR_LIVE_TRAFFIC),
				wfOnboardingController::TOUR_AUDIT_LOG => wfOnboardingController::shouldShowUpgradeTour(wfOnboardingController::TOUR_AUDIT_LOG),
				wfOnboardingController::TOUR_LOGIN_SECURITY => wfOnboardingController::shouldShowUpgradeTour(wfOnboardingController::TOUR_LOGIN_SECURITY),
			),
			'types' => array( //These are currently a tautology but provide consistency in case the constants change
				'dashboard' => wfOnboardingController::TOUR_DASHBOARD,
				'firewall' => wfOnboardingController::TOUR_FIREWALL,
				'scan' => wfOnboardingController::TOUR_SCAN,
				'blocking' => wfOnboardingController::TOUR_BLOCKING,
				'livetraffic' => wfOnboardingController::TOUR_LIVE_TRAFFIC,
				'auditlog' => wfOnboardingController::TOUR_AUDIT_LOG,
				'loginsecurity' => wfOnboardingController::TOUR_LOGIN_SECURITY,
			),
		);
		
		$users = wfConfig::get_ser('twoFactorUsers', array());
		$legacy_users = array();
		foreach ($users as $user) {
			$WPuser = new WP_User($user[0]);
			if ($user && $WPuser->exists()) {
				if (isset($user[5]) && $user[5] == 'authenticator') {
					$legacy_users[] = array(
						'userID' => $user[0],
						'username' => $WPuser->user_login,
						'status' => $user[3],
						'mode' => 'authenticator'
					);
				}
				else {
					$legacy_users[] = array(
						'userID' => $user[0],
						'username' => $WPuser->user_login,
						'phone' => $user[1],
						'status' => $user[3],
						'mode' => 'phone'
					);
				}
			}
		}
		$response['twofactor'] = array(
			'using_legacy' => wfCredentialsController::useLegacy2FA(),
			'legacy_users' => $legacy_users,
		);
		
		$response['wordpress'] = array(
			'url' => array(
				'plugins' => wfUtils::wpAdminURL('plugins.php'),
				'updates' => wfUtils::wpAdminURL('update-core.php'),
			),
		);
		
		$whitelistedServices = wfConfig::getJSON('whitelistedServices', array());
		$whitelistPresets = wfUtils::whitelistPresets();
		
		$names = array();
		foreach ($whitelistPresets as $tag => $preset) {
			if (!isset($preset['n'])) { continue; } //Not named, omitted from configurable list
			if ((isset($preset['h']) && $preset['h']) || (isset($preset['f']) && $preset['f'])) { continue; } //Flagged as hidden or always enabled, omitted from configurable list
			$names[$tag] = $preset['n'];
			if (!isset($whitelistedServices[$tag]) && isset($preset['d']) && $preset['d']) {
				$whitelistedServices[$tag] = 1;
			}
		}
		
		$whitelistedServicesOptions = array();
		foreach ($names as $tag => $name) {
			$whitelistedServicesOptions[] = array(
				'id' => preg_replace('/[^a-z0-9]/i', '', $tag),
				'name' => 'whitelistedServices.' . preg_replace('/[^a-z0-9]/i', '', $tag),
				'enabledValue' => true,
				'disabledValue' => false,
				'value' => (isset($whitelistedServices[$tag]) && $whitelistedServices[$tag]),
				'title' => $name,
			);
		}
		
		$serverInfo = wfWebServerInfo::createFromEnvironment();
		$wafOptimizationOptions = array(
			array(
				'value' => 'apache-mod_php',
				'label' => __('Apache + mod_php', 'wordfence'),
				'recommended' => $serverInfo->isApacheModPHP(),
				'backup' => wfWAFAutoPrependHelper::helper('apache-mod_php')->getFilesNeededForBackup(),
			),
			array(
				'value' => 'apache-suphp',
				'label' => __('Apache + suPHP', 'wordfence'),
				'recommended' => $serverInfo->isApacheSuPHP(),
				'backup' => wfWAFAutoPrependHelper::helper('apache-suphp')->getFilesNeededForBackup(),
			),
			array(
				'value' => 'cgi',
				'label' => __('Apache + CGI/FastCGI', 'wordfence'),
				'recommended' => $serverInfo->isApache() && !$serverInfo->isApacheSuPHP() && ($serverInfo->isCGI() || $serverInfo->isFastCGI()),
				'backup' => wfWAFAutoPrependHelper::helper('cgi')->getFilesNeededForBackup(),
			),
			array(
				'value' => 'litespeed',
				'label' => __('LiteSpeed/lsapi', 'wordfence'),
				'recommended' => $serverInfo->isLiteSpeed(),
				'backup' => wfWAFAutoPrependHelper::helper('litespeed')->getFilesNeededForBackup(),
			),
			array(
				'value' => 'nginx-unit',
				'label' => __('NGINX Unit', 'wordfence'),
				'recommended' => $serverInfo->isNginxUnit(),
				'backup' => wfWAFAutoPrependHelper::helper('nginx')->getFilesNeededForBackup(),
			),
			array(
				'value' => 'nginx',
				'label' => __('NGINX', 'wordfence'),
				'recommended' => $serverInfo->isNginxStandard(),
				'backup' => wfWAFAutoPrependHelper::helper('nginx')->getFilesNeededForBackup(),
			),
			array(
				'value' => 'iis',
				'label' => __('Windows (IIS)', 'wordfence'),
				'recommended' => $serverInfo->isIIS(),
				'backup' => wfWAFAutoPrependHelper::helper('iis')->getFilesNeededForBackup(),
			),
			array(
				'value' => 'manual',
				'label' => __('Manual Configuration', 'wordfence'),
				'recommended' => false,
				'backup' => array(),
			),
		);
		
		foreach ($wafOptimizationOptions as &$option) {
			$filteredBackups = array();
			foreach ($option['backup'] as $file) {
				if (file_exists($file)) {
					$filteredBackups[] = $file;
				}
			}
			$option['backup'] = array_map('basename', $filteredBackups);
		}
		
		$response['options'] = array(
			'url' => array(
				'_group_blocking' => wfUtils::maybeNetworkAdminURL('admin.php?page=WordfenceWAF&subpage=blocking_options'),
				
				'other_scanOutside' => (function_exists('network_admin_url') && is_multisite()) ? network_admin_url('admin.php?page=WordfenceScan&subpage=scan_options#wf-option-other-scanOutside#wf-scanner-options-general') : admin_url('admin.php?page=WordfenceScan&subpage=scan_options#wf-option-other-scanOutside#wf-scanner-options-general'),
			),
			'section' => array(
				'global' => wfConfig::OPTIONS_TYPE_GLOBAL,
				'firewall' => wfConfig::OPTIONS_TYPE_FIREWALL,
				'blocking' => wfConfig::OPTIONS_TYPE_BLOCKING,
				'scanner' => wfConfig::OPTIONS_TYPE_SCANNER,
				'twofactor' => wfConfig::OPTIONS_TYPE_TWO_FACTOR,
				'livetraffic' => wfConfig::OPTIONS_TYPE_LIVE_TRAFFIC,
				'auditlog' => wfConfig::OPTIONS_TYPE_AUDIT_LOG,
				'diagnostics' => wfConfig::OPTIONS_TYPE_DIAGNOSTICS,
				'all' => wfConfig::OPTIONS_TYPE_ALL,
			),
			'controls' => array(
				'whitelisted_services_options' => $whitelistedServicesOptions,
				'waf_optimization_options' => $wafOptimizationOptions,
			),
			'value' => array( //TODO: In the future, it would be better to source this from a canonical definition in wfConfig.php instead of manual entries here
				//General
				'apiKey' => wfConfig::get('apiKey'),
				'howGetIPs' => wfConfig::get('howGetIPs'),
				'howGetIPs_trusted_proxies' => wfConfig::get('howGetIPs_trusted_proxies'),
				'howGetIPs_trusted_proxy_preset' => wfConfig::get('howGetIPs_trusted_proxy_preset'),
				'autoUpdate' => wfConfig::getBool('autoUpdate'),
				'alertEmails' => implode(',', wfConfig::getAlertEmails()),
				'enableRemoteIpLookup' => wfConfig::getBool('enableRemoteIpLookup'),
				'other_hideWPVersion' => wfConfig::getBool('other_hideWPVersion'),
				'disableCodeExecutionUploads' => wfConfig::getBool('disableCodeExecutionUploads'),
				'actUpdateInterval' => wfConfig::getInt('actUpdateInterval'),
				'other_bypassLitespeedNoabort' => wfConfig::getBool('other_bypassLitespeedNoabort'),
				'deleteTablesOnDeact' => wfConfig::getBool('deleteTablesOnDeact'),
				
				'alertOn_update' => wfConfig::getBool('alertOn_update'),
				'alertOn_wordfenceDeactivated' => wfConfig::getBool('alertOn_wordfenceDeactivated'),
				'alertOn_wafDeactivated' => wfConfig::getBool('alertOn_wafDeactivated'),
				'alertOn_scanIssues' => wfConfig::getBool('alertOn_scanIssues'),
				'alertOn_severityLevel' => wfConfig::getInt('alertOn_severityLevel'),
				'alertOn_block' => wfConfig::getBool('alertOn_block'),
				'alertOn_loginLockout' => wfConfig::getBool('alertOn_loginLockout'),
				'alertOn_breachLogin' => wfConfig::getBool('alertOn_breachLogin'),
				'alertOn_lostPasswdForm' => wfConfig::getBool('alertOn_lostPasswdForm'),
				'alertOn_adminLogin' => wfConfig::getBool('alertOn_adminLogin'),
				'alertOn_firstAdminLoginOnly' => wfConfig::getBool('alertOn_firstAdminLoginOnly'),
				'alertOn_nonAdminLogin' => wfConfig::getBool('alertOn_nonAdminLogin'),
				'alertOn_firstNonAdminLoginOnly' => wfConfig::getBool('alertOn_firstNonAdminLoginOnly'),
				'wafAlertOnAttacks' => wfConfig::getBool('wafAlertOnAttacks'),
				'alert_maxHourly' => wfConfig::getInt('alert_maxHourly'),
				
				'notification_updatesNeeded' => wfConfig::getBool('notification_updatesNeeded'),
				'notification_securityAlerts' => wfConfig::getBool('notification_securityAlerts'),
				'notification_promotions' => wfConfig::getBool('notification_promotions'),
				'notification_blogHighlights' => wfConfig::getBool('notification_blogHighlights'),
				'notification_productUpdates' => wfConfig::getBool('notification_productUpdates'),
				'notification_scanStatus' => wfConfig::getBool('notification_scanStatus'),
				
				'email_summary_enabled' => wfConfig::getBool('email_summary_enabled'),
				'email_summary_interval' => wfConfig::get('email_summary_interval'),
				'email_summary_excluded_directories' => wfUtils::cleanupOneEntryPerLine(wfConfig::get('email_summary_excluded_directories')),
				'email_summary_dashboard_widget_enabled' => wfConfig::getBool('email_summary_dashboard_widget_enabled'),
				
				'displayTopLevelAuditLog' => wfConfig::getBool('displayTopLevelAuditLog'),
				'displayTopLevelLiveTraffic' => wfConfig::getBool('displayTopLevelLiveTraffic'),
				'displayTopLevelBlocking' => wfConfig::getBool('displayTopLevelBlocking'),
				'displayTopLevelOptions' => wfConfig::getBool('displayTopLevelOptions'),
				
				'displayAutomaticBlocks' => wfConfig::getBool('displayAutomaticBlocks'),
				
				//Live Traffic
				'liveTrafficEnabled' => wfConfig::getBool('liveTrafficEnabled'),
				'liveActivityPauseEnabled' => wfConfig::getBool('liveActivityPauseEnabled'),
				'switchLiveTrafficSecurityOnlyChoice' => wfConfig::getBool('switchLiveTrafficSecurityOnlyChoice'),
				'liveTraf_displayExpandedRecords' => wfConfig::getBool('liveTraf_displayExpandedRecords'),
				'liveTraf_ignorePublishers' => wfConfig::getBool('liveTraf_ignorePublishers'),
				'liveTraf_ignoreUsers' => wfConfig::get('liveTraf_ignoreUsers'),
				'liveTraf_ignoreIPs' => wfConfig::get('liveTraf_ignoreIPs'),
				'liveTraf_ignoreUA' => wfConfig::get('liveTraf_ignoreUA'),
				'liveTraf_maxRows' => wfConfig::getInt('liveTraf_maxRows'),
				'liveTraf_maxAge' => wfConfig::getInt('liveTraf_maxAge'),
				
				'host_setting' => $hostSetting,
				'record_all' => $recordAll,
				
				//Scan
				'scanType' => wfScanner::shared()->scanType(),
				
				'scansEnabled_checkGSB' => wfConfig::getBool('scansEnabled_checkGSB'),
				'spamvertizeCheck' => wfConfig::getBool('spamvertizeCheck'),
				'checkSpamIP' => wfConfig::getBool('checkSpamIP'),
				'scansEnabled_checkHowGetIPs' => wfConfig::getBool('scansEnabled_checkHowGetIPs'),
				'scansEnabled_checkReadableConfig' => wfConfig::getBool('scansEnabled_checkReadableConfig'),
				'scansEnabled_suspectedFiles' => wfConfig::getBool('scansEnabled_suspectedFiles'),
				'scansEnabled_core' => wfConfig::getBool('scansEnabled_core'),
				'scansEnabled_themes' => wfConfig::getBool('scansEnabled_themes'),
				'scansEnabled_plugins' => wfConfig::getBool('scansEnabled_plugins'),
				'scansEnabled_coreUnknown' => wfConfig::getBool('scansEnabled_coreUnknown'),
				'scansEnabled_malware' => wfConfig::getBool('scansEnabled_malware'),
				'scansEnabled_fileContents' => wfConfig::getBool('scansEnabled_fileContents'),
				'scansEnabled_fileContentsGSB' => wfConfig::getBool('scansEnabled_fileContentsGSB'),
				'scansEnabled_posts' => wfConfig::getBool('scansEnabled_posts'),
				'scansEnabled_comments' => wfConfig::getBool('scansEnabled_comments'),
				'scansEnabled_suspiciousOptions' => wfConfig::getBool('scansEnabled_suspiciousOptions'),
				'scansEnabled_oldVersions' => wfConfig::getBool('scansEnabled_oldVersions'),
				'scansEnabled_suspiciousAdminUsers' => wfConfig::getBool('scansEnabled_suspiciousAdminUsers'),
				'scansEnabled_passwds' => wfConfig::getBool('scansEnabled_passwds'),
				'scansEnabled_diskSpace' => wfConfig::getBool('scansEnabled_diskSpace'),
				'scansEnabled_wafStatus' => wfConfig::getBool('scansEnabled_wafStatus'),
				'other_scanOutside' => wfConfig::getBool('other_scanOutside'),
				'scansEnabled_scanImages' => wfConfig::getBool('scansEnabled_scanImages'),
				
				'lowResourceScansEnabled' => wfConfig::getBool('lowResourceScansEnabled'),
				'scan_maxIssues' => wfConfig::getInt('scan_maxIssues'),
				'scan_maxDuration' => wfConfig::getInt('scan_maxDuration'),
				'maxMem' => wfConfig::getInt('maxMem'),
				'maxExecutionTime' => wfConfig::getInt('maxExecutionTime'),
				
				'scan_exclude' => wfUtils::cleanupOneEntryPerLine(wfConfig::get('scan_exclude')),
				'scan_include_extra' => wfConfig::get('scan_include_extra'),
				'scan_force_ipv4_start' => wfConfig::getBool('scan_force_ipv4_start'),
				'scan_max_resume_attempts' => wfConfig::getInt('scan_max_resume_attempts', wfScanMonitor::DEFAULT_RESUME_ATTEMPTS),
				
				'scheduledScansEnabled' => wfConfig::getBool('scheduledScansEnabled'),
				'schedMode' => wfScanner::shared()->schedulingMode(),
				'manualScanType' => wfConfig::get('manualScanType', wfScanner::MANUAL_SCHEDULING_ONCE_DAILY),
				'schedStartHour' => wfConfig::getInt('schedStartHour'),
				'scanSched' => wfScanner::shared()->customSchedule(),
				
				//Blocking
				'firewallEnabled' => wfConfig::getBool('firewallEnabled'),
				
				'cbl_action' => wfConfig::get('cbl_action'),
				'cbl_redirURL' => wfConfig::get('cbl_redirURL'),
				'cbl_loggedInBlocked' => wfConfig::getBool('cbl_loggedInBlocked'),
				'cbl_bypassRedirURL' => wfConfig::get('cbl_bypassRedirURL'),
				'cbl_bypassRedirDest' => wfConfig::get('cbl_bypassRedirDest'),
				'cbl_bypassViewURL' => wfConfig::get('cbl_bypassViewURL'),
				
				'neverBlockBG' => wfConfig::get('neverBlockBG'),
				'maxGlobalRequests' => wfConfig::getMaybeInt('maxGlobalRequests'),
				'maxGlobalRequests_action' => wfConfig::get('maxGlobalRequests_action'),
				'maxRequestsCrawlers' => wfConfig::getMaybeInt('maxRequestsCrawlers'),
				'maxRequestsCrawlers_action' => wfConfig::get('maxRequestsCrawlers_action'),
				'max404Crawlers' => wfConfig::getMaybeInt('max404Crawlers'),
				'max404Crawlers_action' => wfConfig::get('max404Crawlers_action'),
				'maxRequestsHumans' => wfConfig::getMaybeInt('maxRequestsHumans'),
				'maxRequestsHumans_action' => wfConfig::get('maxRequestsHumans_action'),
				'max404Humans' => wfConfig::getMaybeInt('max404Humans'),
				'max404Humans_action' => wfConfig::get('max404Humans_action'),
				'blockedTime' => wfConfig::getInt('blockedTime'),
				'allowed404s' => wfUtils::cleanupOneEntryPerLine(wfConfig::get('allowed404s')),
				
				'loginSecurityEnabled' => wfConfig::getBool('loginSecurityEnabled'),
				'loginSec_maxFailures' => wfConfig::getInt('loginSec_maxFailures'),
				'loginSec_maxForgotPasswd' => wfConfig::getInt('loginSec_maxForgotPasswd'),
				'loginSec_countFailMins' => wfConfig::getInt('loginSec_countFailMins'),
				'loginSec_lockoutMins' => wfConfig::getInt('loginSec_lockoutMins'),
				'loginSec_lockInvalidUsers' => wfConfig::getBool('loginSec_lockInvalidUsers'),
				'loginSec_breachPasswds_enabled' => wfConfig::getBool('loginSec_breachPasswds_enabled'),
				'loginSec_breachPasswds' => wfConfig::get('loginSec_breachPasswds'),
				'loginSec_strongPasswds_enabled' => wfConfig::getBool('loginSec_strongPasswds_enabled'),
				'loginSec_strongPasswds' => wfConfig::get('loginSec_strongPasswds'),
				'loginSec_maskLoginErrors' => wfConfig::getBool('loginSec_maskLoginErrors'),
				'loginSec_blockAdminReg' => wfConfig::getBool('loginSec_blockAdminReg'),
				'loginSec_disableAuthorScan' => wfConfig::getBool('loginSec_disableAuthorScan'),
				'loginSec_disableApplicationPasswords' => wfConfig::getBool('loginSec_disableApplicationPasswords'),
				'other_blockBadPOST' => wfConfig::getBool('other_blockBadPOST'),
				'blockCustomText' => wfConfig::get('blockCustomText'),
				'other_pwStrengthOnUpdate' => wfConfig::getBool('other_pwStrengthOnUpdate'),
				'other_WFNet' => wfConfig::getBool('other_WFNet'),
				'loginSec_userBlacklist' => array_filter(explode("\n", wfUtils::cleanupOneEntryPerLine(wfConfig::get('loginSec_userBlacklist')))),
				
				//Audit Log
				'auditLogMode' => wfAuditLog::shared()->mode(),
				
				//WAF
				'disableWAFIPBlocking' => wfConfig::getBool('disableWAFIPBlocking'),
				'whitelisted' => wfUtils::cleanupOneEntryPerLine(wfConfig::get('whitelisted')),
				'bannedURLs' => wfUtils::cleanupOneEntryPerLine(wfConfig::get('bannedURLs')),
				'wafAlertWhitelist' => wfUtils::cleanupOneEntryPerLine(wfConfig::get('wafAlertWhitelist')),
				'whitelistedServices' => $whitelistedServices,
				'wafStatus' => $firewall->firewallMode(),
				'learningModeGracePeriodEnabled' => $learningModeGracePeriodEnabled,
				'learningModeGracePeriod' => gmdate('c', $learningModeGracePeriod),
				'disableWAFBlacklistBlocking' => $disableWAFBlacklistBlocking,
				'ajaxWatcherDisabled_front' => wfConfig::getBool('ajaxWatcherDisabled_front'),
				'ajaxWatcherDisabled_admin' => wfConfig::getBool('ajaxWatcherDisabled_admin'),
				
				//Diagnostics
				'debugOn' => wfConfig::getBool('debugOn'),
				'startScansRemotely' => wfConfig::getBool('startScansRemotely'),
				'ssl_verify' => wfConfig::getBool('ssl_verify'),
				'avoid_php_input' => $avoidPHPInput,
				'wordfenceI18n' => wfConfig::getBool('wordfenceI18n'),
			),
		);
		
		$indexOptions = array(
			'apiKey' => __('License Key', 'wordfence'),
			'displayTopLevelOptions' => __('Display All Options menu item', 'wordfence'),
			'displayTopLevelBlocking' => __('Display Blocking menu item', 'wordfence'),
			'displayTopLevelLiveTraffic' => __('Display Live Traffic menu item', 'wordfence'),
			'displayTopLevelAuditLog' => __('Display Audit Log menu item', 'wordfence'),
			'autoUpdate' => __('Update Wordfence automatically when a new version is released?', 'wordfence'),
			'alertEmails' => __('Where to email alerts', 'wordfence'),
			'howGetIPs' => __('How does Wordfence get IPs', 'wordfence'),
			'howGetIPs_trusted_proxies' => __('Trusted Proxies', 'wordfence'),
			'enableRemoteIpLookup' => __('Look up visitor IP locations via Wordfence servers', 'wordfence'),
			'other_hideWPVersion' => __('Hide WordPress version', 'wordfence'),
			'disableCodeExecutionUploads' => __('Disable Code Execution for Uploads directory', 'wordfence'),
			'liveActivityPauseEnabled' => __('Pause live updates when window loses focus', 'wordfence'),
			'actUpdateInterval' => __('Update interval in seconds', 'wordfence'),
			'other_bypassLitespeedNoabort' => __('Bypass the LiteSpeed "noabort" check', 'wordfence'),
			'deleteTablesOnDeact' => __('Delete Wordfence tables and data on deactivation', 'wordfence'),
			'notification_updatesNeeded' => __('Updates Needed (Plugin, Theme, or Core)', 'wordfence'),
			'notification_securityAlerts' => __('Security Alerts', 'wordfence'),
			'notification_promotions' => __('Promotions', 'wordfence'),
			'notification_blogHighlights' => __('Blog Highlights', 'wordfence'),
			'notification_productUpdates' => __('Product Updates', 'wordfence'),
			'notification_scanStatus' => __('Scan Status', 'wordfence'),
			'alertOn_update' => __('Email me when Wordfence is automatically updated', 'wordfence'),
			'alertOn_wordfenceDeactivated' => __('Email me if Wordfence is deactivated', 'wordfence'),
			'alertOn_wafDeactivated' => __('Email me if the Wordfence Web Application Firewall is turned off', 'wordfence'),
			'alertOn_scanIssues' => __('Alert me with scan results of this severity level or greater', 'wordfence'),
			'alertOn_block' => __('Alert when an IP address is blocked', 'wordfence'),
			'alertOn_loginLockout' => __('Alert when someone is locked out from login', 'wordfence'),
			'alertOn_lostPasswdForm' => __('Alert when the "lost password" form is used for a valid user', 'wordfence'),
			'alertOn_adminLogin' => __('Alert me when someone with administrator access signs in', 'wordfence'),
			'alertOn_firstAdminLoginOnly' => __('Only alert me when that administrator signs in from a new device', 'wordfence'),
			'alertOn_nonAdminLogin' => __('Alert me when a non-admin user signs in', 'wordfence'),
			'alertOn_firstNonAdminLoginOnly' => __('Only alert me when that user signs in from a new device', 'wordfence'),
			'wafAlertOnAttacks' => __('Alert me when there\'s a large increase in attacks detected on my site', 'wordfence'),
			'alert_maxHourly' => __('Maximum email alerts to send per hour', 'wordfence'),
			'email_summary_enabled' => __('Enable email summary', 'wordfence'),
			'email_summary_excluded_directories' => __('List of directories to exclude from recently modified file list', 'wordfence'),
			'email_summary_dashboard_widget_enabled' => __('Enable activity report widget on the WordPress dashboard', 'wordfence'),
			'wafStatus' => __('Web Application Firewall Status', 'wordfence'),
			'protectionMode' => __('Web Application Firewall Protection Level', 'wordfence'),
			'disableWAFBlacklistBlocking' => __('Real-Time IP Blocklist', 'wordfence'),
			'disableWAFIPBlocking' => __('Delay IP and Country blocking until after WordPress and plugins have loaded (only process firewall rules early)', 'wordfence'),
			'whitelisted' => __('Allowlisted IP addresses that bypass all rules', 'wordfence'),
			'whitelistedServices' => __('Allowlisted services', 'wordfence'),
			'bannedURLs' => __('Immediately block IPs that access these URLs', 'wordfence'),
			'wafAlertWhitelist' => __('Ignored IP addresses for Wordfence Web Application Firewall alerting', 'wordfence'),
			'wafRules' => __('Web Application Firewall Rules', 'wordfence'),
			'loginSecurityEnabled' => __('Enable brute force protection', 'wordfence'),
			'loginSec_maxFailures' => __('Lock out after how many login failures', 'wordfence'),
			'loginSec_maxForgotPasswd' => __('Lock out after how many forgot password attempts', 'wordfence'),
			'loginSec_countFailMins' => __('Count failures over what time period', 'wordfence'),
			'loginSec_lockoutMins' => __('Amount of time a user is locked out', 'wordfence'),
			'loginSec_lockInvalidUsers' => __('Immediately lock out invalid usernames', 'wordfence'),
			'loginSec_userBlacklist' => __('Immediately block the IP of users who try to sign in as these usernames', 'wordfence'),
			'loginSec_strongPasswds_enabled' => __('Enforce strong passwords', 'wordfence'),
			'loginSec_breachPasswds_enabled' => __('Prevent the use of passwords leaked in data breaches', 'wordfence'),
			'loginSec_maskLoginErrors' => __('Don\'t let WordPress reveal valid users in login errors', 'wordfence'),
			'loginSec_blockAdminReg' => __('Prevent users registering "admin" username if it doesn\'t exist', 'wordfence'),
			'loginSec_disableAuthorScan' => __('Prevent discovery of usernames through "/?author=N" scans, the oEmbed API, the WordPress REST API, and WordPress XML Sitemaps', 'wordfence'),
			'loginSec_disableApplicationPasswords' => __('Disable WordPress application passwords', 'wordfence'),
			'other_blockBadPOST' => __('Block IPs who send POST requests with blank User-Agent and Referer', 'wordfence'),
			'blockCustomText' => __('Custom text shown on block pages', 'wordfence'),
			'other_pwStrengthOnUpdate' => __('Check password strength on profile update', 'wordfence'),
			'other_WFNet' => __('Participate in the Real-Time Wordfence Security Network', 'wordfence'),
			'firewallEnabled' => __('Enable Rate Limiting and Advanced Blocking', 'wordfence'),
			'neverBlockBG' => __('How should we treat Google\'s crawlers', 'wordfence'),
			'maxGlobalRequests' => __('If anyone\'s requests exceed', 'wordfence'),
			'maxRequestsCrawlers' => __('If a crawler\'s page views exceed', 'wordfence'),
			'max404Crawlers' => __('If a crawler\'s pages not found (404s) exceed', 'wordfence'),
			'maxRequestsHumans' => __('If a human\'s page views exceed', 'wordfence'),
			'max404Humans' => __('If a human\'s pages not found (404s) exceed', 'wordfence'),
			'blockedTime' => __('How long is an IP address blocked when it breaks a rule', 'wordfence'),
			'allowed404s' => __('Allowlisted 404 URLs', 'wordfence'),
			'wafWhitelist' => __('Web Application Firewall Allowlisted URLs', 'wordfence'),
			'ajaxWatcherDisabled_front' => __('Monitor background requests from an administrator\'s web browser for false positives (Front-end Website)', 'wordfence'),
			'ajaxWatcherDisabled_admin' => __('Monitor background requests from an administrator\'s web browser for false positives (Admin Panel)', 'wordfence'),
			'cbl_action' => __('What to do when we block someone visiting from a blocked country', 'wordfence'),
			'cbl_redirURL' => __('URL to redirect blocked countries to', 'wordfence'),
			'cbl_loggedInBlocked' => __('Block countries even if they are logged in', 'wordfence'),
			'cbl_bypassRedirURL' => __('If user from a blocked country hits the relative URL ____ then redirect that user to ____ and set a cookie that will bypass all country blocking', 'wordfence'),
			'cbl_bypassViewURL' => __('If user who is allowed to access the site views the relative URL ____ then set a cookie that will bypass country blocking in future in case that user hits the site from a blocked country', 'wordfence'),
			'scheduledScansEnabled' => __('Schedule Wordfence Scans', 'wordfence'),
			'scanType' => __('Scan Type', 'wordfence'),
			'scansEnabled_checkGSB' => __('Check if this website is on a domain blocklist', 'wordfence'),
			'spamvertizeCheck' => __('Check if this website is being &quot;Spamvertised&quot;', 'wordfence'),
			'checkSpamIP' => __('Check if this website IP is generating spam', 'wordfence'),
			'scansEnabled_checkHowGetIPs' => __('Scan for misconfigured How does Wordfence get IPs', 'wordfence'),
			'scansEnabled_checkReadableConfig' => __('Scan for publicly accessible configuration, backup, or log files', 'wordfence'),
			'scansEnabled_suspectedFiles' => __('Scan for publicly accessible quarantined files', 'wordfence'),
			'scansEnabled_core' => __('Scan core files against repository versions for changes', 'wordfence'),
			'scansEnabled_themes' => __('Scan theme files against repository versions for changes', 'wordfence'),
			'scansEnabled_plugins' => __('Scan plugin files against repository versions for changes', 'wordfence'),
			'scansEnabled_coreUnknown' => __('Scan wp-admin and wp-includes for files not bundled with WordPress', 'wordfence'),
			'scansEnabled_malware' => __('Scan for signatures of known malicious files', 'wordfence'),
			'scansEnabled_fileContents' => __('Scan file contents for backdoors, trojans and suspicious code', 'wordfence'),
			'scansEnabled_fileContentsGSB' => __('Scan file contents for malicious URLs', 'wordfence'),
			'scansEnabled_posts' => __('Scan posts for known dangerous URLs and suspicious content', 'wordfence'),
			'scansEnabled_comments' => __('Scan comments for known dangerous URLs and suspicious content', 'wordfence'),
			'scansEnabled_suspiciousOptions' => __('Scan WordPress core, plugin, and theme options for known dangerous URLs and suspicious content', 'wordfence'),
			'scansEnabled_oldVersions' => __('Scan for out of date, abandoned, and vulnerable plugins, themes, and WordPress versions', 'wordfence'),
			'scansEnabled_suspiciousAdminUsers' => __('Scan for suspicious admin users created outside of WordPress', 'wordfence'),
			'scansEnabled_passwds' => __('Check the strength of passwords', 'wordfence'),
			'scansEnabled_diskSpace' => __('Monitor disk space', 'wordfence'),
			'scansEnabled_wafStatus' => __('Monitor Web Application Firewall status', 'wordfence'),
			'other_scanOutside' => __('Scan files outside your WordPress installation', 'wordfence'),
			'scansEnabled_scanImages' => __('Scan images, binary, and other files as if they were executable', 'wordfence'),
			'lowResourceScansEnabled' => __('Use low resource scanning (reduces server load by lengthening the scan duration)', 'wordfence'),
			'scan_maxIssues' => __('Limit the number of issues sent in the scan results email', 'wordfence'),
			'scan_maxDuration' => __('Time limit that a scan can run in seconds', 'wordfence'),
			'maxMem' => __('How much memory should Wordfence request when scanning', 'wordfence'),
			'maxExecutionTime' => __('Maximum execution time for each scan stage', 'wordfence'),
			'scan_exclude' => __('Exclude files from scan that match these wildcard patterns', 'wordfence'),
			'scan_include_extra' => __('Additional scan signatures', 'wordfence'),
			'scan_force_ipv4_start' => __('Use only IPv4 to start scans', 'wordfence'),
			'scan_max_resume_attempts' => __('Maximum number of attempts to resume each scan stage', 'wordfence'),
			'liveTrafficEnabled' => __('Traffic logging mode (Live Traffic)', 'wordfence'),
			'liveTraf_ignorePublishers' => __('Don\'t log signed-in users with publishing access', 'wordfence'),
			'liveTraf_ignoreUsers' => __('List of comma separated usernames to ignore', 'wordfence'),
			'liveTraf_ignoreIPs' => __('List of comma separated IP addresses to ignore', 'wordfence'),
			'liveTraf_ignoreUA' => __('Browser user-agent to ignore', 'wordfence'),
			'liveTraf_maxRows' => __('Amount of Live Traffic data to store (number of rows)', 'wordfence'),
			'liveTraf_maxAge' => __('Maximum days to keep Live Traffic data', 'wordfence'),
			'auditLogMode' => __('Audit Log logging mode', 'wordfence'),
			'exportOptions' => __('Export this site\'s Wordfence options for import on another site', 'wordfence'),
			'importOptions' => __('Import Wordfence options from another site using a token', 'wordfence'),
		);
		
		$indexOptions = array_merge($indexOptions, wfModuleController::shared()->optionIndexes);
		$response['options']['index'] = array_map(function($key, $label) { return array('value' => $key, 'label' => $label); }, array_keys($indexOptions), $indexOptions);
		
		return $response;
	}
	
	/**
	 * Returns the importmap array for our bundled modules.
	 * 
	 * @return array
	 */
	public static function WordfenceJSImportMap() {
		return array('imports' => array(
			'vue' => wfUtils::getBaseURL() . wfUtils::versionedAsset('js/vue.esm-browser.prod.js'),
		));
	}
}
