WordPress.org

Plugin Directory

WP-SpamShield Anti-Spam

An exceptionally powerful WordPress anti-spam plugin that eliminates comment spam, trackback spam, contact form spam & registration spam.

1.9.8.9

released 07/12/16

  • Made various code enhancements and improvements.
  • Improved some of the filters in the anti-spam algorithm.
  • Updated the anti-spam filters.

1.9.8.8

released 06/20/16

  • Made various code enhancements and improvements.
  • Improved Whitelist functionality. Expanded the functionality of the Whitelist to allow not only email addresses, but IP addresses as well. Also, the Whitelist now affects all form/POST submission channels that the plugin protects. Previously it only applied to comments and contact forms.
  • Added protection against XML-RPC brute force amplification attacks. Added a filter to the Miscellaneous Form Spam Protection to block XML-RPC and REST requests from servers using spoofed Reverse DNS entries (ie. non-existant servers), a common element of these attacks used to mask an attacker's identity. By doing a simple check to ensure that the server is real, all XML-RPC requests will have to originate from properly configured servers. For example, hackers will often use spoofed Reverse DNS entries (fake servers) when trying to brute-force your login passwords using the system.multicall function in XML-RPC (aka brute force amplification attacks). The plugin also employs a number of other methods to block these types of attacks. Stopping these attacks improves the security of your site.
  • Improved some of the filters in the anti-spam algorithm.
  • Updated the anti-spam filters.

1.9.8.7

released 06/12/16

  • Made various code enhancements and improvements.
  • Improved some of the filters in the anti-spam algorithm.
  • Updated the anti-spam filters.

1.9.8.6

released 06/08/16

  • Made various code enhancements and improvements.
  • Fixed a couple bugs: Fixed a bug with the "Blacklist the IP Address" link in email notifications, and fixed a bug affecting certain AJAX requests.
  • Added an option to encode the body content of emails generated by the built-in contact form.
  • Improved some of the filters in the anti-spam algorithm.
  • Updated the anti-spam filters.

1.9.8.5

released 06/04/16

  • Made various code enhancements and improvements.
  • Made various performance and speed optimization improvements.
  • Added an early-firing Pingback spam filter that STOPS pingback-based DDoS attacks. This filter fixes the security issue inherent to Pingbacks. It preempts WordPress' slower Pingback validation with a very, very fast pre-check filter that eliminates 99.9% of pingback spam and saves a TON of bandwidth and server load. The plugin previously still blocked Pingback spam, but it fired after WordPress processed the Pingback. By adding the pre-check filter to the front of the stack in the processing queue, it prevents your site's XML-RPC functionality from being abused for use in Pingback-based DDoS attacks against other sites, it prevents your site from being the victim of Pingback-based DDoS attacks, it takes a huge load off of WordPress by catching and blocking 99.9% of spam before processing, which speeds up your site and improves scalability.
  • Made some improvements to the log formatting.
  • Updated the anti-spam filters.

1.9.8.4

released 05/30/16

  • Made various code enhancements and improvements.
  • Pre-emptive security enhancements.
  • Updated the anti-spam filters.

1.9.8.3

released 05/22/16

  • Made various code enhancements and improvements.
  • Updated the anti-spam filters.

1.9.8.2

released 05/17/16

  • Made various code enhancements and improvements.
  • Improved some of the filters in the anti-spam algorithm.
  • Updated the anti-spam filters.

1.9.8.1

released 05/10/16

  • Made various code enhancements and improvements.
  • Improved some of the filters in the anti-spam algorithm.
  • Updated the anti-spam filters.

1.9.8

released 05/01/16

  • Updated the anti-spam filters.

1.9.7.9

released 04/27/16

  • Fixed a bug affecting pingback and trackback validation.
  • Improved some of the filters in the anti-spam algorithm.

1.9.7.8

released 04/26/16

  • Added detection and security warning notices for old versions of WordPress with known security vulnerabilities. The plugin will now periodically check the installed WordPress version against the WPScan Vulnerability Database for any known vulnerabilities.
  • Made some improvements to the built-in contact form and email formatting.
  • Added improved support for payment gateways and webhooks.
  • Added detection for more ecommerce plugins.
  • Extended the Enhanced Comment Blacklist (ECBL) protection from only comments and the built-in contact form, to now full protection of everything else WP-SpamShield protects: Contact Form 7, Gravity Forms, all miscellaneous 3rd party forms, and registration forms. Now, if you have a user who you want to block from signing up, you can block them by IP address or email, by enabling ECBL in the settings and entering that info into the blacklist.
  • Made various code enhancements and improvements.
  • Improved some of the filters in the anti-spam algorithm.
  • Updated the anti-spam filters.

1.9.7.7

released 03/25/16

  • Fixed 2 minor bugs.
  • Updated the anti-spam filters.

1.9.7.6

released 03/23/16

  • Fixed a bug affecting ecommerce compatibility.
  • Updated the anti-spam filters.

1.9.7.5

released 03/21/16

  • Fixed a bug in the translations.
  • Added detection for more ecommerce and cache plugins.
  • More compatibility improvements for surrogates (gateway caches/reverse proxies, see RFC 3040).
  • Made various code improvements.
  • Updated the anti-spam filters.

1.9.7.4

released 03/11/16

  • Fixed a backwards compatibility issue with new user notification emails on old WordPress versions (lower than 4.3).
  • Minor translation improvements. Switched some of the translation strings to use WordPress' built in translations in order to not duplicate efforts. This will allow some of the documentation and text to be translated even if the plugin doesn't have a translation for that language yet. For example, registration forms will now be fully translated in every language that WordPress has a translation for.
  • Compatibility improvements for surrogates (gateway caches/reverse proxies, see RFC 3040).
  • Pre-emptive security enhancements.
  • Updated the anti-spam filters.

1.9.7.3

released 03/06/16

  • Fixed a compatibility issue affecting multisite setups with domain mapping.
  • Made some improvements to the Autoptimize compatibility fix.
  • Made various minor code improvements.
  • Updated the anti-spam filters.

1.9.7.2

released 02/18/16

  • Fixed an error detection bug that affected site owners who enable FORCE_SSL_ADMIN in wp-config.php.
  • Made various minor code improvements.
  • Updated the anti-spam filters.

1.9.7.1

released 02/17/16

  • Added compatibility improvements for surrogates (gateway caches/reverse proxies, see RFC 3040).
  • Added detection for certain WordPress configuration errors that can prevent the plugin from working.
  • Made various code improvements.
  • Updated the anti-spam filters.

1.9.7

released 02/15/16

  • Increased minimum required required PHP version to 5.3.21. We will eventually be phasing out support for PHP 5.3, as it reached end of life (EOL) 1.5 years ago in 2014. We recommend running at least PHP 5.5 or 5.6 on your server. It's extremely important that users stay up to date with the most recent version of WordPress (currently 4.4.2) and a reasonably up-to-date version of PHP for security, functionality, and website performance. See PHP Unsupported Branches for more info.
  • Improved some of the anti-spam filters for the built-in WP-SpamShield contact form.
  • Made various code improvements.
  • Updated the anti-spam filters.

1.9.6.9

released 01/18/16

  • Made some improvements to the Autoptimize compatibility fix. Autoptimize added some new features in version 2.0, and we've been working with the author, Frank Goosens, on streamlining plugin compatibility.
  • Updated the anti-spam filters.

1.9.6.8

released 12/22/15

  • Increased minimum required WordPress version to 4.0. It's extremely important that users stay up to date with the most recent version of WordPress (currently 4.4) for security and functionality.
  • Updated the anti-spam filters.

1.9.6.7

released 12/08/15

  • Updated the anti-spam filters.

1.9.6.6

released 11/28/15

  • Updated the anti-spam filters.

1.9.6.5

released 11/15/15

  • Updated the anti-spam filters.

1.9.6.4

released 10/30/15

  • Updated the anti-spam filters.

1.9.6.3

released 09/23/15

  • Updated the anti-spam filters.

1.9.6.2

released 09/18/15

  • Compatibility fix for new user notifications due to code change in WordPress 4.3.1.
  • Compatibility improvement for PayPal IPN when site is not using SSL to process e-commerce transactions.
  • Compatibility improvement for IIS servers.
  • Made various code improvements.
  • Updated the anti-spam filters.

1.9.6.1

released 09/10/15

  • Made various code improvements.
  • Updated the anti-spam filters.

1.9.6

released 09/04/15

  • Made various preemptive compatibility enhancements.
  • Reduced the total number of image files used in the plugin. Removed unused image files and converted images on the widgets admin page to use CSS sprites. All the plugin's other widget images were already using CSS sprites.
  • Updated the anti-spam filters.

1.9.5.9

released 08/30/15

  • Compatibility fix for multi-page forms using the "Enable AJAX" option in Gravity Forms.
  • Updated the anti-spam filters.

1.9.5.8

released 08/28/15

  • Compatibility fix for Gravity Forms PayPal Standard Add-On plugin.
  • Compatibility fix for Vantage theme by Appthemes.
  • Added workarounds for two plugins on the Known Conflicts list: Affiliates, and New User Approve.
  • Made various other preemptive compatibility enhancements.
  • Pre-emptive security enhancements.
  • The log file can now be viewed by more than one administrator at a time.
  • Improved image optimization and file size reduction. Ran all plugin images though better lossless image compression to further reduce file size, for a total images file size reduction of 22%, and plugin package file size reduction of 15%. Plugin images were previously optimized, but new apps provide us with greatly improved lossless compression.
  • Made various code enhancements and improvements.
  • Updated the anti-spam filters.

1.9.5.7

released 08/22/15

  • Compatibility fix for a new issue starting in WordPress 4.3 that affects notification emails sent to new users after registering. In WordPress 4.3, some changes were made to the functionality of the notifications sent to new users after they registered. This prevented the password information from being shown in the notification emails when WP-SpamShield was active. This release fixes the issue while maintaining backwards compatibility with previous versions of WordPress.
  • Updated the anti-spam filters.

1.9.5.6

released 08/18/15

  • Added improved email address validation for WordPress by integrating a filter into the core is_email() function. Previously, the core is_email() function would allow many invalid email addresses to pass through. All WordPress functions and plugins that use is_email() will benefit from this improved email validation. Added RFC rules that are not included in the WordPress core function, and added Email Service Provider (ESP) specific rules for Gmail and Yahoo email addresses to prevent spammers from using email addresses that would pass RFC standards but can't possibly exist at these providers. Will add further (ESP) specific rules for other providers in the future.
  • Compatibility fix for Flexible Posts Widget plugin.
  • Compatibility fix for Beaver Builder plugin.
  • Made additional browser and proxy cache control improvements for the jscripts.php file.
  • Made various code improvements.
  • Added screenshots to plugin's WordPress.org page.
  • Improved some of the filters in the anti-spam algorithm.
  • Updated the anti-spam filters.

1.9.5.5

released 08/07/15

  • Added Indonesian Translation (id_ID). Thank you to GhozyLab for doing the Indonesian translation.
  • Improvements for WooCommerce login and registration pages.
  • Added new filter hooks that other developers can use to extend the plugin's capabilities and bridge compatibility between plugins.
  • Browser and proxy cache control improvements for the jscripts.php file.
  • Made various code improvements.
  • Updated the anti-spam filters.

1.9.5.4

released 07/29/15

  • Fixed a bug in the integration with WooCommerce registration forms.
  • Roll back some changes from 1.9.5.3.
  • Made various code improvements.
  • Updated the anti-spam filters.

1.9.5.2

released 07/25/15

  • Made some preemptive fixes to the Gravity Forms integration to prevent JavaScript conflicts.
  • Added improved compatibility for certain BuddyPress themes and 3rd party registration pages.
  • Minor compatibility improvement for IIS servers.
  • Made various code improvements.
  • Updated the anti-spam filters.

1.9.5.1

released 07/22/15

  • Added improved compatibility for Fast Secure Contact Form plugin.
  • Added workaround for PHP bug in mb_substr() function on some servers.
  • Fixed an activation error caused by a function added in PHP 5.3 when plugin was activated on servers running PHP 5.2. (We no longer support PHP 5.2, but this error prevented our informational message from coming up.)
  • Made various code improvements.
  • Updated the anti-spam filters.

1.9.5

released 07/17/15

  • Improved Gravity Forms anti-spam protection and changed how it works to provide immediate feedback when spam is blocked. This makes it more consistent with how WP-SpamShield handles spam-blocking for everything else.
  • Added new anti-spam filters and improved handling for MailChimp forms.
  • Compatibility fix for payment gateways with Easy Digital Downloads plugin when website is not using SSL.
  • Compatibility fix for WooCommerce POS plugin.
  • Compatibility improvement for IIS servers.
  • Made various code improvements.
  • Updated the anti-spam filters.

1.9.4.2

released 07/13/15

  • Added a compatibility fix for AIT Themes.
  • Updated the anti-spam filters.

1.9.4.1

released 07/9/15

  • Fixed a bug with some of the anti-spam checks not being properly verified on certain server configurations with dynamic IP addresses.
  • Made various minor code improvements.
  • Updated the anti-spam filters.

1.9.4

released 07/1/15

  • Made various performance and speed optimization improvements.
  • Added gzip compression to both external JavaScript files, and far future Expires headers to the jscripts-ftr-min.js file (the external footer JavaScript) to further improve speed in loading.
  • Made some improvements to the Autoptimize compatibility fix.
  • Added a minor bug fix for Gravity Forms anti-spam.
  • Made various code improvements.
  • Updated the anti-spam filters.

1.9.3

released 06/25/15

  • Added an option in the settings to disable email harvester protection if you choose.
  • Made a number of code improvements to further improve overall performance, efficiency, and speed of the plugin.
  • Updated the anti-spam filters.

1.9.2

released 06/22/15

  • Added compatibility and anti-spam for JetPack Comments. Previously, due to JetPack modifying the core functionality of the WordPress comment system, the JetPack Comments module had to be deactivated, but now it only needs to be deactivated if you run Compatibility Mode.
  • Added improved compatibility and full anti-spam support for JetPack Contact Forms.
  • Made various logic and code improvements.
  • Improved some of the filters in the anti-spam algorithm.
  • Updated the anti-spam filters.

1.9.1

released 06/18/15

  • Added 2 new Advanced Features: "Compatibility Mode" and "Disable Temporary Blacklist". The Advanced Features are something new that we'll be introducing over time, and are explained in the plugin documentation in more detail.
  • Added some improvements to the installation status detection.
  • Added automatic fixes for certain issues. During the installation status detection process the plugin will attempt to fix some uncommon issues by automatically switching the plugin into Compatibility Mode. (At the top of the Settings page it tells you if the plugin is installed correctly or not.)
  • Made various code improvements.
  • Improved some of the anti-spam filters for the built-in WP-SpamShield contact form, Contact Form 7, Gravity Forms, and miscellaneous forms.
  • Updated the anti-spam filters.

1.9.0.6

released 06/15/15

  • Added several improvements to the integration with ecommerce plugins.
  • Pre-emptive security enhancement for the log file (formerly temp-comments-log.txt) - added a randomly generated 32 character long key to the filename to make it unique (now temp-comments-log-{random key}.txt). The log was already protected by an .htaccess file and restricted to the IP address of the admin.
  • Made various code improvements.
  • Improved some of the filters in the anti-spam algorithm.
  • Updated the anti-spam filters.

1.9.0.5

released 06/12/15

  • Added a new feature to thwart email harvesting bots and keep them from scraping your site for email addresses. It automatically obfuscates plain text email addresses and mailto links in your website content by encoding them into HTML entities (hexadecimal and decimal character codes that look like gibberish to harvesters, but render the email addresses perfectly in a browser). It protects email addresses on pages, posts, comments, excerpts, and text widgets. (It's always best not to post email addresses on your site and use a contact form instead, but if you absolutely have to, they should be encoded.)
  • Compatibility fix for new users registering on a WooCommerce checkout page.
  • Made various code improvements.
  • Updated the anti-spam filters.

1.9.0.4

released 06/09/15

  • Added improved compatibility and full support for WooCommerce to protect its registration form from spam.
  • Made various code improvements.
  • Improved some of the filters in the anti-spam algorithm.
  • Updated the anti-spam filters.

1.9.0.3

released 06/08/15

  • Added compatibility for 2 additional caching plugins: ZenCache and ZenCache Pro. As of this release, the following 14 cache plugins are supported: Cachify, DB Cache Reloaded, DB Cache Reloaded Fix, Gator Cache, Hyper Cache, Hyper Cache Extended, Lite Cache, Quick Cache, W3 Total Cache, WP Fast Cache, WP Fastest Cache, WP Super Cache, ZenCache, and ZenCache Pro.
  • Added options to disable anti-spam protection for Contact Form 7, Gravity Forms, and miscellaneous forms if you wish.
  • Made various code improvements.
  • Updated the anti-spam filters.

1.9.0.2

released 06/04/15

  • Fixed a couple bugs.
  • Added the option to set the minimum required comment length, from 1-30 characters. Previously, the minimum comment length was 15 characters.
  • Improved some of the filters in the anti-spam algorithm.
  • Updated the anti-spam filters.

1.9.0.1

released 06/03/15

  • Fixed a bug that caused a conflict with the WP Remote plugin.

1.9

released 06/02/15

  • Fixed a bug that caused a conflict with certain AJAX calls.
  • Fixed a bug with registration protection on BuddyPress legacy themes.

1.8.9.9

released 06/02/15

  • Added support for Contact Form 7 and Gravity Forms to automatically protect their contact forms from spam.
  • Added support for BuddyPress to protect its registration form from spam.
  • Added improved compatibility and full support for s2Member and WP-Members to protect their registration forms from spam.
  • Added automatic antispam protection for almost all registration forms (even forms that we have not specifically coded the plugin for), and many other WordPress forms.
  • Modified the .htaccess file to the wp-spamshield directory to improve compatibility with certain branches of Apache, including IdeaWebServer.
  • Improvement to the Autoptimize compatibility fix.
  • Made various code improvements and optimizations.
  • Updated the anti-spam filters.

1.8.9.8

released 05/30/15

  • Fixed a minor bug.

1.8.9.7

released 05/29/15

  • Added HTML 5 front-end validation to certain elements of the contact form and comments form.
  • Made various code improvements.
  • Updated the anti-spam filters.

1.8.9.6

released 05/26/15

  • Increased minimum required WordPress version to 3.9. It's extremely important that users stay up to date with the most recent version of WordPress (currently 4.2.2) for security and functionality.
  • Made various code improvements.
  • Improved some of the filters in the anti-spam algorithm.
  • Updated the anti-spam filters.

1.8.9.5

released 05/18/15

  • Added Italian Translation (it_IT). Thank you to Bakeneko for doing the Italian translation.
  • Fixed a minor bug in the translation files.
  • Fixed a compatibility issue with the Autoptimize plugin.
  • Updated the anti-spam filters.

1.8.9.4

released 05/08/15

  • Updated the anti-spam filters.

1.8.9.3

released 04/30/15

  • Made various minor code improvements.
  • Updated the anti-spam filters.

1.8.9.2

released 04/23/15

  • Made various minor code improvements.
  • Updated the anti-spam filters.

1.8.9.1

released 04/21/15

  • Added an .htaccess file to the wp-spamshield directory to control browser access to certain files.
  • Added a fix to ensure that certain security plugins could not inadvertently block browser access to the jscripts.php file. This fix will prevent most of the occurrences of the issue discussed in Troubleshooting Guide step 14.
  • Upgraded the .htaccess file in the data directory (that protects the log file) to be compatible with changes in Apache 2.4.
  • Modified the log file creation process so that WordFence (and any other security plugins that compare plugin files against the WordPress repository) will no longer give the following warning: "Modified plugin file: wp-content/plugins/wp-spamshield/data/temp-comments-log.txt" when Blocked Comment Logging Mode is turned on. This file is supposed to change, since it's the log file.
  • Removed inline CSS from the three registration fields that WP-SpamShield adds, in order to make it easier for users to configure the look and feel of the registration page.
  • Updated the anti-spam filters.

1.8.9

released 04/19/15

  • Made various minor code improvements.
  • Updated the anti-spam filters.

1.8.8

released 04/13/15

  • Fixed a bug in one of the blog comment spam filters. Previously, if WordPress Discussion settings have "Comment author must fill out name and e-mail" unchecked, and a user submitted a comment where the author name and author URL were both blank, it would incorrectly be blocked. (The comments would go through if there was a URL.) This is fixed in this version.
  • Updated the anti-spam filters.

1.8.7

released 04/08/15

  • Updated the anti-spam filters.

1.8.6

released 04/04/15

  • Fixed a minor bug in the new custom widget.
  • Updated the anti-spam filters.

1.8.5

released 04/02/15

  • Updated the anti-spam filters.

1.8.4

released 03/30/15

  • Added new widgets. Converted the spam stat counter graphics to widgets, so they are much easier to add to your site now. No more messing around with code. There are a number of new widget options to check out.
  • Added a new customizable widget that has a number of color and style options, including a custom color chooser.
  • Fixed a few potential issues with UTF-8 and multibyte support.
  • Made a small fix to the contact form thank you message that will help multi-language users.
  • Made the blog comment spam blocking process a little more efficient.
  • Added info to the settings page with info on how much time the plugin has saved you.
  • Made various code improvements.
  • Improved some of the filters in the anti-spam algorithm.
  • Updated the anti-spam filters.

1.8.3

released 03/24/15

  • Added a contact form quicktag so users can just click a button in the editor to add a contact form to pages. No more manually inserting shortcodes.
  • Made various code improvements.
  • Improved some of the filters in the anti-spam algorithm.
  • Updated the anti-spam filters.

1.8.2

released 03/16/15

  • Increased minimum required WordPress version to 3.8 and added a minimum required PHP version of 5.3, as we are no longer supporting PHP 5.2. The PHP team stopped supporting PHP 5.2 back in 2011, and even PHP 5.3 reached its end of life in August 2014. WordPress has a current minimum requirement of 5.2.4, but PHP 5.4 is recommended - see the WordPress requirements. It's extremely important that users stay up to date with the most recent version of WordPress (currently 4.1.1) and a reasonably up-to-date version of PHP for security, functionality, and website performance. (Not only are the newer versions more secure, but they are faster, so its a double win.) We recommend PHP 5.4 or higher. Also, see PHP Unsupported Branches for more info.
  • Fixed XHTML validation error in the hidden input fields on the forms.
  • Internationalized the formatting of numbers used throughout the plugin so users in different countries will see numbers formatted according to their local customs. This will show in the blocked spam stats on the dashboard, spam counter widgets, and in the blocked comments log.
  • Updated the anti-spam filters.

1.8.1

released 03/11/15

  • Updated the French (fr_FR) translation.
  • Improved some of the filters in the anti-spam algorithm.
  • Updated the anti-spam filters.

1.8

released 03/09/15

  • Made some improvements to the anti-spam algorithm.
  • Made a number of various code and performance improvements.
  • Improved some of the error messages.
  • Fixed a couple bugs introduced in 1.7.9, including a bug in the contact form that incorrectly detected spam servers, and a compatibility issue with the new registration antispam feature and certain multisite configurations. This feature was rolled back while we look into the compatibility issues.
  • Made a few improvements to the blocked comment logging functionality.
  • Updated the anti-spam filters.

Changelog

For a complete list of changes to the plugin, view the Version History/Changelog.

Requires: 4.0 or higher
Compatible up to: 4.5.3
Last Updated: 2 weeks ago
Active Installs: 100,000+

Ratings

4.8 out of 5 stars

Support

16 of 16 support threads in the last two months have been marked resolved.

Got something to say? Need help?

Compatibility

+
=
Works!

6 people say it works.
0 people say it's broken.

100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,4,4 100,2,2 100,3,3 100,1,1 100,1,1 100,2,2 100,2,2 100,2,2 100,2,2 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,4,4 100,2,2 100,2,2 100,1,1 100,1,1 100,2,2 100,2,2 100,2,2 100,2,2 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,4,4 100,2,2 100,2,2 100,1,1 100,1,1 100,2,2 100,2,2 100,2,2 100,2,2 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,4,4 100,2,2 100,2,2 100,1,1 100,1,1 100,2,2 100,2,2 100,2,2 100,2,2 100,1,1 100,1,1
100,1,1 50,2,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,4,4 100,2,2 100,2,2 100,2,2 100,1,1 100,2,2 100,2,2 100,3,3 100,2,2 100,1,1 100,1,1 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,2,2 100,1,1 100,1,1 100,1,1 100,2,2 100,1,1 100,1,1 100,1,1 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 50,2,1 100,1,1 100,1,1 67,3,2 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,4,4 100,2,2 100,2,2 100,2,2 100,1,1 100,2,2 100,2,2 100,1,1 100,2,2 100,1,1 100,1,1 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1
100,3,3 100,1,1 100,1,1 100,1,1 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,4,4 100,2,2 100,2,2 100,2,2 100,1,1 100,2,2 100,2,2 100,2,2 100,2,2 100,1,1 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,1,1 100,1,1 100,2,2 100,1,1 100,1,1 100,1,1 100,2,2 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,4,4 100,2,2 100,2,2 100,2,2 100,1,1 100,2,2 100,2,2 100,3,3 100,2,2 100,1,1 100,2,2 100,2,2 100,2,2 100,2,2 100,3,3 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,2,2 100,2,2
100,2,2 100,2,2 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,2,2 100,2,2 100,2,2 100,2,2 100,2,2 100,1,1
100,2,2 100,2,2 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,1,1 100,1,1 100,1,1 100,1,1
100,4,4 100,2,2 100,1,1 100,1,1 100,3,3 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,1,1 100,4,4 100,1,1 100,4,4
100,4,4 100,4,4 100,4,4 100,4,4 100,5,5 100,4,4 100,4,4 100,4,4 100,4,4
100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4
100,1,1 100,4,4 100,4,4
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,2,2 100,2,2 100,3,3 100,3,3 100,2,2 100,1,1 100,1,1 100,1,1 50,2,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,4,4 100,4,4 100,4,4 100,4,4 100,1,1 100,2,2 100,2,2 100,4,4 100,2,2 100,2,2 100,3,3 100,2,2 100,2,2 100,2,2 100,4,4 100,2,2 100,2,2 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,1,1 100,2,2 100,4,4 100,1,1 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,2,2 100,5,5 100,4,4
100,1,1 100,3,3 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,4,4 100,4,4 100,4,4 100,4,4 100,1,1 100,2,2 100,2,2 100,4,4 100,3,3 100,2,2 100,3,3 100,2,2 100,2,2 100,2,2 100,4,4 100,2,2 100,2,2 100,4,4 100,4,4 100,4,4 100,4,4 100,1,1 100,1,1 100,1,1 100,3,3 100,2,2 100,1,1 100,1,1 100,2,2 100,2,2 100,2,2 100,2,2 100,1,1 100,2,2 100,1,1 100,1,1 100,3,3 100,4,4 100,4,4 100,1,1 100,1,1 100,3,3 100,1,1 100,3,3 100,1,1 100,1,1 100,2,2
100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4
100,2,2 100,5,5 100,4,4 100,1,1
100,4,4 100,4,4 100,4,4 100,4,4 100,1,1 100,1,1 100,2,2 100,1,1 100,1,1 100,2,2 100,1,1 100,1,1 100,1,1 100,2,2 100,1,1 100,1,1 100,4,4 100,4,4 100,4,4 100,1,1 100,1,1 100,1,1
100,4,4 100,4,4 100,4,4 100,4,4 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1 100,2,2 100,1,1 100,1,1 100,1,1 100,4,4 100,1,1 100,4,4 100,1,1 100,1,1 100,4,4 100,2,2 100,4,4 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,4,4 100,4,4 100,4,4 100,3,3 100,2,2 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,1,1 100,4,4 100,3,3 100,3,3 100,4,4 100,1,1 100,1,1 100,1,1
100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,2,2 100,2,2 100,4,4 100,2,2 100,1,1 100,1,1
100,4,4 100,4,4 100,4,4 100,4,4 100,5,5 100,4,4 100,4,4 100,4,4 100,4,4 100,1,1 100,1,1 100,1,1
100,4,4 100,5,5 100,4,4 100,4,4 100,4,4 100,4,4 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,4,4 100,4,4 100,1,1 100,3,3 100,4,4 100,4,4
100,4,4 100,1,1 100,1,1
100,1,1 100,1,1 100,2,2 100,1,1 100,2,2 100,1,1 100,2,2 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,4,4 83,6,5 100,4,4 100,4,4 100,1,1 100,2,2 100,2,2 100,4,4 100,2,2 100,2,2 100,3,3 100,2,2 100,2,2 100,2,2 100,4,4 100,2,2 100,2,2 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,5,5 100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,4,4 100,4,4 100,4,4 100,3,3 100,3,3 100,4,4 100,3,3 100,4,4 100,4,4 100,4,4 100,4,4 100,5,5 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,2,2 100,5,5 100,4,4 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5
100,2,2 100,6,6 100,4,4 100,2,2 100,2,2 100,2,2 100,4,4 100,2,2 100,3,3 100,4,4 100,2,2 100,2,2 100,2,2 100,5,5 100,2,2 100,2,2 100,4,4 100,4,4 100,4,4 100,4,4 100,2,2 100,1,1 100,1,1 100,2,2 100,2,2 100,2,2 100,1,1 100,1,1 100,2,2 100,1,1 100,2,2 100,1,1 100,2,2 100,4,4 100,1,1 100,1,1 100,1,1 100,1,1 100,2,2 100,4,4 100,4,4 100,3,3 100,4,4 100,4,4 100,3,3 100,3,3 100,3,3 100,1,1 100,1,1
100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4
100,2,2 100,5,5 100,4,4 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5
100,5,5
100,2,2 100,4,4 100,4,4 100,4,4 100,4,4 100,2,2 100,1,1 100,1,1 100,1,1 100,4,4 100,1,1 100,1,1 100,1,1 100,1,1 100,2,2 100,1,1 100,2,2 100,4,4 100,1,1 100,1,1 100,3,3 100,4,4 100,4,4 100,3,3 100,4,4 100,4,4 100,4,4 100,3,3 100,3,3
100,1,1 100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,1,1 100,1,1 100,2,2 100,1,1 100,3,3 100,2,2 100,1,1 100,2,2 100,3,3 100,1,1 100,4,4 100,4,4 100,1,1 100,1,1 100,3,3 100,4,4 100,4,4 100,2,2 100,4,4 100,4,4 100,4,4 100,3,3 100,3,3
100,1,1 100,4,4 100,4,4 100,4,4 100,4,4 100,2,2 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,1,1 100,4,4 100,3,3 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,3,3 100,3,3
100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,3,3
100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,3,3
100,4,4 100,6,6 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,3,3
100,4,4 100,4,4 100,4,4 100,3,3 100,3,3 100,4,4 100,4,4
100,4,4 100,2,2
100,1,1 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,7,7 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,3,3 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,2,2 100,5,5 100,4,4 100,5,5 100,5,5 100,5,5 100,5,5 100,6,6 100,5,5
100,4,4 100,5,5 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,8,8 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,3,3 100,4,4 100,2,2 100,1,1 100,1,1
100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,5,5 80,5,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,5,5 100,4,4 100,4,4 100,5,5 100,4,4 100,4,4 100,5,5 100,5,5 100,4,4 100,4,4 100,4,4 100,4,4 100,5,5 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,3,3 100,4,4 100,1,1
100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,3,3 100,4,4
100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,3,3 100,2,2 100,4,4 100,1,1
100,4,4 100,4,4 100,4,4 100,3,3 100,4,4 100,4,4 100,4,4 100,2,2
100,4,4 100,1,1 100,1,1
100,4,4 100,4,4 100,4,4 100,5,5 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4
100,2,2 100,5,5 100,4,4 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5
100,5,5
100,1,1 100,4,4 100,4,4 100,4,4 100,5,5 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,2,2 100,5,5 100,4,4 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5
100,4,4 100,5,5 100,7,7 100,6,6 100,6,6 100,5,5 100,4,4 100,4,4 100,4,4 100,4,4 100,1,1 100,3,3 100,4,4 100,2,2 100,1,1 100,1,1 100,3,3 100,4,4 100,4,4 100,2,2 100,5,5 100,3,3 100,3,3 100,2,2
100,4,4 100,4,4 100,1,1 100,1,1 100,1,1 100,3,3 100,4,4 100,2,2 100,1,1 100,1,1 100,3,3 100,4,4 100,4,4 100,2,2 100,5,5 100,4,4 100,3,3 100,2,2 100,1,1
100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,2,2 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5
100,5,5
100,4,4 100,7,7 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,3,3 100,5,5 100,4,4 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5
100,1,1 80,5,4 100,4,4 100,4,4 100,4,4 100,5,5 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,4,4 100,2,2 100,5,5 100,4,4 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5
100,2,2 100,4,4 80,5,4 100,4,4 100,8,8 100,5,5 100,5,5 100,4,4 100,4,4 100,6,6 100,4,4 100,5,5 100,5,5 100,4,4 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5
100,4,4 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5
100,5,5
83,6,5 100,5,5 100,4,4 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5
100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5
100,2,2 100,7,7 83,6,5 100,5,5 100,6,6 100,5,5 100,5,5 100,5,5 100,5,5 100,5,5
100,6,6 100,6,6